modelandview

springmvc运行流程简单解释(源码解析,文末附自己画的流程图)

懵懂的女人 提交于 2019-12-08 21:08:29
首先看一下DispatcherServlet结构: 观察HandlerExecutionChain对象的创建与赋值,这个方法用来表示执行这个方法的整条链。 进入getHandler方法: 此时的变量handlerMappings为: 刚好对应我们的三个方法,说明了我们的方法映射全部存放在handlerMappings中,通过遍历handlerMapping来进行操作。 通过HandlerMapping来对HandlerExecutionChain赋值。 执行完这一句参数有,说明获取了一条完整的链,可以来进行执行了,注意此时获取到的是所有拦截器,因为必须要走过所有拦截器。 通过HandlerExecutionChain对象来获取HandlerAdapter对象,通过这个对象进行控制器方法的调用,并返回ModelAndView对象,再通过ModelAndView对象调用解析器创建视图对象,再通过视图对象的渲染方法来进行最终的用户的需求结果处理。 完成这一步后使用ha调用拦截器的preHandle方法,如果放行,则执行handle方法,不放行,则返回: 进入此方法中: 下一步就是执行handler处理方法,执行完方法返回一个ModelAndView对象,使用此对象调用视图解析器创建视图对象,再根据视图对象调用其渲染方法将模型中的数据以特定的格式传输给用户。 继续执行:

Springmvc RESTful支持

生来就可爱ヽ(ⅴ<●) 提交于 2019-12-08 07:43:16
1 Springmvc RESTful支持 1.1 添加DispatcherServlet的rest配置 1.2 URL 模板模式映射 1.3 静态资源访问 1 Springmvc RESTful支持 1.1 添加DispatcherServlet的rest配置 < servlet > < servlet -name > springmvc -servlet -rest < /servlet -name > < servlet -class > org . springframework . web . servlet . DispatcherServlet < /servlet -class > < init -param > < param -name > contextConfigLocation < /param -name > < param -value > classpath:spring/springmvc . xml < /param -value > < /init -param > < /servlet > < servlet -mapping > < servlet -name > springmvc -servlet -rest < /servlet -name > < url -pattern > / < /url -pattern > <

java 实现单点登录及后门登录

别等时光非礼了梦想. 提交于 2019-12-07 18:48:21
单点登录:实质就是传一个登录id过来,到数据库中查出此id对应的用户信息,并将用户信息放入session中。 <span "><strong> </strong>/** * 单点登录 * * @param loginId * @param session * @return */ @Outer @RequestMapping("/login") public ModelAndView login(String loginId, HttpSession session) { // 登录跳转页面 String view = "common/login"; // 单点登录信息 if (StringUtils.isBlank(loginId)) { return new ModelAndView(view, "message", "用户信息丢失,请重新登录!"); } // 获取当前登录用户信息 UserInfo userInfo = userService.getUserInfo(loginId); if (userInfo == null) { return new ModelAndView(view, "message", "用户信息不存在,请重新登录!"); } // 当前系统只支持个体户用户和个人用户登录 // String userType = userInfo

0025SpringMVC的几种响应方式

微笑、不失礼 提交于 2019-12-07 18:43:31
本文主要涉及到一下几种响应方式: 1、返回字符串2、返回void3、返回ModelAndView4、转发关键字forward和重定向关键字redirect返回字符串5、ajax调用返回json 具体实现参看代码: responseTest.jsp <%-- Created by IntelliJ IDEA. User: Administrator Date: 2019/12/7 Time: 8:41 To change this template use File | Settings | File Templates.--%><%@ page contentType="text/html;charset=UTF-8" language="java" %><html><head> <title>Title</title> <script type="text/javascript" src="js/jquery.min.js"></script> <script> //页面加载,绑定单机事件 $(function(){ $("#btn").click(function () { //测试点击button按钮是否能够正确弹出hello,发现点击无反应 //原因是引入的jquery.min.js资源文件也被前端控制器拦截了, // 需要在springmvc

使用ModelAndView和过滤器实现获取HTML请求的参数

旧时模样 提交于 2019-12-06 20:14:34
需求:获取HTML的请求参数 类似: 实现思路: 1、利用过滤器拦截所有HTML请求 2、利用ModelAndView把参数保存起来 3、在HTML页面使用${key}把参数获取到 一、利用过滤器拦截所有HTML请求 web.xml配置: <!-- html --> <filter> <filter-name>html</filter-name> <filter-class>core.filter.HTML</filter-class> </filter> <filter-mapping> <filter-name>html</filter-name> <url-pattern>*.html</url-pattern> </filter-mapping> 过滤器: package core.filter; import java.io.IOException; import java.util.Enumeration; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import

Spring Boot 拦截器

