zoukankan      html  css  js  c++  java
  • spring web mvc第一天

        
      spring  web mvc 感觉就是高大上啊!啥都是配置文件就能够了。所以第一步就是弄清楚配置文件使用和总体框架的流程!

          Spring web mvc最重要的当然是Controller,也就是首先要明确的就是Dispatch,它将用户的请求转化成Controller处理的对象。在

    在Spring的Web MVC中,担任前段控制器角色的是org.springframework.web.servlet.DispatcherServlet.DispatcherServlet负责将客户的请求分配给控制对象。所以使用Spring Web MVC的第一步就是在Web.xml中定义DispatcherServlet.


    <span style="font-family:Courier New;font-size:14px;"><servlet>
            <servlet-name>dispatcherServlet</servlet-name>
            <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
     <init-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>/WEB-INF/mvc-config.xml</param-value>
     </init-param>
     <load-on-startup>1</load-on-startup>
        </servlet>
    
        <servlet-mapping>
            <servlet-name>dispatcherServlet</servlet-name>
            <url-pattern>*.do</url-pattern>
        </servlet-mapping></span>

    DispatcherServlet 实例是 dispatcherServlet。从url-pattern能够知道它拦截.do的随意请求。“contextConfigLocation”初始參数用来设定Bean定义文件的位置与名称。假设不设置“contextConfigLocation”初始參数,则DispatcherServlet默认会使用Servlet的名称为前置,读取“Servlet名称-servlet.xml”作为其Bean定义文件。在上面的设定中则会读取mvc-config.xml当然你也能够定义多个Bean定义文件的来源.

    <span style="font-family:Courier New;"><servlet>
            <servlet-name>dispatcherServlet</servlet-name>
            <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
     <init-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>/WEB-INF/mvc-config.xml,/WEB-INF/other-servlet.xml</param-value>
     </init-param>
     <load-on-startup>1</load-on-startup>
        </servlet>
    
        <servlet-mapping>
            <servlet-name>dispatcherServlet</servlet-name>
            <url-pattern>*.do</url-pattern>
        </servlet-mapping></span>

          DispatcherServlet负责分配请求至控制对象(Controller),在Spring Web MVC中,控制对象要实现org.springframework.web.servlet.mvc.Controller接口,Controller接口有一个不许实现的handleRequest()

    <span style="font-family:Courier New;font-size:14px;">public interface Controller {
     ModelAndView handleRequest(HttpServletRequest request, 
       HttpServletResponse response) throws Exception; 
    }</span>

           当Controller接收到DispatcherServlet分配的请求时,会运行handleRequest()方法来处理请求,处理完毕后回传一个org.springframework.web.servlet.ModelAndView的实例.ModelAndView包含了要呈如今View层的Model数据,以及其它View层的相关信息。

    <span style="font-family:Courier New;font-size:14px;">public class HellowController implements Controller {
     private String viewPage。
     public void setViewPage(String viewPage) {
      this.viewPage = viewPage;
     }
     
     public ModelAndView handleRequest(HttpServletRequest request,
       HttpServletResponse response) throws Exception {
      
     String user = request.getparameter("user");
     retrun new ModelAndView(viewPage, "user", user);
     }
    }</span>


    在这个Controller中。取得来自使用者的user请求參数。并设定在ModelAndView的实例中,在这个样例中,高见ModelAndView的第一个自变量为要呈现的目标网页(或资源)路径,第二个自变量是设定用来取得Model对象的键(key),而第三个自变量是个View层呈现数据的Model对象我们能够在xml文件设定Controller请求处理完成之后,所要呈现数据的网页路径,来看一下Bean定义文件的内容,根据web.xml中对dispatcherServlet的初始參数设定为mvc-config.xml,假设没有初始參数的话,默认会调用dispatcherServlet-servlet.xml文件

    <span style="font-family:Microsoft YaHei;font-size:14px;">  </span><span style="font-family:Courier New;font-size:14px;"><bean id="viewResolver"  
    
    class="org.springframework.web.servlet.view.InternalResourceViewResolver">
            <property name="prefix" value="/WEB-INF/jsp/"/>
            <property name="suffix" value=".jsp"/>
       </bean>
       
       <bean name="/hello.do"
      class="包路径.HellowController">
     <property name="viewPage">
      <value>hello</vlaue>
     </property>
       </bean></span>

        实际上DispatcherServlet必须依据一个HandlerMapping对象,决定请求由哪一个Controller来处理,DispatcherServlet默认使用org.springframework.web.servlet.handler.BeanNameUrlHandlerMappin,也就是依据Bean在定义时的"name"属性及使用者请求的URL,决定使用哪一个Controller实例,比如上面的样例。请求/.../hello.do时,DispatcherServlet依据"hello.do",决定要使用"name"为"hello.do"的Bean实例。所以依据上面的设定。就会将请求交给HelloController的实例来处理。

    在Controller返回ModelAndView后,DispatcherServlet会交由ViewResolver对象来作View层的相关解析。因而你须要设置一个ViewResolver实例,在这个样例中将一jsp作为View层技术,所以使用org.springframework.web.servlet.view.InternalResourceViewResolve。     InternalResourceViewResolver须要设置"viewClass",默认是org.springframework.web.servlet.InternalResourceView,这个类支持Servlet技术的相关资源。InternalResourceViewResolver的"prefix"和"suffix"属性会与ModelAndView返回的路径信息借个。比如路径信息返回为"hello"字符串,则与以上的样例设定结合。实际路径就是/WEB-INF/jsp/hello.jsp。







  • 相关阅读:
    写一个输入两位数,实现加减乘除的程序。并和同学比较一下各种的功能、实现方法的异同等等。写出自己程序存在的缺陷,以及比别人做的好的地方。
    请下载铁路12306的手机APP,通过使用这款软件,写一篇软件的评测(300字以上),评测内容可以是这个软件的优势,或是你觉得特别好的地方,软件的缺陷、软件可以改进的地方等等
    个人简介
    (1)把一个英语句子中的单词次序颠倒后输出。例如输入“how are you”,输出“you are how”; (2)编写单元测试进行测试; (3)用ElcEmma查看代码覆盖率,要求覆盖率达到100%。
    2、学习单元测试和代码覆盖率工具的使用 (1)写一个程序,用于分析一个字符串中各个单词出现的频率,并将单词和它出现的频率输出显示。(单词之间用空格隔开,如“Hello World My First Unit Test”); (2)编写单元测试进行测试; (3)用ElcEmma查看代码覆盖率,要求覆盖率达到100%。
    实验5
    实验4
    实验3
    实验2
    个人简介
  • 原文地址:https://www.cnblogs.com/lytwajue/p/7053514.html
Copyright © 2011-2022 走看看