![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
SpringMVC教程
文章平均质量分 69
凡我出品,皆属精品
这个作者很懒,什么都没留下…
展开
-
#applicationScope、servletContext的使用:简单示例 #HandlerInterceptor被访问两次(多次) @FDDLC
一、概述本文主要讲述如下内容:1、applicationScope全局参数的设置和访问;2、访问servletContext,从中设参/取参;3、为什么初次访问时HandlerInterceptor会被执行两次甚至更多次,而后续却又恢复正常的一次二、环境搭建1、项目结构2、pom依赖<dependencies> <dependency> <groupId>org.springframework</..原创 2021-05-22 13:26:12 · 1267 阅读 · 4 评论 -
#文件上传、图片上传、实时预览(无刷新提交表单)的前后端实现(含源码) @FDDLC
一、先修课图片上传、实时预览(无刷新提交表单):超简单的实现 @FDDLC二、图片上传第1类:只上传图片(文件)这种方式最简单,可参考:#文件上传 #SpringMVC文件上传 @FDDLC第2类:上传图片,并实时预览...原创 2021-05-20 18:40:04 · 296 阅读 · 2 评论 -
#SpringMVC:如何给首页值参 #首页无法传参 #首页控制器 @FDDLC
一、问题无法给index.jsp值参。index.jsp的位置(直接位于webapp下):补充信息:index.jsp页面的核心内容:controller的核心内容:访问首页时参数没有值,页面一片空白:二、分析Tomcat的自带的web.xml中规定了welcome-file-list:因为上面这个东东的存在,当你访问项目根目录(比如localhost:8080/)时,如果Tomcat发现存在webapp/index.*,那么它就会直接把index.*返回!.原创 2021-05-19 14:19:54 · 67 阅读 · 2 评论 -
#图片上传、实时预览(无刷新提交表单):超简单的实现 @FDDLC
一、先修课#文件上传 #SpringMVC文件上传 @FDDLC#无刷新提交表单 @FDDLC二、实现过程1、项目结构:2、依赖:<dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <ve..原创 2021-05-19 13:33:03 · 187 阅读 · 2 评论 -
#Ant风格 #Spring中Ant风格的路径匹配方式 @FDDLC
一、何为Ant风格Ant风格是一种路径匹配方式。示例:/img/*.jpg,/cn/fddlc/**为什么叫Ant风格?从名字可以看出,跟Ant有关。蚂蚁?No!Ant是Apache下的一个构建(编译、测试、部署等)工具。即Ant风格源于Ant这个构建工具。二、Ant风格教程1、通配符:?匹配任意单个字符*匹配0到多个字符**匹配0到多级目录2、示例:/img/?.jpg能匹配/img/a.jpg,不能匹配/img/dog.jpg、/img/fruit..原创 2021-05-11 23:29:01 · 1630 阅读 · 0 评论 -
#ContextLoaderListener、WebApplicationContext、ContextLoader @FDDLC
一、ContextLoaderListener官方介绍:翻译:ContextLoaderListener是一个引导listener,用于启动和关闭Spring的根WebApplicationContext。简单地委托到ContextLoader和ContextCleanupListener。从Spring 3.1开始,ContextLoaderListener支持通过ContextLoaderListener(WebApplicationContext)构造函数注入根web应用程序上下原创 2021-05-11 22:07:18 · 215 阅读 · 0 评论 -
#DispatcherServlet、RequestContextListener、RequestContextFilter @FDDLC
一、三者的简单比较1、RequestContextListener的介绍:翻译:RequestContextListener,是一个Servlet侦听器,通过LocaleContextHolder和RequestContextHolder向当前线程公开请求。在web.xml中注册为监听器。另外,Spring的org.springframework.web.filter.RequestContextFilter和Spring的org.springframework.web.servlet原创 2021-05-11 21:25:29 · 712 阅读 · 0 评论 -
#SpringMVC:FormContentFilter @FDDLC
问题引入:如何发送put、delete等请求?方法有多种:比如可以使用HiddenHttpMethodFilter,比如可以使用FormContentFilter。本文介绍如何通过FormContentFilter来发送put等请求。一、FormContentFilter使用概述1、引入spring-webmvc依赖2、在web.xml中配置FormContentFilter(filter和filter-mapping)3、编写表单和controller以及响应二..原创 2021-05-11 15:31:14 · 1414 阅读 · 0 评论 -
#表单只能发get、post请求?别瞎说,put、delete等请求也能发哦 #FormContentFilter #HiddenHttpMethodFilter @FDDLC
一、问题引入正常而而,表单只有3种提交方式:get、post、dialog(此种较少用)post方式表单数据放在请求体,get方式表单数据放在url。关于method="dialog",可以参考:#HTML:<dialog> #method=“dialog“ @FDDLC问题:如何发put、delete等请求?二、get提交、post提交的回顾1、get提交表单数据:表单的默认提交方式1)、表单页:2)、controller:3)、跳转页:...原创 2021-05-10 23:54:08 · 778 阅读 · 0 评论 -
#Restful中不同请求类型的语义:Get、Put、Post、Delete #Put与Post的区别 #示例 @FDDLC
一、Get、Put、Post、Delete与增删改查的对应关系如下:Get:Select(查资源)Put:Update(更新资源)Post:Insert(增加资源)Delete:Delete(删除资源)二、Put和Post的区别Put相当于:i=996;Post相当于:i++;总结:执行多次相同的Put请求,与执行一次Put请求,效果相同,即Put请求具有幂等性()。Post请求不具有幂等性。三、Get、Put、Post、Delete示例...原创 2021-05-10 18:11:40 · 1038 阅读 · 0 评论 -
#HttpPutFormContentFilter、FormContentFilter(前者已被后者取代) @FDDLC
1、FormContentFilter的介绍:大意就是:默认情况下,只有POST请求的表单数据才会被解析,而PUT、PATCH和DELETE的表单数据则不会被解析。配置了FormContentFilter后,后三种类型的表单数据也可以被解析。2、关于HttpPutFormContentFilter的介绍:3、二者比较:Spring 5.1之前是HttpPutFormContentFilter,Spring 5.1之后FormContentFilter把前者取代了。...原创 2021-05-10 18:11:02 · 679 阅读 · 0 评论 -
#url-pattern:/* / 话题的终结者:官方说明 #servlet-mapping、filter-mapping @FDDLC
在开发JavaWeb应用时,经常会跟web.xml打交道。web.xml中有个url-pattern属性,如下:<filter-mapping> <filter-name>encodingFilter</filter-name> <url-pattern>/*</url-pattern></filter-mapping><servlet-mapping> <servlet-name>原创 2021-04-16 18:35:39 · 194 阅读 · 2 评论 -
#简单聊聊<mvc:annotation-driven/> @FDDLC
问题:<mvc:annotation-driven/>的作用是什么?为了解决这个问题,我决定一探究竟。在IDEA中双击Shift,搜索:AnnotationDriven选择AnnotationDrivenBeanDefinitionParser(所在包为org.springframework.web.servlet.config),打开该文件:我们首先看到第一句说明:意思是说:AnnotationDrivenBeanDefinitionParser是<mvc:.原创 2021-04-16 14:39:38 · 142 阅读 · 0 评论 -
#SpringMVC历险记:静态资源过滤、forward、redirect @FDDLC
今天使用SpringMVC时遇到一些问题,特此总结。开发需求:在index.jsp中点击带链接的标题,给用户呈现相应的页面i.html(如2.html)。注:i.html中使用了相对路径来访问本机的静态资源。如下:另外,再总结两个经验:一、浏览器有缓存,查看页面效果时要强制刷新(Ctr+F5、Shift+F5均可)。主页面要刷新,跳转后的页面也要刷新。二、IDEA的target文件夹要重新生成。代码环境:https://pan...原创 2021-04-03 14:33:34 · 121 阅读 · 0 评论 -
#SpringMVC资源过滤器:mvc:resources、mapping、location #涉及Controller的相对路径 @FDDLC
相关文章:#静态资源过滤 #mvc:resources @FDDLC在SpringMVC的配置文件中配置的资源过滤器:test.jsp:<%@ page contentType="text/html;charset=UTF-8" language="java" %><html><head> <title>test.jsp</title></head><body><!-..原创 2021-04-03 21:21:37 · 566 阅读 · 0 评论 -
#设置首页 #SpringMVC:view-controller、view-name #Tomcat:welcome-file-list、welcome-file @FDDLC
我们知道,Tomcat启动后,项目根目录下的index.html或index.jsp主题:JavaWeb项目如何设置首页?今天介绍两种设置首页的方式:配置Tomcat;配置SpringMVC一、配置Tomcat...原创 2020-12-11 15:29:40 · 424 阅读 · 0 评论 -
/* /** #SpringMVC拦截器中/*和/**的区别 @FDDLC
问题:SpringMVC拦截器中/*和/**有什么区别?咱们通过测试来得出结论。首先,我写了5个拦截器:补充:拦截器的配置示例:然后,我又准备了5个请求路径:@RequestMapping("/")@RequestMapping("/one")@RequestMapping("/one/two")@RequestMapping("/one/two/three")@RequestMapping("/one/two/three/four")...原创 2020-10-11 21:33:06 · 1948 阅读 · 1 评论 -
#Spring整合SpringMVC @FDDLC
如何判断Spring与SpringMVC是否整合成功?——如果在controller里能使用Spring容器创建的Bean,就代表整合成功!编码流程:补张项目结构图:0、新建Maven工程,导入Maven依赖:<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org...原创 2020-10-11 18:28:40 · 144 阅读 · 0 评论 -
#SpringMVC拦截器 #Interceptor #preHandle、postHandle、afterCompletion @FDDLC
作用:拦截器是SpringMVC中用来拦截控制器方法的一类组件。其他(比如静态资源)概不拦截!SpringMVC拦截器的相关流程:1、编写拦截器:实现HandlerInterceptor接口,编写preHandle、postHandle、afterCompletion的相关内容(不要求每个方法都写!)2、在SpringMVC的配置文件中配置拦截器:<mvc:interceptors> <mvc:interceptor> <mv..原创 2020-10-05 22:29:58 · 1497 阅读 · 0 评论 -
#SpringMVC中的异常处理 #自定义异常类和异常处理器 @FDDLC
项目结构:pom.xml的内容:<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache..原创 2020-10-05 19:09:53 · 146 阅读 · 0 评论 -
#异常处理器:一个简单的例子 #自定义错误页面 @FDDLC
1、控制器抛出异常:@RequestMapping("/test")public String test() throws Exception { int i = 1/0; return "success";}2、编写异常处理器(ExceptionHandler):public class ExceptionHandler implements HandlerExceptionResolver { @Override public ModelAndV.原创 2020-10-05 18:58:49 · 177 阅读 · 0 评论 -
#跨服务器文件上传 @FDDLC
先修课:#文件上传 #SpringMVC文件上传 @FDDLCMaven依赖:明面上只需要导spring-webmvc、commons-fileupload(由浏览器上传到当前服务器)、jersey-client(由当前服务器上传到文件服务器)。需要两台服务器,学习的话在本地跑两个Web项目就行,端口号要不一样,不然会有冲突!表单核心部分:<form method="post" enctype="multipart/form-data" action="t...原创 2020-10-05 14:46:26 · 232 阅读 · 0 评论 -
jersey.api.client.UniformInterfaceException: PUT @FDDLC
如果你仔细看了浏览器的错误提示的话,应该知道是主服务器上传文件时被文件服务器禁止!原来是文件服务器太严了:我又不是垃圾厂,什么东西都往我这放!怎么办?找文件服务器谈呗!找到文件服务器Tomcat的根目录,打开conf文件夹下的web.xml,找到DefaultServlet,如下:<servlet><servlet-name>default</servlet-name><servlet-class&...原创 2020-10-05 14:30:55 · 262 阅读 · 0 评论 -
#文件上传 #SpringMVC文件上传 @FDDLC
先修课:#文件上传 #commons-fileupload @FDDLC表单核心部分:<form method="post" enctype="multipart/form-data" action="test"> 请选择文件:<input type="file" name="multipartFile"/><br/> <input type="submit" value="提交"/></form>说明:1.原创 2020-10-05 12:39:15 · 245 阅读 · 2 评论 -
#文件上传 #commons-fileupload @FDDLC
表单核心部分:<form method="post" enctype="multipart/form-data" action="test"> 请选择文件:<input type="file" name="upload"/><br/> <input type="submit" value="提交"/></form>说明:1、method必须为post;2、enctype必须为multipart/form-data原创 2020-10-04 22:59:18 · 207 阅读 · 2 评论 -
#SpringMVC+Ajax(JSON) #异步请求响应 @FDDLC
首先需要导入<artifactId>jackson-databind</artifactId>(买一送二):Jackson是编码与解码JSON的工具。这里Jackson的作用:Ajax把JSON格式的数据(键值对字符串)发送到服务器,Jackson把JSON数据转换成对象(Account);当服务器响应浏览器时,Jackson再把对象(Account)转换成JSON数据。Jackson怎么用呢?只需要导入依赖,框架干活,我们不需要编写与Jackson相关的代码。.原创 2020-10-04 20:53:48 · 195 阅读 · 0 评论 -
#静态资源过滤 #mvc:resources @FDDLC
核心配置(要在头部导入约束!):<mvc:resourcesmapping="/css/**"location="/css/"/><mvc:resourcesmapping="/js/**"location="/js/"/><mvc:resourcesmapping="/image/**"location="/image/"/>要过滤其他文件夹,原理也是类似的!完整文件(springmvc.xml):...原创 2020-10-04 16:06:47 · 210 阅读 · 0 评论 -
#SpringMVC:转发、重定向(关键字方式) #forward、redirect关键字 @FDDLC
示例:关于在SpringMVC中使用forward、redirect关键字的说明:1、这两种方式都不经过视图解析器,因此需要自己加前后缀。2、【SpringMVC中使用关键字的重定向】和【传统的重定向】(即使用servlet-api的方式)有些区别:传统的重定向要加contextPath,比如response.sendRedirect(request.getContextPath() + "/new.jsp");而关键字的方式不需要!3、浏览器发出第一次请求后:如果该请求被...原创 2020-10-04 14:49:32 · 1869 阅读 · 4 评论 -
#SpringMVC:Model、ModelAndView #ModelAndView的注意事项 #setViewName不起作用 @FDDLC
Model核心代码:@RequestMapping("/test")public String test(Model model) { String name = "Tom"; model.addAttribute("name", name); return "success";}ModelAndView核心代码:@RequestMapping("/test2")public ModelAndView test2() { String name =.原创 2020-10-04 13:38:49 · 730 阅读 · 0 评论 -
#SpringMVC中的响应之返回值是void :转发、重定向、输出流@FDDLC
本篇博客研究【当控制器方法返回值为void时,如何进行转发】依赖:spring-webmvc(及其相关依赖)、servlet-api(以便使用HttpServletRequest和HttpServletResponse)当控制器方法返回值为void的默认情况:请求结果:即默认会去寻找{【prefix】拼接【请求路径】拼接【suffix】}!一、转发:二、重定向:三、输出流:最后附上源码:项目结构:...原创 2020-10-03 22:44:34 · 574 阅读 · 0 评论 -
#SpringMVC中的响应:一个简单的例子 @FDDLC
先放流程图:index.jsp:<%@ page contentType="text/html;charset=UTF-8" language="java" %><html><body><a href="test?name=Tom">test</a></body></html>success.jsp:<%@ page contentType="te...原创 2020-10-03 21:19:29 · 168 阅读 · 0 评论 -
@SessionAttributes #SessionAttributes注解 #SessionStatus #requestScope #sessionScope @FDDLC
@SessionAttributes:用于在session会话的多个请求中共享参数。作用在哪?只能作用在类上!index.jsp的内容:<%@ page contentType="text/html;charset=UTF-8" language="java" %><html><body><a href="testSet?name=Tom&age=20">testSet</a><br/><br/&.原创 2020-10-03 19:14:51 · 237 阅读 · 0 评论 -
@ModelAttribute #ModelAttribute注解 @FDDLC
@ModelAttribute(被此注解标记的方法不妨称之为预处理方法):预处理方法在请求方法之前执行,类似于"大内总管"(请求要见皇上,先通过大内总管)。先执行【预处理方法】,再执行【请求方法】(对应请求路径下的方法)。@ModelAttribute既可以作用在预处理方法上,也可以作用在请求方法参数上。预处理方法可以有返回值,也可以无返回值。先给出User类的成员列表,方便后面讲解:@ModelAttribute有两个作用:从请求中获取值(往往会进行预处理);给请求方法传值(...原创 2020-10-03 15:53:58 · 521 阅读 · 0 评论 -
@CookieValue #CookieValue注解 @FDDLC
@CookieValue:获取Cookie中的某个参数,默认必须要有该参数(即required=true),若无则报错!用法示例:上面表示获取Cookie中名为JSESSION的参数,若无则报错。如果想没有也不报错,该怎么办呢?设置required=false:...原创 2020-10-03 11:04:49 · 460 阅读 · 0 评论 -
@RequestHeader #RequestHeader注解 @FDDLC
@RequestHeader和@RequestParam作用类似。@RequestParam(name="requestParamName")的作用是从请求中获取名为requestParamName的参数,在默认情况下(即required=true)缺少该参数会出错。而@RequestHeader(name="headerParamName")的作用是从请求头中获取名为headerParamName的参数,在默认情况下(即required=true)缺少该参数会出错。上面表示从请求头中获原创 2020-10-03 10:34:16 · 900 阅读 · 0 评论 -
@PathVariable #PathVariable注解 @FDDLC
@PathVariable的作用其实也是请求参数绑定。不用@PathVariable的话,我们可能这样传值:<a href="test?name=Tom&age=20"></a>,即键值对的形式。@PathVariable则不同:原创 2020-10-03 10:02:44 · 162 阅读 · 0 评论 -
@RequestBody #RequestBody注解 @FDDLC
@RequestBody的适用范围:post请求。get请求无请求体,故不适用!控制台可能的输出:@RequestBody的required属性:是否一定要有请求体,默认值为true,即required=true写了和没写一个意思。什么叫没有请求体呢?1、get请求没有请求体。比如:<a href="test">test</a>,<form action="test">...</form>2、一个参数都没有(即nam..原创 2020-10-03 09:11:28 · 1030 阅读 · 0 评论 -
@RequestParam #RequestParam注解 @FDDLC
情境设置:假设请求是:很显然,该请求能触发下面这个方法:并且方法中的name会被赋值"Tom"!好,如果请求不变,而方法改成情况又会怎么样呢?答案是:"Tom"无法赋给方法中的username,即username的值为null!问题:如果请求参数名和方法形参名不一样,该怎么实现绑定呢?@Param就能解决这个问题!上面这个问题可以这样解决:说明1:@RequestParam的name属性和value属性互为别名,作...原创 2020-10-02 23:07:06 · 314 阅读 · 0 评论 -
#SpringMVC:使用原生的Servlet API #HttpServletRequest、HttpServletResponse @FDDLC
项目结构:pom.xml的内容:<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache..原创 2020-10-02 21:49:24 · 513 阅读 · 0 评论 -
#Converter #SimpleDateFormat #自定义类型转换器 #字符串转日期:支持多种格式 @FDDLC
项目结构:pom.xml的内容:<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache..原创 2020-10-02 21:18:02 · 322 阅读 · 0 评论