modelandview

springMVC笔记系列(13)——模型数据处理篇 之 ModelAndVIew对象

时光毁灭记忆、已成空白 提交于 2020-12-19 08:40:58
之前的几篇文章介绍了处理请求的各个注解以及POJO对象接收和Servlet原生API参数类型支持等内容,这些内容主要解决的都是如何接收和映射请求数据。 接下来我们重点来看看如何处理和返回模型数据。之前我们控制器类的处理方法返回的都是String,来生成我们最终的物理url路径。可输出的模型数据还可以有多种类型。 Spring MVC 提供了以下几种途径输出模型数据: ModelAndView : 处理方法返回值类型为 ModelAndView 时, 方法体即可通过该对象添加模型数据 Map 及 Model : 入参为org.springframework.ui.Model、org.springframework.ui.ModelMap 或 java.uti.Map 时,处理方法返回时,Map 中的数据会自动添加到模型中。 @SessionAttributes : 将模型中的某个属性暂存到HttpSession 中,以便多个请求之间可以共享这个属性 @ModelAttribute : 方法入参标注该注解后, 入参的对象 就会放到数据模型中 从本篇开始,我们进入一个小环节,就是模型数据处理篇,本篇先介绍其中的 ModelAndView。 ModelAndView 我们编写控制器类的一个方法如下,方法中我们构造了一个ModelAndView对象

SpringMVC面试题

我与影子孤独终老i 提交于 2020-03-31 20:08:16
1、简单介绍下你对springMVC的理解? Spring MVC是一个基于Java的实现了MVC设计模式的请求驱动类型的轻量级Web框架,通过把Model,View,Controller分离,将web层进行职责解耦,把复杂的web应用分成逻辑清晰的几部分,简化开发,减少出错,方便组内开发人员之间的配合。 2、SpringMVC的流程? 下图是springMVC的原理示意图: SpringMVC工作流程概述: 1、客户端向web服务器(如tomcat)发送一个http请求,web服务器对http请求进行解析,解析后的URL地址如果匹配了DispatcherServlet的映射路径(通过web.xml中的servlet-mapping配置),web容器就将请求交给DispatcherServlet处理。 2、DispatcherServlet接收到这个请求后,再对URL进行解析,得到请求资源标识符(URI)。然后调用相应方法得到的HandlerMapping对象,再根据URI,调用这个对象的相应方法获得Handler对象以及它对应的拦截器。(在这里只是获得了Handler对象,并不会操作它,在SpringMVC中,是通过HandlerAdapter对Handler进行调用、控制的) 3、DispatcherServlet根据得到的Handler对象

spring MVC 初使用

大城市里の小女人 提交于 2020-03-29 12:28:00
环境: myeclipse+tomcat8 1.在WebRoot下新建:web.xml: ____________________________________________________________________________________________________________________________________ <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0"> <display-name>springMVC</display-name> <!-- 部署 DispatcherServlet --> <servlet> <servlet-name

SpringMVC中的异常处理

