SpringMVC学习笔记( 一 ——基本配置)

SpringMVC介绍:

Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块。使用 Spring 可插入的 MVC 架构,从而在使用Spring进行WEB开发时,可以选择使用Spring的Spring MVC框架或集成其他MVC开发框架,如Struts1(现在一般不用),Struts 2(一般老项目使用)等。
通过策略接口,Spring 框架是高度可配置的,而且包含多种视图技术,例如 JavaServer Pages(JSP)技术、Velocity、Tiles、iText和POI。Spring MVC 框架并不知道使用的视图,所以不会强迫开发者只使用 JSP 技术。Spring MVC 分离了控制器、模型对象、过滤器以及处理程序对象的角色,这种分离让它们更容易进行定制。

在接收到请求的之后,通过映射转到控制层(Control)进行一系列操作之后再进行页面跳转,而在控制层中,对于注解的使用是十分普遍的,无论是从请求页面获取数据,还是从控制层携带数据(Model)跳转、请求页面异常及控制层异常等处理,都可以通过使用注解的形式进行实现,SpringMVC的实现的功能其实和servlet是十分相似的,但功能更为强大。

基本配置

  1. 相关jar:

spring-aop.jar
spring-bean.jar
spring-context.jar
spring-core.jar
spring-web.jar
spring-webmvc.jar
commons-logging.jar

而这次我直接利用建立maven的web项目加入依赖,而需要注意的是在使用(archetype)骨架模型的时候,建议使用有cocoon的那个webapp模型,可以在后面的web.xml配置中省去许多由于配置顺序所导致的一系列问题,而具体的相关问题可以看个人解决之后所写下的web.xml配置报错有关解决方案的博客

  1. 编写web.xml项目

   <!--告诉系统Springmvc.xml的位置 -->
  <!--name中的值是DispatcherServlet父类系中的一个属性值,
  给该属性赋值就是确定Springmvc.xml的位置-->
<servlet>
  <servlet-name>SpringDispatcherSer</servlet-name>
  <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  <init-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:springmvc.xml</param-value>
  </init-param>

  <!--1表示在项目启动时配置启动等级,越小启动越快-->
  <load-on-startup>1</load-on-startup>
</servlet>
		<!--注意名字要对齐-->
    <servlet-mapping>
    <servlet-name>SpringDispatcherSer</servlet-name>
    <url-pattern>/</url-pattern>
    <!--/:代表所有请求-->
    <!--/:一切请求  ,注意不是 /*-->
 <!--/user:拦截以 /user开头的请求-->
 <!--/user/abc.do  :只拦截该请求-->
 <!--.action:只拦截 .action结尾的请求-->
  </servlet-mapping>


以上springMVC.xml的文件位置是在resources当中,而使用默认路径的配法如下:

默认路径配法:
< servlet>
< servlet-name>Springmvc< /servlet-name>
< servlet-class>org.springframework.web.servlet.DispatcherServlet</ servlet- class>
< load-on-startup>1< /load-on-startup>
< /servlet>
< servlet-mapping>
< servlet-name>Springmvc< /servlet-name>
< url-pattern>/< /url-pattern>
< /servlet-mapping>
注:
配置文件名:Springmvc-servlet.xml
默认路径下,配置文件的名称一定要是:servletname名-servlet.xml
如果不是,就会报错!

此时文件名为:Springmvc-servlet.xml并放在WEB-INF下。

  1. 配置Springmvc.xml配置文件
  <!--扫描注解-->
 <context:component-scan base-package="org.handler,org.entity"></context:component-scan>


<!--视图解析器-->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/views/"></property>
        <property name="suffix" value=".jsp"></property>
    </bean>

使用到注解的地方都要添加到扫描当中才起作用,而视图解析器的作用在下面再说。

  1. 配置请求页面和handler类:
<!--index.jsp-->
 <a href="handler/test">test</a>

//Control层
@Controller
@RequestMapping("handler")
public class handler {

    @RequestMapping("test")
    public String testHello(){
        return "success";
    }

注意不要在href="handler/test"中的handler前面加/,不然会报404,而IDEA补全是会前面添加/的,所以要注意一些。

  1. 配置跳转页面success.jsp
    (在webApp下新建views目录,在目录下编辑success.jsp)
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
   <title>SpringMVC</title>
</head>
<body>
       Success to visit SpringMVC!!!
</body>
</html>

之后就可以通过启动TomCat进行访问了。
在这里插入图片描述而首先请求先是有web.xml中的配置被拦截,根据@RequestMapping注解中的path与请求的路径对应起来跳转至相应的方法当中,然后在方法返回之后,视图解析器会自动为"success"添加前缀"/views/“和后缀”.jsp",从而组成了跳转页面的路径,之后再跳转至相应的页面中去。

而@RequestMapping可以在类名前设置,也可以不添加设置,添加设置时,完整的请求路径是类名的@RequestMapping/方法的@RequestMapping

@RequestMapping的一些设置

通过设置@RequestMapping的参数,可以指定匹配@RequestMapping的条件

  1. 通过method指定 请求方式(get post delete put)

@RequestMapping(value=“welcome”,method=RequestMethod.POST)
该RequestMapping只能被POST提交方式的请求匹配到,而GET等方式不能。

  1. params指定提交的参数要求

//params是指定参数要有什么或则是什么值,或者后面不能有什么或什么值
@RequestMapping(value = “welcome/abc”,method = RequestMethod.POST,params = {“name=zs”,“age!=23”,"!head"})
//提交的表格当中,name栏的名字要为zs、没有age或则age栏不等于23、不能有head这个参数;

归纳一下:

设置name="xxxx"的情况:
params= {“name2=zs”,“age!=23”}
name2:必须有name="name2"参数
age!=23 : a.如果有name=“age”,则age值不能是23
b.没有age
!name2 :不能name="name2"的属性

3.通过网页中的headers限制访问:
当我们在不同浏览器中访问相同的页面时,通过F12可以发现不同浏览器中的请求头headers是不一样的,通过在RequestMapping设置相应的headers,可以限制一些浏览器访问:

@RequestMapping(value = “welcome2/abc”,headers = {“Accept=text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,/;q=0.8,application/signed-exchange;v=b3”,“Accept-Encoding=gzip, deflate, br”})

以上是在第一次访问相应的谷歌浏览器的时候获得了相应的headers的Accept,设置到RequestMapping中,再次启动项目在火狐中点击相应的请求之后,直接报404了,而在谷歌浏览器中则可以正常访问。

  1. ant风格的请求路径

? 单字符
*任意个字符(1或多个)
** 任意目录

@RequestMapping(value = “welcome3/*/abc”)
// welcome3/与/abc之间可以有1个或多个任意字符,如/welcome3/12332132321/abc和/welcome3/d/abc
@RequestMapping(value = “welcome4/**/abc”)
//welcome4/与/abc之间可以有任意个目录
@RequestMapping(value = “welcome5/a?c/abc”)
a与c之间可以为任意单字符

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值