在web.xml中配置前端控制器
<!--配置前端控制器-->
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!--contextConfigLocation配置springmvc加载的配置文件(配置处理器映射器,适配器等等)
如果不配置contextConfigLocation 默认加载的是/WEB-INF/servlet名称-servlrt.xml(springmvc-servlet.xml)-->
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springmvc.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<!--
第一种:*.action 访问以.action结尾由DispatcherServlet进行解析
第二种:/,所有访问的地址都由DispatcherServlet进行解析
对于静态文件的配置不让DispatcherServlet进行解析,使用此种方式可实现Restful配置
第三种:/*,这样配置不对,使用这种配置最终要转发到一个jsp页面,
仍然会由DispatcherServlet进行解析,不能根据jsp页面找到Handler,报错。
-->
<url-pattern>/</url-pattern>
</servlet-mapping>
在springmvc.xml中需要配置 处理器映射器,处理器适配器,视图解析器
//非注解配置
<!--springmvc-->
<!--配置Handler 为了在spring中加载-->
<bean id="ItemsController" name="/queryItems.action" class="com.evergrande.hdtms.web.ItemsController"></bean>
<!--非注解处理器映射器-->
<!--将Bean的name作为URL进行查找,需要在配置Handler时就指定BeanName(也就是URL)-->
<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>
<!--简单URL映射-->
<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="mappings">
<props>
<!--key中填写url 标签之间填写controller的id-->
<prop key="/items1.action">ItemsController</prop>
<prop key="/items2.action">ItemsController</prop>
</props>
</property>
</bean>
<!--多个映射器可以并存,前端控制器判断URL能让
哪些映射器映射,就让正确的映射器处理-->
<!--非注解处理器适配器
所有的处理器适配器都实现了HandlerAdapter接口,通过查看源代码发现-->
<!--SimpleControllerHandlerAdapter能够执行实现Controller接口的Handler
而Controller接口中就是要实现一个方法,根据request和response返回ModelAndView-->
<bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>
<!--要求Handler实现HttpRequest接口-->
<bean class="org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter"/>
//实现httprequestHandler接口
@Override
public void handleRequest(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws ServletException, IOException {
List<Integer> list = new ArrayList();
//设置模型数据
httpServletRequest.setAttribute("list",list);
//设置转发的视图
httpServletRequest.getRequestDispatcher("itemslist.jsp").forward(httpServletRequest,httpServletResponse);
//使用此方法可以通过修改response,设置响应的数据格式,比如响应json数据格式
httpServletResponse.setCharacterEncoding("utf-8");
httpServletResponse.setContentType("application/json;charset=utf-8");
httpServletResponse.getWriter().write("json串");
}
// 实现Controller接口
// @Override
// public ModelAndView handleRequest(HttpServletRequest httpServletRequest,HttpServletResponse httpServletResponse) throws Exception {
// //调用service查询数据库,查询商品列表假设是list
// List<Integer> list = new ArrayList();
// //返回ModelAndView
// ModelAndView modelAndView = new ModelAndView();
// modelAndView.addObject("list",list);
// //指定视图
// modelAndView.setViewName("sucsess");
//
// return modelAndView;
}
//注解配置
<!--在spring3.1之前使用org.springframework.web.servlet.mvc.
DefaultAnnotationHandlerMapping注解的处理器映射器
在spring3.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.
RequestMappingHandlerAdapter注解适配器
-->
<!--注解映射器-->
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"/>
<!--注解适配器-->
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"/>
<!--使用mvc:annotation-driven可以代替注解映射器和适配器的配置
这个标签还默认加载了很多的参数绑定方法,例如json转换解析器
实际开发使用此种方法-->
<mvc:annotation-driven></mvc:annotation-driven>
<!--对于注解的Handler可以单个配置也可以组件扫描-->
<!--<bean name="AnnotationController" class="com.evergrande.hdtms.web.AnnotationController"/>-->
//或者
<context:component-scan base-package="com.evergrande.hdtms.web"/>
<!--注意 注解的映射器和适配器必须配对使用-->
<!--视图解析器
配置解析jsp的视图,解析jsp,默认使用jstl标签-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<!--视图解析器配置前缀和后缀-->
<property name="prefix" value="/WEB-INF/jsp"/>
<property name="suffix" value=".jsp"/>
</bean>
//注解开发Handler
//Controller标识它是一个控制器
@Controller
public class AnnotationController {
//商品查询列表
//@RequestMapping实现对/queryItems和queryitem方法进行映射一个方法对应一个URL
//建议URL和方法名一样
@RequestMapping("/queryItems")
public ModelAndView queryitems()throws Exception{
List<Integer> list = new ArrayList();
//返回ModelAndView
ModelAndView modelAndView = new ModelAndView();
modelAndView.addObject("list",list);
//指定视图
modelAndView.setViewName("sucsess");
return modelAndView;
}