别说谁变了你拦得住时间么 提交于 2020-03-29 06:26:10
  springmvc在处理请求过程中出现异常信息交由异常处理器进行处理,自定义异常处理器可以实现一个系统的异常处理逻辑。 1. 异常处理思路   系统中异常包括两类:预期异常和运行时异常RuntimeException,前者通过捕获异常从而获取异常信息,后者主要通过规范代码开发、测试通过手段减少运行时异常的发生。   系统的dao、service、controller出现都通过throws Exception向上抛出,最后由springmvc前端控制器交由异常处理器进行异常处理,如下图: 2. 自定义异常   为了区别不同的异常通常根据异常类型自定义异常类,这里我们创建一个自定义系统异常,如果controller、service、dao抛出此类异常说明是系统预期处理的异常信息。(自定义异常继承Exception类) package cn.rodge.ssm.exception; public class CustomerException extends Exception { private static final long serialVersionUID = -3387516993124229948L; private String expMessage; public String getExpMessage() { return expMessage; }

SpringMVC中利用HandlerExceptionResolver完成异常处理

北战南征 提交于 2020-03-29 06:25:17
在解决Controller层中的异常问题时,如果针对每个异常处理相对较为繁琐。在 SpringMVC中提供了HandlerExceptionResolver用于处理捕获到的异常,从而重新定义返回给前端的数据展示方式: 1,实现HandlerExceptionResolver接口; 2,实现方法 resolveException; 3,将自定义类注入到spring中:  若是在普通的web项目中则需要在springmvc的xml文件中手动注入 <bean class="com...common.SpringExceptionResolver" />;   而若是在Springboot中直接用全局异常处理器即可( @ControllerAdvice 结合 @ExceptionHandler(Exception.class) ) /** * 自定义异常返回方式 */ @Slf4j public class SpringExceptionResolver implements HandlerExceptionResolver{ @Override public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex

SpringMVC 处理异常的4种方式

时光怂恿深爱的人放手 提交于 2020-03-29 06:25:02
springmvc处理异常有三种方式: 1.在一个controller中定义一个方法,用@ExceptionHandler注解标注。( 优先级最高 ) @ExceptionHandler public ModelAndView handleException(Exception exception){ ModelAndView mv = new ModelAndView( "error/500" ); mv.addObject( "ex" ,exception); return mv; } @ExceptionHandler public String handleException(Exception exception){ return "error/500" ; } 2.全局异常设置( 下载地址 优先级次之 ) <!-- 将Controller抛出的异常转到特定View,异常映射处理器 --> <bean class = "org.springframework.web.servlet.handler.SimpleMappingExceptionResolver" > <!-- 定义异常处理页面用来获取异常信息的变量名,默认名为exception --> <!--<property name= "exceptionAttribute" value= "ex" ><

SpringBoot添加拦截器

梦想与她 提交于 2020-03-25 13:08:56
自定义拦截器 package com.company.interceptor;import lombok.extern.slf4j.Slf4j;import org.springframework.web.servlet.HandlerInterceptor;import org.springframework.web.servlet.ModelAndView;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;@Slf4jpublic class MyInterceptor implements HandlerInterceptor { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { log.debug("preHandle method is running"); return true; } @Override public void postHandle(HttpServletRequest request,

SpringMVC参数绑定(四)

泄露秘密 提交于 2020-03-25 10:30:42
1.默认支持的参数类型 处理器形参中添加如下类型的参数处理适配器会默认识别并进行赋值。   HttpServletRequest     通过request对象获取请求信息   HttpServletResponse     通过response处理响应信息   HttpSession     通过session对象得到session中存放的对象 2.Model/ModelMap     (1) Model     除了ModelAndView以外,还可以使用Model来向页面传递数据,     Model是一个接口,在参数里直接声明model即可。     如果使用Model则可以不使用ModelAndView对象,Model对象可以向页面传递数据,View对象则可以使用String返回值替代。     不管是Model还是ModelAndView,其本质都是使用Request对象向jsp传递数据。   代码实现: /** * 根据id查询商品,使用Model * * @param request * @param model * @return */ @RequestMapping("/itemEdit") public String queryItemById(HttpServletRequest request, Model model) { //

Shiro安全框架学习笔记

て烟熏妆下的殇ゞ 提交于 2020-03-23 23:03:17
一、Shiro框架简单介绍 Apache Shiro是Java的一个安全框架,旨在简化身份验证和授权。Shiro在JavaSE和JavaEE项目中都可以使用。它主要用来处理身份认证,授权,企业会话管理和加密等。Shiro的具体功能点如下: (1)身份认证/登录,验证用户是不是拥有相应的身份; (2)授权,即权限验证,验证某个已认证的用户是否拥有某个权限;即判断用户是否能做事情,常见的如:验证某个用户是否拥有某个角色。或者细粒度的验证某个用户对某个资源是否具有某个权限; (3)会话管理,即用户登录后就是一次会话,在没有退出之前,它的所有信息都在会话中;会话可以是普通JavaSE环境的,也可以是如Web环境的; (4)加密,保护数据的安全性,如密码加密存储到数据库,而不是明文存储; (5)Web支持,可以非常容易的集成到Web环境; Caching:缓存,比如用户登录后,其用户信息、拥有的角色/权限不必每次去查,这样可以提高效率; (6)shiro支持多线程应用的并发验证,即如在一个线程中开启另一个线程,能把权限自动传播过去; (7)提供测试支持; (8)允许一个用户假装为另一个用户(如果他们允许)的身份进行访问; (9)记住我,这个是非常常见的功能,即一次登录后,下次再来的话不用登录了。 文字描述可能并不能让猿友们完全理解具体功能的意思。下面我们以登录验证为例

springMVC问题集锦

女生的网名这么多〃 提交于 2020-03-19 20:30:05
3 月,跳不动了?>>> 一、 405 request method post not supported 产生原因:在一个方法单元里面,方法声明POST请求: @RequestMapping(value="/login", method=RequestMethod.POST) 登录成功之后发起GET请求: response.sendRedirect("http://www.aaa.com/index.html"); 造成间歇性405异常。 解决方式: 1、GET请求跳转移到view视图里做; 2、使用RedirectView(当然可以配置一些参数) ModelAndView mv = new ModelAndView(); mv.setView(RedirectView(redirectURL)); return mv; 来源: oschina 链接: https://my.oschina.net/u/576855/blog/507647