问题: spring mvc开发过程中, 经常会给model addAttribute, 然后通过EL在jsp中显示,比如 ${msg}, 但是有时候会出现 jsp最后显示的还是${msg...Spring Controller import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse...; import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.mvc.AbstractController...JSP 1.2 如果你用的jsp1.2版本的DTD web.xml <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc....JSP 2.0 JSP2.0默认是打开支持EL的,所以声明jsp2.0就可以直接用了。
跟踪Spring MVC的请求 Web请求从离开浏览器开始到获取响应返回,它会经历好多站,每站都会留下一些信息同时带上其他信息。 ?...从Spring 3.2开始,我们可以按照控制器的方式来测试Spring MVC中的控制器了,就是使用mock Spring MVC测试。...在浏览器中展现一个spittle 5.4 处理表单 Spring MVC的控制器也为表单处理提供了良好的支持。 使用表单分为两个方面:展现表单以及处理用户通过表单提交的数据。...Spittr的基本信息页展示了用户的情况,这些信息是由SpitterController填充到模型中的 校验表单 如果用户在提交表单的时候,文本域为空,会导致新建对象中某些关键字段为空。...从Spring 3.0开始,在Spring MVC中提供了对Java校验API的支持。
SpringMVC Spring MVC是Spring提供的一个强大而灵活的web框架。借助于注解,Spring MVC提供了几乎是POJO的开发模式,使得控制器的开发和测试更加简单。...这些控制器一般不直接处理请求,而是将其委托给Spring上下文中的其他bean,通过Spring的依赖注入功能,这些bean被注入到控制器中。 ...处理请求 : 获取请求的头信息 获取请求的数据 3. 响应 : JSP HTML JSON Servlet: 1. 将JSP内容,根据格式渲染HTML页面 2....从宏观角度考虑,DispatcherServlet是整个Web应用的控制器;从微观考虑,Controller是单个Http请求处理过程中的控制器,而ModelAndView是Http请求过程中返回的模型...* 在SpringMVC中,获取请求参数参数,只需要方法中形式参数的名称与请求的数据的name属性值一致,就可以自动的绑定相关参数 且简单数据类型可以自动进行数据转换
从web请求离开浏览器(1)到返回响应,中间经历了几个节点,在每个节点都进行一些操作用于交换信息。下图展示了Spring MVC应用中web请求会遇到的几个节点。 ?...在Spring MVC中,DispatcherServlet就是前端控制器。 DispatcherServlet的任务是将请求发送给某个Spring控制器。...一旦选好了控制器,DispatcherServlet会把请求发送给指定的控制器(3),控制器中的处理方法负责从请求中取得用户提交的信息,然后委托给对应的业务逻辑组件(service objects)处理...5.4.1 编写表单控制器 在处理来自注册表单的POST请求时,控制器需要接收表单数据,然后构造Spitter对象,并保存在数据库中。为了避免重复提交,应该重定向到另一个页面——用户信息页。...从Spring 3.0开始,Spring支持在Spring MVC项目中使用Java Validation API。
② 后端经过一系列处理后(例如,从数据库中查到需要的数据)把数据响应给前端页面 ③ 前端页面获取到响应内容后,对其进行解析以及进行一些处理(例如:回显内容到页面) 今天重点要学习的就是也就是——如何在获取请求后对其解析...username=admin 而在后端中如果方法形参与这个username是一致的,这个提交的数据就会被绑定到参数username中 B:JavaBean 实体类型 参数中使用 JavaBean 类型接收时...,在提交表单的时候,就需要将其中的 name 属性中的值与实体类中的成员变量的值是一样的 如果一个JavaBean类中包含其他的引用类型,那么表单的name属性需要编写成:对象.属性例如:account.username...:表示当前方法会在控制器方法执行前执行 在参数上:获取指定的数据给参数赋值 应用场景: 提交表单的数据不是完整的数据,而没提交的字段,就是用数据库中原来的 例如:用户修改个人信息,但是昵称则不允许修改,...testG 方法的时候,就能将用户提交的 age 和 address 获取到,同时将用户没有提交的 nickname 使用数据库中的值 @RequestMapping("/testG") public
,在方法级别上,则标记访问的路径; 从@RequestMapping注解标记的访问路径中获取参数: Spring MVC 支持RESTful风格的URL参数,如: @Controller public...,通过地址栏访问login.htm,是通过GET请求访问页面,因此,返回登陆表单视图login.jsp;当在登陆表单中使用POST请求提交数据时,则访问login2方法,处理登陆业务逻辑; 防止重复提交数据...GET请求或POST请求提交的参数; 获取Cookie的值:使用@CookieValue : 获取PrintWriter: 可以直接在Controller的方法中传入PrintWriter对象,就可以在方法中使用...@RequestParam("username") String username) { out.println(username); return null; } 获取表单中提交的值...user, Map model) { model.put("user",user); return "view"; } 在返回的view.jsp中,就可以根据key来获取
-- 声明mvc使用注解驱动--> mvc:annotation-driven/> 3.4 在web.xml中配置SpringMVC的前端控制器 /** SpringMVC...{}传值 @RequestParam注解用于接收请求行传递的数据 前端提交的数据 表单提交 <p...System.out.println(a); System.out.println(b); System.out.println(c); } } 注意: 如果控制器方法中接收数据的参数名与请求行传值的...,在控制器方法中可以使用对象接收, //但是提交的数据的key必须要与对象的属性一致 public String addBook(Book book){ System.out.println...创建SpringMVC配置文件 在web.xml中配置SpringMVC的前端控制器 在web.xml中配置SpringMVC的编码过滤器 配置静态资源处理策略 7.2 文件上传 案例:添加图书,同时提交图书的封面图片
,可以把控制器的功能交给视图来实现, 这种模式被称为 JSP Model1 总结: Model1 在一定基础上,实现了MVC :JSP( 控制层和视图层 ) + JavaBean为模型层; 但 其中...框架介绍: 在MVC设计模式中, SpringMVC 就是作为控制器( Controller ) 来建立模型与视图的数据交互; 结构最清晰的MVC Model2实现 SpringMVC 框架采用松耦合...; spring-webmvc-3.2.13.RELEASE.jar 框架相关的类,包含框架的 Servlets WebMVC 以及对控制器 和 视图的支持; 配置文件在web.xml中配置jsp视图 时再次进入spring的DispatcherServlet 类,导致找不到对应的controller所以报404错。...-- 如果表单提交中 action url中带参数 和 post方式提交的重名name-value 获取时候会同时获取 get,post表单 修改action 中连接(方式一):Hollo1
,作为控制器中方法的参数进行绑定的 要求:提交表单的 name 和 参数名称是相同的 支持的数据类型 基本数据类型和字符串类型 实体类型(JavaBean) 集合数据类型(List,map集合等...) 基本数据类型和字符串类型 提交表单的 name 和参数的名称是相同的 区分大小写 实体类型(JavaBean) 提交表单的 name 和 javaBean 中的属性名称要一致 如果一个 JavaBean...类中包含其他的引用类型,那么表单的 name 属性需要编写成:对象 属性: eg:address name 给集合属性数据封装 JSP 页面编写方式:list[0] 属性, 封装对象表达式,对 前端的表单页面进行设置...请求参数中乱码解决(解决 post 请求乱码) 在 web.xml 中配置 Spring提供的过滤器类 (上面的 web.xml 已经修改) 3.2 获得原生 Servlet API //...属性: value:请求参数的名称 required:请求参数中是否必须提交此参数 // jsp 代码 <a href="anno/testRequestParam?
Spring也有自己的一套标签库,通过Spring表单标签; 可以更容易的将模型数据表单, 命令对象绑定到 HTML 表单元素中; 首先和JSTL标签库一样,在使用Spring表单之前。...而且可以同时对应 新增和修改; 新增在去新增的控制器model 这存储一个空的对象即可, 提交时候会把表单的数据存在这个属性中: 发送至控制器; 也就是说, 需要由控制器Modle给...modelAttribute 提供一个属性, modelAttribute 提交时也把表单的数据 返回值控制器;... --> 中不存在 modelAttribute="属性名" 自动以属性名为名,提交时候把表单的值都放进入,发送至控制器; --> 数据合法性校验所提供的标准框架 Spring MVC支持JSR 303标准的校验框架 JSR 303通过在Bean属性上标注校验注解指定校验规则,并通过标准的验证接口对
使用 Spring 可插入的 MVC 架构,从而在使用Spring进行WEB开发时,可以选择使用Spring的Spring MVC框架或集成其他MVC开发框架,如Struts1(现在一般不用),[Struts...SpringMVC 已经成为目前最主流的 MVC 框架之一, 从 Spring3.0 的发布, 就已全面超越 Struts2,成为最优秀的 MVC 框架。...1.9.核心控制器 SpringMVC自带了拦截器请求的核心控制器.所以就可以在请求过来的时候,直接启动Spring框架 默认情况下,Spring容器是在核心控制器DispatcherServlet获得请求后才启动的..."; } } 测试@SessionAttribute注解 @SessionAttribute注解: 从session中获取一个值封装到参数中.../** * @SessionAttribute:从session中获取一个值 * @param username * @param user * @return */ @RequestMapping
MVC 设计概述 在早期 Java Web 的开发中,统一把显示层、控制层、数据层的操作全部交给 JSP 或者 JavaBean 来进行处理,我们称之为 Model1: 出现的弊端: JSP 和 Java...模型就是数据,就是 dao,bean V 代表 视图(View) 视图是什么呢? 就是网页, JSP,用来展示模型中的数据 C 代表 控制器(controller) 控制器是什么?...MVC 教程(how2j.cn) ---- 跟踪 Spring MVC 的请求 每当用户在 Web 浏览器中点击链接或者提交表单的时候,请求就开始工作了,像是邮递员一样,从离开浏览器开始到获取响应返回...造成的问题: 我们可以在【web】根目录下放置一个【test.jsp】模拟一个重要数据的页面,我们什么都不用做,重新启动服务器,网页中输入 localhost/test.jsp 就能够直接访问到了,这会造成数据泄露...对象 使用 Model 对象 在 Spring MVC 中,我们通常都是使用这样的方式来绑定数据, 使用 @ModelAttribute 注解: @ModelAttribute public void
,否则将报错 defaultValue:默认值,表示如果请求中没有同名参数时的默认值 以一个javaBean对象接收 要求对象当中的属性要和表单当中的名称一致 List集合接收数据 自定义参数绑定...用来在一个请求过程中传递处理的数据。...form对应的实体对象 第二是它支持我们在提交表单的时候使用除GET和POST之外的其他方法进行提交,包括DELETE和PUT等 使用场景 当编辑时, 跳转到form表单页,传统模式要在跳转前先到数据库查询数据...JSP 视图 视图的作用是渲染模型数据,将模型里的数据以某种形式呈现给客户 视图对象由视图解析器负责实例化 在org.springframework.web.servlet 包中定义了一个高度抽象的...:根据 HTTP 请求头的 Accept-Language 参数确定本地化类型 切换中英文切换 默认情况是通过AccepHeaderLocaleResolver来从浏览器当中获取语言信息 可以从请求参数中获取本次请求对应的本地化类型
该方法会从memberValues这个Map中索引出对应的值。而memberValues的来源是Java常量池。 10、Spring MVC常用的注解有哪些?...Struts采用值栈存储请求和响应的数据,通过OGNL存取数据;Spring MVC通过参数解析器是将request请求内容解析,并给方法形参赋值,将数据和视图封装成ModelAndView对象,最后又将...Jsp视图解析器默认使用jstl。 与spring整合不一样。 Spring MVC是spring框架的一部分,不需要整合。在企业项目中,SpringMVC使用更多一些。...直接在方法中声明这个对象,Spring MVC就自动会把属性赋值到这个对象里面。 24、Spring MVC中函数的返回值是什么? 返回值可以有很多类型,有String, ModelAndView。...ModelAndView类把视图和数据都合并的一起的,但一般用String比较好。 25、Spring MVC用什么对象从后台向前台传递数据的?
数据响应 页面跳转 直接返回字符串 首先在/webapp目录下新建一个jsp文件夹,将success.jsp移至其中。 可以在spring-mvc.xml配置文件中配置内部资源视图解析器 获取“动态”的数据资源,还会请求存储在服务器上的静态资源(例如土图片),但是之前在前端控制器的配置中web.xml有可能设置了缺省,这就意味着,前端的静态资源请求也会通过前端控制器,进而去寻找相应的方法...请求数据的乱码问题 尤其在获取中文时,可能会遇到乱码的问题,这里需要在web.xml中配置一个全局的过滤器: 时,则使用指定的默认值赋值 在UserController类中编写方法: @Controller @RequestMapping("/user") public class UserController...MultipartFile类型参数,如果文件少的话可以这么操作 前端表单中的文件上传name值不同,且必须和后台参数名一一对应 启动tomcat服务,在浏览器表单中输入用户名以及上传文件,并提交: image.png
Spring的视图解析相当灵活。一个控制器甚至可以直接向response输出一个视图(此时控制器返回ModelAndView的值必须是null)。...2)强大而直接的配置方式:将框架类和应用类都作为JavaBean配置,支持在一个context中引用其他context的中JavaBean,例如,在web控制器中对业务对象和验证器(validator)...7) 灵活的model转换: 在Springweb框架中,使用基于Map的名/值对来达到轻易地与各种视图技术的集成。...8) 可定制的本地化和主题(theme)解析:支持在JSP中可选择地使用Spring标签库、支持JSTL、支持Velocity(不需要额外的中间层)等等。...大多数Web应用都会遇到需要填写表单的页面,当表单提交成功后,表单的数据被传送到Web服务器中处理,遇到这种情况Spring为我们提供了一个简单的类SimpleFormController。
1 控制器方法的参数 (1)请求参数的获取 编码处理 HTTP 请求的首要问题是要获取用户所提交的参数。...在 Spring MVC 中,我们可以在控制器方法中直接获取用户提交的请求参数,只要方法参数的名字和请求参数的名字相同即可,Sprig MVC 还会自动对参数作相应的类型转换。 ...int 是原生类型参数,原生类型不能放入 null 值,因此当请求参数为空时,Spring MVC 无法为我们设置 int 类型的方法参数!...因此保存电影修改的控制器方法只要用一个参数就可以获取整个表单提交的值。...我们知道,在 JSP 技术中,GET 请求乱码可以通过设置服务器的 server.xml 配置来解决,而 POST 请求乱码则应该在获取请求数据前使用代码“request.setCharactorEncoding
它主要通过分离模型、视图及控制器在应用程序中的角色将业务逻辑从界面中解耦。通常,模型负责封装应用程序数据在视图层展示。视图仅仅只是展示这些数据,不包含任何业务逻辑。...MVC模式的核心思想是将业务逻辑从界面中分离出来,允许它们单独改变而不会相互影响。 在Spring MVC应用程序中,模型通常由POJO对象组成,它在业务层中被处理,在持久层中被持久化。...视图通常是用JSP标准标签库(JSTL)编写的JSP模板。控制器部分是由dispatcher servlet负责,在本教程中我们将会了解更多它的相关细节。...Dispatcher Servlet(Spring控制器) 在最简单的Spring MVC应用程序中,控制器是唯一的你需要在Java web部署描述文件(即web.xml文件)中配置的Servlet。...在Spring3.0中定义一个控制器类,这个类必须标有@Controller注解。当有@Controller注解的控制器收到一个请求时,它会寻找一个合适的handler方法去处理这个请求。
容器,所以在进行 SpringMVC 操作时,需要将 Controller 存储到 Spring 容器中,如果使用 @Controller 注解标注的话,就需要使用: <!...(user); return "success"; } 中文乱码过滤器 当 post 请求时,数据会出现乱码,可以在 web.xml 设置一个过滤器来进行编码的过滤。...(Arrays.toString(ids)); return "success"; } 获取集合(复杂)类型参数 获得集合参数时,要将集合参数包装到一个 POJO 中才可以。...中的数据拼接到 URL 地址上;重定向的目标 JSP 页面不能写在 WEB-INF 目录中,否则无法找到。...,则可以在控制器类上标注一个 @SessionAttributes,配置需要在 session 中存放的数据范围,SpringMVC 将存放在 model 中对应的数据暂存到 HttpSession 中
,作为控制器中方法的参数进行绑定的 要求:提交表单的name和参数的名称是相同的 @RequestParam注解用于定义请求中的参数 支持的数据类型 基本数据类型和字符串类型 实体类型(JavaBean...) 集合数据类型(List、map集合等) 基本数据类型和字符串类型 提交表单的name和参数的名称是相同的 区分大小写 实体类型(JavaBean) 提交表单的name和JavaBean中的属性名称需要一致...RequestHeader注解 作用:获取指定请求头的值 属性 value:请求头的名称 CookieValue注解 作用:用于获取指定cookie的名称的值 属性 value:cookie的名称...应用场景 当提交表单数据不是完整的实体数据时,保证没有提交的字段使用数据库原来的数据 SessionAttributes注解 作用:用于多次执行控制器方法间的参数共享 属性 value:指定存入属性的名称...可以定义拦截器链,连接器链就是将拦截器按着一定的顺序结成一条链,在访问被拦截的方法时,拦截器链 中的拦截器会按着定义的顺序执行。
领取专属 10元无门槛券
手把手带您无忧上云