丶灬走出姿态 提交于 2019-12-06 16:27:32
本文将介绍拦截器的作用和简单的使用方法,会已登录拦截的需求作为例子来解释。 拦截器的作用:主要是为了用来实现对request请求进行统一处理的操作,比如对请求的编码格式修改,进行业务上的请求拦截等等。 拦截器的实现: 先创建一个配置类,用来将拦截器注册到spring中。 1 import org.springframework.context.annotation.Configuration; 2 import org.springframework.web.servlet.config.annotation.InterceptorRegistration; 3 import org.springframework.web.servlet.config.annotation.InterceptorRegistry; 4 import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; 5 6 /** 7 * @author: DengMin 8 * @create: 2019-12-06 10:22 9 **/ 10 11 @Configuration 12 public class TestConfig extends WebMvcConfigurerAdapter { 13 14

javase基础知识03-异常Exception和自定义异常及测试

北慕城南 提交于 2019-12-06 12:57:58
1.异常的分类 Error:这是我们处理不了的异常。 我们要处理的异常有两种: 编译时被检测异常: 该异常在编译时,如果没有处理(没有抛也没有try),编译失败。该异常会被eclipse标识,代表这可以被处理。 运行时异常(编译时不检测) 该异常的发生说明,我们需要对某些代码进行修正。 2.异常体系的根类是:Throwable Throwable: |--Error: 重大的问题,我们处理不了。也不需要编写代码处理。比如说内存溢出。 |--Exception: 一般性的错误,是需要我们对编写的代码进行处理。 |--运行期异常: 在运行时出问题,需要修正代码 |--编译期异常,就是一般的异常(编译期异常) 3.常见异常 ConcurrentModificationException并发修改异常 IndexOutOfBoundsException元素越界 NoSuchElementException没有这样的元素 ClassNotFoundException找不到类 java.lang.IllegalStateException 非法参数异常 NullPointerException空指针 等等。。。。。 4.Throwable类的三个重要方法 getMessage():获取异常信息,返回字符串。 toString():获取异常类名和异常信息,返回字符串。

SpringMVC常用基础知识

放肆的年华 提交于 2019-12-06 12:45:18
常用注解元素 @Controller 标注在 Bean 的类定义处 @RequestMapping 真正让 Bean 具备 Spring MVC Controller 功能的是 @RequestMapping 这个注解 @RequestMapping 可以标注在类定义处,将 Controller 和特定请求关联起来; 还可以标注在方法签名处,以便进一步对请求进行分流 配套的属性有: value 需要跳转的地址 method 基于 RestFul 的跳转参数 , 有 RequestMethod.get post put delete 等 params 符合某个参数的时候才调用该方法 Headers 符合头信息的时候才调用 @SessionAttributes 将结果放入 session 内 @ModelAttribute 存储在响应内容 ModelMap 或者 ModelAndView 进行保存值传到前台,当如果你需要保存值比较少 的时候可以采用这种方式进行保存值并且保存到前台显示 在默认情况下, ModelMap 中的属性作用域是 request 级别,相当于 HttpServletRequest 中的 request.setAttribute() 一样 , 在 JSP 视图页面中通过 request.getAttribute(“attribute name”) 或者通过 ${

7.学习springmvc的异常处理

╄→гoц情女王★ 提交于 2019-12-06 11:06:21
一.页面的异常处理流程 二.建立项目springmvc04_exception 1.编写index.jsp页面: 1 <%@ page contentType="text/html;charset=UTF-8" language="java" %> 2 <html> 3 <head> 4 <title>Title</title> 5 </head> 6 <body> 7 8 <h3>异常测试</h3> 9 10 <a href="user/testException">异常测试</a> 11 12 </body> 13 </html> 2.编写控制器方法: 编写UserController: 1 @Controller 2 @RequestMapping("/user") 3 public class UserController { 4 5 @RequestMapping("/testException") 6 public String testException() throws SysException { 7 8 System.out.println("testException执行了..."); 9 10 //模拟异常 11 try { 12 int a = 10 / 0; 13 } catch (Exception e) { 14 //控制台打印异常信息 15 e

Spring Boot 处理异常返回json

北城以北 提交于 2019-12-06 10:25:50
spring boot 老版本处理异常 对于浏览器客户端,返回error数据 对于非浏览器返回json数据, 主要取决于你的请求head 是什么 但是当我们自定义了: 老版本无论请求什么都会返回json异常数据, @ControllerAdvice public class UserExceptionHandler { @ResponseBody @ExceptionHandler(UserNotFoundExits.class) public Map<String, Object> handleException(Exception e){ Map<String,Object> map = new HashMap<>(); map.put("code","user.notexist"); map.put("message",e.getMessage()); return map; } } 通过阅读源码, 新版本的异常处理 就是我们上面强制定义了 异常处理类 ,也会按照 浏览器返回error ,客户端返回json @RequestMapping( produces = {"text/html"} ) public ModelAndView errorHtml(HttpServletRequest request, HttpServletResponse response) {