• 配置SpringMVC及简单应用


    SpringMVC实现原理(转载)

    在整个spring MVC框架中,DispatcherServlet处于核心位置,它负责协调和组织不同组件完成请求处理并返回响应的工作。具体流程为:

    1)客户端发送http请求,web应用服务器接收到这个请求,如果匹配DispatcherServlet的映射路径(在web.xml中配置),web容器将请求转交给DispatcherServlet处理;

    2)DispatcherServlet根据请求的信息及HandlerMapping的配置找到处理该请求的Controller;

    3)Controller完成业务逻辑处理后,返回一个ModelAndView给DispatcherServlet;

    4)DispatcherServlet借由ViewResolver完成ModelAndView中逻辑视图名到真实视图对象View的解析工作;

    5)DispatcherServlet根据ModelAndView中的数据模型对View对象进行视图渲染,最终客户端得到的响应消息可能是一个普通的html页面,也可能是一个xml或json串,甚至是一张图片或一个PDF文档等不同的媒体形式。

    下载spring框架用包

    访问spring.io,在PROJECTS目录中找到SPRING FARAMWORK,找到下面文字点击链接

    All avaible features and modules are described in the Modules section of the reference documentation. 
    Their maven/gradle coordinates are also described there.

    在里面Distribution Zip Files介绍中可下载所需包。

    http://repo.spring.io/release/org/springframework/spring 

    引包

    将下载后的文件中的libs中的20个包导入项目中,并需要额外引入commons-logging.jar,可在Maven Repository中搜索下载。

    配置MVC核心配置文件

    首先在web.xml中web-app标签下添加如下代码:

    <!-- 配置DispatcherServlet -->                                                        
    <servlet>                                                                           
        <servlet-name>mvc</servlet-name>                                                
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <load-on-startup>1</load-on-startup>                                            
    </servlet>                                                                          
    <servlet-mapping>                                                                   
        <servlet-name>mvc</servlet-name>                                                
        <!-- 所有资源都要经Dispatcher处理 -->                                                    
        <url-pattern>/</url-pattern>                                                    
    </servlet-mapping>                                                                  

    然后在WEB-INF目录下建立核心配置文件,方法如下:

    选中WEB-INF目录,右键New,Other,找到Spring,建立一个Spring BeanConfiguration File文件,注意给文件取名严格遵守[servlet-name]-servlet.xml的方式,此处示例文件名应取为mvc-servlet.xml;取名结束后点击next,选择相应的XSD,方便以后代码提示,这里只选择beans,在弹出的版本中选4.2版本即可。

    简单举例(SpringMVC XML实现方式举例)

    新建类,实现Controller接口。

    public class IndexController implements Controller {
    
        @Override                                                                                                     
        public ModelAndView handleRequest(HttpServletRequest request,
                HttpServletResponse response) throws Exception {
            //该方法返回一个存储返回路径的对象,被DispatcherServlet接到,
            //调用视图解析器解析出返回路径并跳转                                                                                                          
            ModelAndView mav = new ModelAndView();                                                                    
            mav.setViewName("index");                                                          
            return mav;                                                                                               
        }                                                                                                             
                                                                                                                      
    }

    IndexController类就相当于一个普通的servlet,handRequest相当于doGet/doPost方法;如果要执行servlet,请求路径是必要的,那么请求路径在哪里?

    在mvc-servlet.xml文件中,添加标签

    <bean class="self.exercise.controller.IndexController" id="/index"></bean>

    这里的id中的路径即为请求路径,DispatcherServlet根据该路径匹配到class中的类,执行其中的方法。

    在mvc-servlet.xml文件中配置视图解析器:

    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" id="viewResolver">
        <property name="prefix" value="/WEB-INF/"/>                                                   
        <property name="suffix" value=".jsp"/>                                                        
    </bean>  

    视图解析器会将controller返回的ModelAndView对象传递的字符串解析出返回路径/WEB-INF/index.jsp,最终以请求转发的方式跳转到该页面。

    如果想重定向而非请求转发跳转该如何实现呢?

    mav.setViewName(InternalResourceViewResolver.REDIRECT_URL_PREFIX + "main.jsp");

    此时xml中的视图解析器将不起作用,直接重定向到/main.jsp。

    如果上述代码中将字符串中的.jsp去掉会怎样呢?

    mav.setViewName(InternalResourceViewResolver.REDIRECT_URL_PREFIX + "main");

    会重定向到请求路径为/main的另一个controller中去,同理,若想请求转发到另一个controller,则:

    mav.setViewName(InternalResourceViewResolver.FORWARD_URL_PREFIX+ "main");

    以上就是MVC的XML实现方式,但一个controller只对应一个访问路径,业务复杂时实现较为麻烦,而注解方式是我们推荐的实现方式。

  • 相关阅读:
    linux mysql开启远程链接
    Nginx 下无法读取session 导致 thinkphp验证码错误
    Nginx 开启 path_info功能
    让chrome打开手机网页
    vue 组件和全局组件的注册、使用
    Vue 导入文件import、路径@和.的区别
    vue 打包路径不对设置方法
    id
    Ajax GET 和 POST 的区别
    前端笔试题汇总 2018/12/04 (2)
  • 原文地址:https://www.cnblogs.com/qingyaxuan/p/6476624.html
Copyright © 2020-2023  润新知