一 注解的处理器映射器
在spring 3.1 之前使用
org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping
在spring 3.1 之后使用
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping
二 注解的适配器
在spring3.1 之前使用
org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter
在spring3.1 之后使用
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter
三 实现
1 web.xml
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd" >
<web-app>
<display-name>Archetype Created Web Application</display-name>
<servlet>
<!--Spring MVC前端控制器-->
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!--contextConfigLocation配置springmvc加载的配置文件(配置处理器映射器、适配器等等)
若不配置,默认加载WEB-INF/servlet名称-servlet(springmvc-servlet.xml)-->
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:SpringMVC/Springmvc.xml</param-value>
</init-param>
</servlet>
<!--第一种:*.action,访问以.action结尾,由DispatcherServlet进行解析
第二种:/,所有访问的地址由DispatcherServlet进行解析,对静态文件的解析需要配置不让DispatcherServlet进行解析,
使用此种方式和实现RESTful风格的url
第三种:/*,这样配置不对,使用这种配置,最终要转发到一个jsp页面时,仍然会由DispatcherServlet解析jsp地址, 不能根据jsp页面找到handler,会报错 -->
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>*.action</url-pattern>
</servlet-mapping>
</web-app>
2 SpringMVC.xml
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:mvc="http://www.springframework.org/schema/tool"
xmlns:mac="http://www.springframework.org/schema/cache"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
http://www.springframework.org/schema/tool
http://www.springframework.org/schema/tool/spring-tool.xsd
http://www.springframework.org/schema/cache
http://www.springframework.org/schema/cache/spring-cache.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
<!--注解映射器-->
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping" />
<!--注解适配器-->
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter" />
<!--对于单个注解的Handler可以单个配置,实际开发过程中使用扫描
<bean class="controller.ItemsController3"/>-->
<context:component-scan base-package="controller"></context:component-scan>
<!--实际开发使用<mac:annotation-driven>,代替映射器和适配器的配置-->
<!--<mac:annotation-driven></mac:annotation-driven>-->
<!-- 视图解析器 解析jsp,默认使用jstl,classpath下要有jstl的包 -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"/>
</beans>
3 ItemsController3.java
package controller;
import entity.ItemsBean;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
import java.util.ArrayList;
import java.util.List;
/**
* @author: Y
* @date: 2018/4/22
*/
@Controller
public class ItemsController3 {
/**
* 功能描述: 商品列表查询
*
* @param:
* @return: ModelAndView
* @throws: Exception
*/
@RequestMapping("/queryItems")
public ModelAndView queryItems() throws Exception{
List<ItemsBean> list = new ArrayList<ItemsBean>();
ItemsBean items1 = new ItemsBean();
items1.setName("小米MIX2S");
items1.setPrice(3888);
items1.setDetail("便宜不贵,实惠");
ItemsBean items2 = new ItemsBean();
items2.setName("iphone X");
items2.setPrice(8888);
items2.setDetail("穷人用苹果");
ItemsBean items3 = new ItemsBean();
items3.setName("华为P20");
items3.setPrice(9999);
items3.setDetail("低调奢华");
list.add(items1);
list.add(items2);
list.add(items3);
ModelAndView modelAndView = new ModelAndView();
modelAndView.addObject("items",list);
modelAndView.setViewName("/index.jsp");
return modelAndView;
}
}
注解适配器和映射器
四 前缀和后缀
<!-- 视图解析器 解析jsp,默认使用jstl,classpath下要有jstl的包 -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<!--配置jsp路径的前缀-->
<property name="prefix" value="/"></property>
<!--配置jsp路径的后缀-->
<property name="suffix" value=".jsp"></property>
</bean>
// ModelAndView modelAndView = new ModelAndView();
// modelAndView.addObject("items",list);
// modelAndView.setViewName("index");
// return modelAndView;
网友评论