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>



Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