springMVC2 1入门程序
1入门程序 1.1需求 实现商品列表查询 1.2需要的jar包 使用spring3.2.0(带springwebmvc模块)
1.1前端控制器 在web.xml中配置: <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5"> <display-name>springfirst1110</display-name> <!-- 前端控制器 --> <servlet> <servlet-name>springmvc</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <!-- 加载springmvc配置 --> <init-param> <param-name>contextConfigLocation</param-name> <!-- 配置文件的地址 如果不配置contextConfigLocation, 默认查找的配置文件名称classpath下的:servlet名称+"-serlvet.xml"即:springmvc-serlvet.xml --> <param-value>classpath:springmvc.xml</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>springmvc</servlet-name> <!-- 可以配置/ ,此工程 所有请求全部由springmvc解析,此种方式可以实现 RESTful方式,需要特殊处理对静态文件的解析不能由springmvc解析. 可以配置*.do或*.action,所有请求的url扩展名为.do或.action由springmvc解析,此种方法常用. 不可以/*,如果配置/*,返回jsp也由springmvc解析,这是不对的。 --> <url-pattern>*.action</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>index.html</welcome-file> <welcome-file>index.htm</welcome-file> <welcome-file>index.jsp</welcome-file> <welcome-file>default.html</welcome-file> <welcome-file>default.htm</welcome-file> <welcome-file>default.jsp</welcome-file> </welcome-file-list> </web-app> 1.2Springmvc.xml类似于spring的配置文件 在springmvc.xml中配置springmvc架构三大组件(处理器映射器HandlerMapping 、适配器HandlerAdapter 、视图解析器ViewResolver ) 1.3工程结构
1.1 处理器映射器 在springmvc.xml中配置: BeanNameUrlHandlerMapping: 根据请求url(XXXX.action)匹配spring容器bean的 name 找到对应的bean(程序编写的Handler) <!-- 根据bean的name进行查找Handler 将action的url配置在bean的name中 --> <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping" /> 所有处理器映射器都实现HandlerMapping接口。 1.2处理器适配器 在springmvc.xml配置: <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/> 所有的适配器都是实现了HandlerAdapter接口。 程序编写Handler(类似于action)根据适配器的要求编写。 SimpleControllerHandlerAdapter适配器要求: 通过supports方法知道Handler必须要实现哪个接口:
1.1Handler编写 需要实现Controller接口:
ItemController1: public abstract class ItemController1 implements Controller { @Override public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception { // 使用静态数据将商品信息列表显示在jsp页面 // 商品列表 List<Items> itemsList = new ArrayList<Items>(); Items items_1 = new Items(); items_1.setName("联想笔记本"); items_1.setPrice(6000f); items_1.setCreatetime(new Date()); items_1.setDetail("ThinkPad T430 联想笔记本电脑!"); Items items_2 = new Items(); items_2.setName("苹果手机"); items_2.setPrice(5000f); items_2.setDetail("iphone6苹果手机!"); itemsList.add(items_1); itemsList.add(items_2); ModelAndView modelAndView = new ModelAndView(); //将数据填充到request // request.setAttribute("itemsList", itemsList); modelAndView.addObject("itemsList", itemsList); //指定转发的jsp页面 modelAndView.setViewName("/WEB-INF/jsp/itemsList.jsp"); return modelAndView; } } 1.1配置Handler 在springmvc.xml配置Handler由spring管理Handler。 <!-- 配置Handler 由于使用了BeanNameUrlHandlerMapping处理映射器,name配置为url --> <bean id="itemController1" name="/itemList.action" class="cn.itcast.springmvc.first.ItemController1" /> 1.2配置视图解析器 配置视图解析,能够解析jsp视图: <!-- 配置视图解析器 ,要求将jstl的包加到classpath --> <!-- ViewResolver --> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/jsp/" /> <property name="suffix" value=".jsp" /> </bean> 1.3工程部署 访问:http://localhost:8080/springfrist1110/itemList.action
页面: <c:forEach items="${itemsList }" var="item"> <tr> <td>${item.name }</td> <td>${item.price }</td> <td><fmt:formatDate value="${item.createtime}" pattern="yyyy-MM-dd HH-mm-ss"/></td> <td>${item.detail }</td> <td><a href="${pageContext.request.contextPath }/item/editItem.action?id=${item.id}">修改</a></td> </tr> </c:forEach>