zoukankan      html  css  js  c++  java
  • SpringMVC(一)

    主要进行了如下配置:

    1、 前端控制器DispatcherServlet;

    2、 HandlerMapping

    3、 HandlerAdapter

    4、 ViewResolver

    5、 处理器/页面控制器

    6、 视图

     

    Spring Web MVC处理请求的流程

    具体执行步骤如下:

    1、  首先用户发送请求————>前端控制器,前端控制器根据请求信息(如URL)来决定选择哪一个页面控制器进行处理并把请求委托给它,即以前的控制器的控制逻辑部分;图2-1中的1、2步骤;

    2、  页面控制器接收到请求后,进行功能处理,首先需要收集和绑定请求参数到一个对象,这个对象在Spring Web MVC中叫命令对象,并进行验证,然后将命令对象委托给业务对象进行处理;处理完毕后返回一个ModelAndView(模型数据和逻辑视图名);图2-1中的3、4、5步骤;

    3、  前端控制器收回控制权,然后根据返回的逻辑视图名,选择相应的视图进行渲染,并把模型数据传入以便视图渲染;图2-1中的步骤6、7;

    4、  前端控制器再次收回控制权,将响应返回给用户,图2-1中的步骤8;至此整个结束。

     

    例子

     

    1、配置web.xml

    <?xml version="1.0"encoding="UTF-8"?>  
    <web-appxmlns:xsiweb-appxmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns="http://java.sun.com/xml/ns/javaee"xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaeehttp://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"id="WebApp_ID" version="2.5">  
             <servlet>  
                       <servlet-name>hello</servlet-name>  
                       <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>  
                       <load-on-startup>1</load-on-startup>  
             </servlet>  
             <servlet-mapping>  
                       <servlet-name>hello</servlet-name>  
                       <url-pattern>/</url-pattern>  
             </servlet-mapping>  
    <!-- 下面这个配置,解决post中文乱码问题 --> <filter> <filter-name>CharacterFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> </filter> <filter-mapping> <filter-name>CharacterFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> </web-app>

    load-on-startup:表示启动容器时初始化该Servlet;

    url-pattern:表示哪些请求交给Spring Web MVC处理, “/” 是用来定义默认servlet映射的。也可以如“*.html”表示拦截所有以html为扩展名的请求。

     

    2、配置Hello-servlet.xml管理Spring的配置

    (名称必须与web.xm文件中的servlet-name相同,放到web-inf下) 

    prefix前缀:处理后转到/WEB-INF/jsp/目录下的jsp页面

    surfix后缀:视图页面是以.jsp结尾的jsp文件

    <?xml version="1.0" encoding="UTF-8"?>  
    <beans xmlns="http://www.springframework.org/schema/beans"   
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
        xmlns:p="http://www.springframework.org/schema/p"   
        xmlns:context="http://www.springframework.org/schema/context"  
        xsi:schemaLocation="  
            http://www.springframework.org/schema/beans   
            http://www.springframework.org/schema/beans/spring-beans-3.0.xsd  
            http://www.springframework.org/schema/context   
            http://www.springframework.org/schema/context/spring-context-3.0.xsd">  
        
        <bean name="welcome.html" class="zttic.itat.controller.WelcomeController"></bean>  
    <bean class="org.springframework.web.servlet.view.InternalResuorceViewResolver" <property name="prefix" value="/WEB-INF/jsp/"/> <property name= "surfix", value=".jsp"/> </bean> </beans>

     <bean name="welcome.html" class="zttic.itat.controller.WelcomeController"></bean> 

    当用户在客户端请求访问welcome.html时,对应的Controller处理器处理这个请求,并转到相应页面

    3、新建一个Controller类:WelcomeController.java

    package zttc.itat.controller;  
    import javax.servlet.http.HttpServletRequest;  
    public class WelcomeController extends AbstractController{  
        @Override  
        protected ModelAndView handleRequestInternal(httpServletRequest request,  
                       httpServletResponse response) throws Exception{  
                System.out.println("welcome");  
                return new ModelAndView("welcome");  
        }  
    } 
    return new ModelAndView("welcome"):就是转到/WEB-INF/jsp/目录下welcome.jsp页面

    4、在WEB-INF目录下新建一个jsp文件夹,在jsp文件夹下新建一个welcome.jsp文件

    <head>  
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">  
    <title></title>  
    </head>  
    <body>  
    <h1>welcome!!</h1>  
    </body> 

     

     

    二、使用注解annotation开发(推荐这种方式)

    1、web.xml

       同上

    2、hello-servlet.xml

    <?xml version="1.0" encoding="UTF-8"?>  
    <beans xmlns="http://www.springframework.org/schema/beans"   
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
        xmlns:p="http://www.springframework.org/schema/p"   
        xmlns:context="http://www.springframework.org/schema/context"  
        xsi:schemaLocation="  
            http://www.springframework.org/schema/beans   
            http://www.springframework.org/schema/beans/spring-beans-3.0.xsd  
            http://www.springframework.org/schema/context   
            http://www.springframework.org/schema/context/spring-context-3.0.xsd">  
    //这两句是打开annotation <context:component-scan base-package="zttc.itat.controller"> <mvc:annotation-driven/> //<bean name="welcome.html" class="zttic.itat.controller.WelcomeController"></bean> <bean class="org.springframework.web.servlet.view.InternalResuorceViewResolver" <property name="prefix" value="/WEB-INF/jsp/"/> <property name= "surfix", value=".jsp"/> </bean> </beans>

     

    3、创建控制器,新建HelloController.java

    在这里完成controller和viewer的映射

    package zttc.itat.controller;  
    import org.springframework.stereotype.Controller;  
    import org.springframework.web.bind.annotation.RequestMapping;  
      
    @Controller  
    public class HelloController{  
        //RequestMapping表示用哪个URL来对应  
        @RequestMapping{{"/hello","/"}}  
        public String hello(){  
               System.out.println("hello");  
               return "hello";  
         }    
    @RequestMapping{{
    "/welcome"}} public String welcome(){ System.out.println("welcome"); return "welcome"; } }

    @Controller:用于标识是处理器类;

    @RequestMapping:请求到处理器功能方法的映射规则;

    4、jsp目录下创建hello.jsp

     

     

     

     

     

  • 相关阅读:
    重点词笔记
    pycharm tips
    标注精简过的问题如何导入问题库
    增加权重
    word2vec训练出来的相似词歧义
    算法测试及对比度进一步增强
    Python 命名笔记
    债务重组的会计处理方法
    实质性方案与综合性方案的区别
    什么叫认定层次
  • 原文地址:https://www.cnblogs.com/Donnnnnn/p/5745775.html
Copyright © 2011-2022 走看看