配置前端控制器 在web.xml中配置前端控制器 <servlet> <servlet-name>springmvc</servlet-name> <servlet-class>DispatcherServlet的全限定类名</servlet-class> <!--contextConfigLocation配置springmvc加载的配置文件(配置处理器映射器、适配器等)--> <init-param> <param-name>contextConfigLocation</param-name> <param-value>配置文件的路径(如classpath:springmvc.xml)</param-value> </init-param> </servlet>
<servlet-mapping> <servlet-name>上面servlet的name</servlet-name>
<!-- 第一种:*.action,以.action结尾的访问由DistatcherServlet进行解析 第二种:/,所有访问的地址都由DistatcherServlet进行解析,对于静态文件的解析需要配置不让DistatcherServlet进行解析 使用此种方案可以实现RESTful风格的url 第三种:/*,这样配置不对,使用这种配置,最重要转发到一个jsp页面时,仍然会由DistatcherServlet解析jsp地址,不能根据jsp页面找到handler,会报错。 --> <url-pattern>三种方案</url-pattern> </servlet-mapping>
配置处理器映射器 在classpath下的springmvc.xml中(servlet中配置的路径)配置处理器映射器。 就是将Bean的name作为url进行查找,需要在配置Handler时指定beanname(就是url) 配置Handler: <bean name="/queryItems.action" class="ItemsController_01"/> 配置处理器映射器: <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>
配置处理器适配器 在classpath下的springmvc.xml中(servlet中配置的路径)配置处理器映射器。 所有的处理器适配器都实现HandlerAdpater接口,配置处理器适配器就是配置一个Bean <bean class="SimpleControllerHandlerAdapter"/> 通过查看源代码: public class SimpleControllerHandlerAdapter implements HandlerAdapter{ public boolean supports(Object handler){ return (handler instanceof Controller); } ... } 此适配器可以执行实现Controller接口的Handler.
编写Handler: 需要实现controller接口,才能由SimpleControllerHandlerAdapter适配器执行。 public class ItemController_01 implements Controller{ @Override public ModelAndView handleRequest(HttpServlet request, HttpServletResponse response) throws Exception{ //从数据库获取数据 itemsList = 从数据库获得的数据; //返回ModelAndView ModelAndView modelAndView = ModelAndView(); //相当于request 的setAttribute,在jsp页面中通过itemsList取数据 modelAndView.addObject("itemsList", itemsList); //指定视图 modelAndView.setViewName("/WEB-INF/jsp/itemsList.jsp"); return modelAndView; } }
编写View: 就是编写jsp页面(前端页面)。
配置视图解析器 在classpath下的springmvc.xml中(servlet中配置的路径)配置处理器映射器。 需要配置解析jsp的视图解析器。 <!--解析jsp视图,默认使用jstl标签,classpath:需要有jstl的包--> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"/>