【SSM-SpringMVC框架】SpringMVC入门小程序
1.需求: 商品列表的查询。 2.配置前端控制器: 在web.xml中配置前端控制器。 springmvcorg.springframework.web.servlet.DispatcherServlet<!-- contextConfigLocation配置springmvc的加载文件(配置处理器映射器,适配
1.需求:
商品列表的查询。
2.配置前端控制器:
在web.xml中配置前端控制器。
<!-- springmvc的前端控制器 -->
<servlet>
<servlet-name>springmvc</servlet-name>
<!-- 手动加载DispatcherServlet的源代码 -->
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!-- contextConfigLocation配置springmvc的加载文件(配置处理器映射器,适配器)
如果不配置contextConfigLocation,默认加载的是/WEB-INF/servlet名称-servlet.xml(springmvc-servlet.xml) -->
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springmvc_one.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<!-- 1 *.action,访问.action结尾由DispatcherServlet进行解析(不会导致静态资源 jpg,js,css被拦截)
2 / ,所有访问的地址由DispatcherServlet进行解析,对于静态的文件需要配置不让DispatcherServlet解析
此种方式可以实现RESULTfull风格的url(会导致静态资源被拦截,需要特殊处理)
3 /* ,此证方式不正确 (因为请求到handler时会拦截,在从handler请求到jsp时也会拦截,造成映射不成功。)-->
<url-pattern>*.action</url-pattern>
</servlet-mapping>
load-on-startup:表示servlet随服务启动。
url-pattern:表示*.action的请求交给dispatcherServlet处理。
contextConfigLocation:指定springmvc的加载位置,不指定则默认加载 /WEB-INF/servlet名称-servlet.xml(springmvc-servlet.xml) 。
3.配置处理器适配器:
在springmvc.xml中配置处理器适配器。
<bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>
SimpleControllerHandlerAdapter:简单控制器处理器适配器,此适配器能执行实现了controller接口的Hanler。所有实现了org.springframework.web.servlet.mvc.Controller接口的Bean作为springmvc的后端控制器。
4.开发Handler:
需要实现Controller接口才能由org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter适配器去执行。
public class ItemsController1 implements Controller {
@Override
public ModelAndView handleRequest(HttpServletRequest request,
HttpServletResponse response) throws Exception {
//调用service查找 数据库,查询商品列表,这里使用静态数据模拟
List<Items> itemsList = new ArrayList<Items>();
//向list中填充静态数据
Items items_1 = new Items();
items_1.setName("联想笔记本");
items_1.setPrice(6000f);
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 modelAndView = new ModelAndView();
//相当 于request的setAttribut,在jsp页面中通过itemsList取数据
modelAndView.addObject("itemsList", itemsList);
//指定视图
modelAndView.setViewName("/WEB-INF/jsp/items/itemsList.jsp");
return modelAndView;
}
}
5.配置处理器映射器:
在springmvc.xml中配置:
<!-- 处理器映射器 -->
<!-- 根据bean的name进行查找Handler 将action的url配置在bean的name中 -->
<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping" />
BeanNameUrlHandlerMapping:表示将定义的Bean的name作为作为请求的url,需要将编写的handler在spring容器中配置,且指定bean的name为请求路径,且以.action为结尾。
6.配置处理器:
在springmvc.xml中配置:
<!-- controller配置 -->
<bean name="/items1.action" id="itemList1" class="cn.itcast.springmvc.controller.first.ItemList1"/>
name="/items1.action",前面配置的处理器映射器是BeanNameUrlHandlerMapping,如果请求路径为“上下文/items1.action”,那么将会成功映射到ItemList1控制器。
7.配置视图解析器:
<!-- 视图解析器 解析jsp视图的解析器,默认使用jstl-->
<!-- ViewResolver -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
<property name="prefix" value="/WEB-INF/jsp/"/>
<property name="suffix" value=".jsp"/>
</bean>
InternalResourceViewResolver:支持jsp视图的解析器。
viewClass:JstlView,支持jsp模板页使用jstl标签库。所以classpath中必须包含jstl的包。
prefix,suffix:表示查找视图页面的前缀和后缀。最终视图的地址为:前缀+逻辑视图名+后缀。逻辑视图名在Handler中的返回的ModelAndView中指定。
8.视图的开发:
<body>
商品列表:
<table width="100%" border=1>
<tr>
<td>商品名称</td>
<td>商品价格</td>
<td>商品描述</td>
</tr>
<c:forEach items="${itemsList }" var="item">
<tr>
<td>${item.name }</td>
<td>${item.price }</td>
<td>${item.detail }</td>
</tr>
</c:forEach>
</table>
</body>
更多推荐
所有评论(0)