博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
搭建SpringMVC开发环境
阅读量:6211 次
发布时间:2019-06-21

本文共 3173 字,大约阅读时间需要 10 分钟。

        通常在开发JavaEE项目中Web应用比较常用的框架组合Struts+Spring+Hibernate(SSH)和Struts+Spring+Mybatis(ibatis)(SSM)。

         当使用Spring的MVC时候,整个Web应用的层次更加简单和情绪。

  1. 引入SpringMVC所依赖的两个jar,Spring-web-*.jar Spring-webmv-*.jar(*表示对应的版本)

  2. 在Web应用(web.xml)中配置Spring WebAppliactionContext的监听

        
contextConfigLocation
        
classpath:spring-context-*.xml
    
    
        
org.springframework.web.context.ContextLoaderListener
    

Spring的配置文件进行了拆分,配置文件名格式为:spring-context-*.xml, 位于classes(src)目录下。

在Web应用(web.xml)中配置Spring MVC的Servlet(SpringMVC的核心类,前端控制器,处理请求)

       
spring
       
org.springframework.web.servlet.DispatcherServlet
       
           
contextConfigLocation
           
classpath:spring-web-servlet.xml
       
       
2
   
       
       
spring
       
/
   

      SpringMVC的默认配置文件名为:<servletname>-servlet.xml 并且位于WEB-INF下,上面通过servlet的初始化参数contextConfigLocation对配置文件重新设置和命名。

      关于servlet的url-pattern的设置非常重要的,并且很容易出错。上述配置表示所有的请求都要经servlet name是spring的这个servlet来处理,并且名为spring这个servlet的Web应用的默认servlet。

      关于servlet的url-pattern的设置可以仔细阅读这篇文章:

  

  4.处理特殊请求

        根据上面的配置所有请求就要经过spring这个servlet来处理,这样对静态文件的请求由于没有对应的请求处理程序,将无法访问到静态资源,这个问题的解决方法是在spring-web-servlet.xml(如果不设置默认名称为:spring-servlet.xml)中添加静态资源处理配置。

   
   

  5.servlet的url-pattern

     a.如果url-pattern设置为:*.do,则请求通过扩展名类分发,就不存在4中的静态资源无法访问的问题

     b.如果url-pattern设置为:/*, 则请求经过再次转发,重定向将再次被名为spring的servlet拦截(导致.*.jsp无效得到解析),默认的servlet名则是取自对应的web应用服务器的默认servlet命名。

     下面配置是来自tomcat下conf/web.xml文件:  

       
default
       
/
   
 
       
jsp
       
*.jsp
       
*.jspx
   

    c.如果url-pattern设置为:/, 则覆盖了DefaultServlet,但是隐式的JspServlet仍然可以映射。   

    上面 a 是后缀映射,b是路径映射, c是默认映射,其它(/a/c/d, /a/b/c.do)这些都是精确的映射。

6.基于注解写一个SpringMVC的Controller用来处理请求

 

package com.name.web; import java.util.Date; import java.util.Map; import javax.servlet.http.HttpServletRequest; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; @Controller @RequestMapping(value = { "/hello" }) public class HelloController {
   @RequestMapping(value = "/index", method = RequestMethod.GET)    public String index(HttpServletRequest request, Map
model) {
       return "index";    } }

 

注:

        编写这个示例用到Spring的注解,SpringMVC的jsp视图处理。因此需要在spring-web-servlet.xml文件中添加如下配置:

 

   
       
       
       
       
   

   在/WEB-INF/view/下创建index.jsp文件,然后通过GET方式访问: 将返回index.jsp中的内容。

7.Web应用中spring MVC和Spring WeabAppliactionContext(IOC)的关系

   从上面的web.xml配置文件中可以看到SpringMVC的集成我们使用了配置org.springframework.web.servlet.DispatcherServlet,而servlet确实是可以在一个Web应用中配置多个,所以我们可以配置多个这样的servlet。

  如下图是SpringWeb应用中Spring WebApplicationContext和Spring MVC(DispatcherServlet)的WebApplicationContext的关系

 

转载地址:http://jksja.baihongyu.com/

你可能感兴趣的文章
丛林法与雨林法则
查看>>
从使用到原理学习Java线程池
查看>>
107. Binary Tree Level Order Traversal II
查看>>
ajax发送post请求
查看>>
CentOS 6.5 下编译安装 Nginx 1.8.0
查看>>
caffe的调试技巧 和 使用split层
查看>>
cxf开发webservice服务器+客户端(各种类型的参数传递返回)
查看>>
OpenLDAP
查看>>
计算机组成原理 学习笔记
查看>>
Ubuntu 16.04开启SFTP服务
查看>>
Java获取Resource目录下的文件
查看>>
Linux时间子系统(五) POSIX Clock
查看>>
File的方法
查看>>
Quartz使用总结
查看>>
python变量作用域,函数与传参
查看>>
【IL】IL指令详解
查看>>
Readiness 探测 - 每天5分钟玩转 Docker 容器技术(144)
查看>>
Maven多模块项目
查看>>
Hadoop学习之路(五)Hadoop集群搭建模式和各模式问题
查看>>
为什么面试要问 hashmap 的原理
查看>>