zoukankan      html  css  js  c++  java
  • SpringMVC_基本配置 --跟海涛学SpringMVC(和自己在项目中的实际使用的对比)

    ☆依赖jar包:

    1、Spring框架jar 包:

    为了简单,将spring-framework-3.1.1.RELEASE-with-docs.zip/dist/下的所有jar包拷贝到项目的WEB-INF/lib目录下;

    2、Spring框架依赖的jar 包:

    需要添加Apache commons logging日志,此处使用的是commons.logging-1.1.1.jar

     

     

    前端控制器的配置

    web.xml 中添加如下配置:

    <servlet>
    <servlet-name>chapter2</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
    <servlet-name>chapter2</servlet-name>
    <url-pattern>/</url-pattern>
    </servlet-mapping>

    自此请求已交给Spring Web MVC框架处理,因此我们需要配置Spring的配置文件,默认DispatcherServlet会加

    载WEB-INF/[DispatcherServlet 的Servlet 名字]-servlet.xml 配置文件。本示例为WEB-INF/chapter2-servlet.xml

    -------------------------------------------------------------------我的配置start-----------------------------------------------------------------------------------------------

    我一般在web.xml里自定义配置文件路径,方便统一管理

      <servlet>
        <servlet-name>spring-dispatcher</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
          <param-name>contextConfigLocation</param-name>
          <param-value></param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
      </servlet>
      
      <servlet-mapping>
        <servlet-name>spring-dispatcher</servlet-name>
        <url-pattern>*.html</url-pattern>
      </servlet-mapping>
      
      <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/classes/spring.xml</param-value>
      </context-param>
      
      <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
      </listener>

    ----------------------------------------我的配置end-------------------------------------------------------------------------

     

    在Spring配置文件中配置HandlerMapping、HandlerAdapter

    具体配置在WEB-INF/ chapter2-servlet.xml文件中 :

    <!-- HandlerMapping -->
    <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>
    <!-- HandlerAdapter -->
    <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>

    BeanNameUrlHandlerMapping表示将请求的URL和Bean名字映射,如URL为“上下文/hello”,则Spring配置文件

    必须有一个名字为“/hello”的Bean,上下文默认忽略。

    SimpleControllerHandlerAdapter表示所有实现了org.springframework.web.servlet.mvc.Controller 接口的Bean 可以作为

    Spring Web MVC中的处理器。如果需要其他类型的处理器可以通过实现HadlerAdapter 来解决。

     

    ------------------------------------------------------------------我的配置start--------------------------------------------------------------------------------------------

    这两个配置我从来没用过,一直用的是自动扫描+注解的方式

    在spring.xml里的配置为:

    <context:annotation-config />
    <context:component-scan base-package="com.test.controllers" />

    在controllers包里,不需要继承任何接口,也不需要遵循任何约定,只要在需要的处理器前面写上@Controller即可.

    AbstractController是一个自定义的基类,所有的controller都继承了它,里面是一些共同方法什么的.
    访问的url为/web/index.html
    @Controller
    @RequestMapping(value="/web")
    public class XxxController extends AbstractController {
        private static final Logger log = LogManager.getLogger(XxxController.class);
        @RequestMapping(value="/index.html", method=RequestMethod.GET)
        public String managerMenu(Model model) {return "tiles.view.index";
        }
    }

    ------------------------------------------------------------------我的配置end---------------------------------------------

    在Spring配置文件中配置ViewResolver

    <!-- 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用于支持ServletJSP视图解析;

    viewClass:JstlView表示JSP模板页面需要使用JSTL标签库,classpath中必须包含jstl的相关jar 包;

    prefix suffix:查找视图页面的前缀和后缀(前缀[逻辑视图名]后缀),比如传进来的逻辑视图名为hello,则该该

    jsp视图页面应该存放在“WEB-INF/jsp/hello.jsp”;

    ------------------------------------------------------------------我的配置start---------------------------------------------

    这个跟我的配置差不多,不过我习惯了用tiles来搭建页面,所以加了一个tiles的配置

      <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
            <property name="order" value="2" />
            <property name="prefix">
                <value>/WEB-INF/views/</value>
            </property>
            <property name="suffix">
                <value>.jsp</value>
            </property>
        </bean>
    
    <!-- Tiles start -->
        <bean id="viewResolver"
            class="org.springframework.web.servlet.view.UrlBasedViewResolver">
            <property name="order" value="1" />
            <property name="viewClass">
                <value>
                    org.springframework.web.servlet.view.tiles3.TilesView
                </value>
            </property>
        </bean>
    
        <bean id="tilesConfigurer"
            class="org.springframework.web.servlet.view.tiles3.TilesConfigurer">
            <property name="definitions">
                <list>
                    <value>/WEB-INF/classes/tilesPublic.xml</value>
                    <value>/WEB-INF/classes/tilesAdmin.xml</value>
                </list>
            </property>
        </bean>
    <!-- Tiles end -->

    ------------------------------------------------------------------我的配置 end---------------------------------------------

    发现可能海涛这个讲解文件太老了,controller的配置和jsp都比自动扫描麻烦很多

    开发处理器/页面控制器

    package cn.javass.chapter2.web.controller;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import org.springframework.web.servlet.ModelAndView;
    import org.springframework.web.servlet.mvc.Controller;
    public class HelloWorldController implements Controller {
    @Override
    public ModelAndView handleRequest(HttpServletRequest req, HttpServletResponse resp) throws
    Exception {
    //1、收集参数、验证参数
    //2、绑定参数到命令对象
    //3、将命令对象传入业务对象进行业务处理
    //4、选择下一个页面
    ModelAndView mv = new ModelAndView();
    //添加模型数据可以是任意的POJO对象
    mv.addObject("message", "Hello World!");
    //设置逻辑视图名,视图解析器会根据该名字解析到具体的视图页面
    mv.setViewName("hello");
    return mv;
    }
    }

    org.springframework.web.servlet.mvc.Controller页面控制器 /处理器必须实现 Controller 接口,注意别

    选错了;后边我们会学习其他的处理器实现方式;

    public ModelAndView handleRequest(HttpServletRequest req, HttpServletResponse resp) 功能处

    理方法,实现相应的功能处理,比如收集参数、验证参数、绑定参数到命令对象、将命令对象传入业务对象进行业务处理、

    最后返回 ModelAndView对象;

    ModelAndView包含了视图要实现的模型数据和逻辑视图名;“ mv.addObject("message" , "Hello World!" );

    ”表示添加模型数据,此处可以是任意 POJO对象;“ mv.setViewName("hello");”表示设置逻辑视图名为“ hello”,

    视图解析器会将其解析为具体的视图,如前边的视图解析器 InternalResourceVi。 wResolver 会将其解析为

    “ WEB-INF/jsp/hello.jsp”。

     

     我们需要 将其添加 到Spring配置文件(WEB-INF/chapter2-servlet.xml) ,让其 接受Spring IoC 容器管 理:

    <!-- 处理器-->

    <bean name ="/hello" class ="cn.javass.chapter2.web.controller.HelloWorldController"/>

    name="/hello"前边配置的 BeanNameUrlHandlerMapping,表示如过请求的 URL 为“上下文 /hello”,则将会

    交给该 Bean进行处理。

     

     

  • 相关阅读:
    课程设计之第二次冲刺----第十天
    课程设计之第二次冲刺----第九天
    课程设计之第二次冲刺----第八天
    课程设计之第二次冲刺----第七天
    课程设计之第二次冲刺----第6天
    课程设计之第二次冲刺----第五天
    课程设计之第二次冲刺----第四天
    课程设计之第二次冲刺----第三天
    课程设计之第二次冲刺----第二天
    第一个sprint与第二个sprint阶段总结
  • 原文地址:https://www.cnblogs.com/lakeslove/p/6339894.html
Copyright © 2011-2022 走看看