SpringMVC学习(三)

静态资源访问和default-servlet-handler

由于在dispatcherServlet中设置了对“/*”进行过滤,那么当系统内访问到诸如js等静态资源的时候会报错。

因此,需要在servlet-Context.xml中配置default-servlet-handlerannotation-driven两个bean。

前者会判断来了的请求是否被映射过(即使用RequestMapping进行过标记),如果映射过,则交给dispatcherServlet进行映射;如果没有,则当做静态资源去直接访问,如果该资源或页面不存在,直接报404.

而后者annotation-driven,保证了在所有请求被过滤之后,带有注解映射的资源能够被识别到。因此,二者是同时存在的。

注:静态资源一般放在webapp目录下,即跟WEB-INF同级。否则可能需要配置静态资源访问映射。

    <mvc:default-servlet-handler/>
    <mvc:annotation-driven></mvc:annotation-driven>

HiddenHttpMethodFilter配置

我们知道,form表单的提交,method是需要设置为POST请求的。

除了GET、POST请求,还有PUT、DELETE等诸多类型的请求。

在探讨如何实现PUT、DELETE请求的时候,先要弄清楚他们是什么,为何要有他们的存在。

Rest风格中的请求方式

Rest模式get,put,post,delete含义与区别

REST当中为什么要使用HTTP PUT

使用HiddenHttpMethodFilter将POST转换为PUT和DELETE

在web.xml中仅需要做出如下配置:

    <filter>
        <filter-name>HiddenHttpMethodFilter</filter-name>
        <filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
    </filter>

    <filter-mapping>
        <filter-name>HiddenHttpMethodFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

在form中,要加入input标签(delete 同理):

<input type="hidden" name="_method" value="PUT"/>

这样,尽管form的method=POST,但是在提交的时候,HiddenHttpMethodFilter会主动将该提交操作转为需要的类型。

而在Controller类中,RequestMapping需要规定相应的方法,否则会无法映射,例如:

    @RequestMapping(value="path", method=RequestMethod.PUT)
    public String update(User user){
        userDao.update(user);
        return "success";
    }

还有一点,form的action一定要是绝对路径,而不能是相对路径,否则会报错。绝对路径需要加入以下占位符:

<form:form action="${pageContext.request.contextPath }/input"
        method="POST" modelAttribute="employee">

该占位符的使用,需要引入依赖

        <dependency>
            <groupId>javax.servlet.jsp</groupId>
            <artifactId>javax.servlet.jsp-api</artifactId>
            <version>2.3.2-b01</version>
        </dependency>

上述form中的ModelAttribute作用,见SpringMVC(二)

时间: 2024-12-19 13:44:13

SpringMVC学习(三)的相关文章

SpringMVC学习(三)——SpringMVC的配置文件

读者阅读过SpringMVC学习(一)——SpringMVC介绍与入门这篇文章后,想必都会写写SpringMVC的入门小程序,在这个小程序中,SpringMVC的核心配置文件——springmvc.xml为: <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi=&qu

SpringMVC学习三(日期参数/数据保存/重定向/乱码问题)

静态资源的映射 Springmvc完成ajax功能 SpringMVC返回中文到ajax乱码问题解决方式 1.静态资源映射 对于之前web.xml配置文件中的 先做出如下更改,不可写“/*”因为有区别 “/”代表所有请求都需要经过此拦截器(之前学习中的list.do也可以写成list即可),但我们发现即使设置了此拦截,通过后却依然不能显示图片等等,即.jsp/.png等后缀的静态资源文件 解决此问题的方法需要在spring配置文件中加入有着 释放静态资源 作用的代码 <mvc:default-s

SpringMVC学习三、RestFul风格与结果跳转

RestFul 风格 概念 Restful就是一个资源定位及资源操作的风格.不是标准也不是协议,只是一种风格.基于这个风格设计的软件更简洁,更有层次,更易于实现缓存等机制. 功能 资源:互联网所有事物都可以被抽象为资源 资源操作:使用POST.DELETE.PUT.GET,使用不同的方法对资源进行操作 分别对应 添加.删除.修改.查询. 传统方式操作资源:通过不同的参数来实现不同的效果!方法单一,post和get http://127.0.0.1/item/queryltem.action?id

springMVC学习总结(三) --springMVC重定向

根据springMVC学习总结(一) --springMVC搭建搭建项目 在com.myl.controller包下创建一个java类WebController. 在jsp子文件夹下创建一个视图文件index.jsp.final.jsp. 配置web.xml 配置springmvc-servler.xml 创建项目结构如下: WebController.java代码如下 package com.myl.controller; import org.springframework.stereoty

SpringMVC学习笔记(二): 日常使用功能

前提: 1.web.xml 和spring-mvc核心配置如:SpringMVC学习笔记(一): 基础知识中注解实现. 2.类的@RequestMapping(value="/annotationController") 3.spring-mvc 推荐使用注解实现. 一.数据的接收 (一)URL参数数据的接收 1.使用 HttpServletRequest 获取参数 <span style="font-size:18px;"><span style

史上最全的SpringMVC学习笔记

SpringMVC学习笔记---- 一.SpringMVC基础入门,创建一个HelloWorld程序 1.首先,导入SpringMVC需要的jar包. 2.添加Web.xml配置文件中关于SpringMVC的配置 <!--configure the setting of springmvcDispatcherServlet and configure the mapping--> <servlet> <servlet-name>springmvc</servlet

springmvc学习总结(二) -- maven+springmvc+spring+mybatis+mysql详细搭建整合过程讲解

@[email protected] 写在最前 之前分享过下面这几篇: mybatis学习笔记(五) -- maven+spring+mybatis从零开始搭建整合详细过程(上)(附demo和搭建过程遇到的问题解决方法) mybatis学习笔记(六) -- maven+spring+mybatis从零开始搭建整合详细过程(下) springmvc学习笔记(一) -- 从零搭建,基础入门 这一篇,在这些练习的基础上,将它们整合在一起! 搭建步骤如下 一.新建maven项目,配置环境,测试是否配置成

SpringMVC学习(四)——Spring、MyBatis和SpringMVC的整合

之前我整合了Spring和MyBatis这两个框架,不会的可以看我的文章MyBatis框架的学习(六)——MyBatis整合Spring.本文我再来讲SpringMVC和MyBatis整合开发的方法,这样的话,Spring.MyBatis和SpringMVC三大框架的整合开发我们就学会了.这里我使用的Spring是Spring4.1.3这个版本(SpringMVC自然也是这个版本),MyBatis是MyBatis3.2.7这个版本. 为了更好的学习SpringMVC和MyBatis整合开发的方法

SpringMVC的三个XML(web.xml、application-context.xml、context-dispatcher.xml)

现代Web应用程序广泛使用MVC(model.view.controller,记得在专升本的考试中还考过这个定义,当时并不能使用流畅的语言解释)模式,那么SpringMVC就恰好可以轻松帮我们搭建一个Web开发环境.而要搭好开发环境,熟知SpringMVC的三个XML(web.xml.application-context.xml.context-dispatcher.xml)就显得必不可少.而我呢,虽然前前后后左左右右也大见过三次Web框架,但每次都纠结的要了老命,那么痛定思痛,我决定下功夫把

springmvc学习笔记(20)-拦截器

springmvc学习笔记(20)-拦截器 springmvc学习笔记20-拦截器 拦截定义 拦截器配置 针对HandlerMapping配置 类似全局的拦截器 拦截测试 拦截器应用实现登陆认证 需求 登陆controller方法 登陆认证拦截实现 本文主要介绍springmvc中的拦截器,包括拦截器定义和的配置,然后演示了一个链式拦截的测试示例,最后通过一个登录认证的例子展示了拦截器的应用 拦截定义 定义拦截器,实现HandlerInterceptor接口.接口中提供三个方法. public