modelandview

springMVC请求流程详解

隐身守侯 提交于 2019-11-28 01:44:48
springMVC请求流程详解 SpringMVC框架是一个基于请求驱动的Web框架,并且使用了‘前端控制器’模型来进行设计,再根据‘请求映射规则’分发给相应的页面控制器进行处理。 (一)整体流程 具体步骤: 1、 首先用户发送请求到前端控制器,前端控制器根据请求信息(如 URL)来决定选择哪一个页面控制器进行处理并把请求委托给它,即以前的控制器的控制逻辑部分;图中的 1、2 步骤; 2、 页面控制器接收到请求后,进行功能处理,首先需要收集和绑定请求参数到一个对象,这个对象在 Spring Web MVC 中叫命令对象,并进行验证,然后将命令对象委托给业务对象进行处理;处理完毕后返回一个 ModelAndView(模型数据和逻辑视图名);图中的 3、4、5 步骤; 3、 前端控制器收回控制权,然后根据返回的逻辑视图名,选择相应的视图进行渲染,并把模型数据传入以便视图渲染;图中的步骤 6、7; 4、 前端控制器再次收回控制权,将响应返回给用户,图中的步骤 8;至此整个结束。 (二)核心流程 具体步骤: 第一步:发起请求到前端控制器(DispatcherServlet) 第二步:前端控制器请求HandlerMapping查找 Handler (可以根据xml配置、注解进行查找) 第三步:处理器映射器HandlerMapping向前端控制器返回Handler

SpringBoot 全局异常配置

不羁岁月 提交于 2019-11-28 00:44:18
在日常web开发中发生了异常,往往是需要通过一个统一的异常处理来保证客户端能够收到友好的提示。 一、默认异常机制 默认异常处理(SpringBoot 默认提供了两种机制,一种是针对于web浏览器访问的错误页面响应,另一种则是针对于 接口测试工具等 的参数响应处理): 原理:SpringBoot默认提供了程序出错的结果映射路径/error。这个/error请求会在BasicErrorController中处理,其内部是通过判断请求头中的Accept的内容是否为text/html来区分请求是来自客户端浏览器(浏览器通常默认自动发送请求头内容Accept:text/html)还是客户端接口的调用,以此来决定返回页面视图还是 JSON 消息内容。 二、自定义json格式异常响应 通过 @ControllerAdvice / @RestControllerAdvice 和 @ExceptionHandler 注解全局异常自定义响应类 首先定义响应状态码枚举类 public enum ResultCode { SUCCESS(200),//成功 FAIL(400),//失败 UNAUTHORIZED(401),//未认证(签名错误) NOT_FOUND(404),//接口不存在 INTERNAL_SERVER_ERROR(500);//服务器内部错误 private final int

springMVC 几种页面跳转方式

♀尐吖头ヾ 提交于 2019-11-27 23:53:58
今天主要写一下响应界面跳转的几种方式 1.在注解的方式中 1.1通过HttpServletResponse的API直接输出(不需要配置渲染器) controller类的主要代码 @Controller public class RequestController{ @RequestMapping("/resp") public void handleRequest(HttpServletRequest req, HttpServletResponse resp) throws Exception { resp.getWriter().println("hello HttpServletResponse"); }    web.xml配置 <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" version="3.1"> <servlet>

Springboot 错误处理机制

纵然是瞬间 提交于 2019-11-27 22:24:30
SpringBoot默认的错误处理机制 即我们常见的白色的ErrorPage页面 浏览器发送的请求头: 如果是其他的请求方式,比如客户端,则相应一个json数据: 原理;是通过 ErrorMvcAutoConfiguration,错误处理的自动配置; 给容器中添加了以下组件 1、DefaultErrorAttributes: 帮我们在页面共享信息; @Override public Map<String, Object> getErrorAttributes(RequestAttributes requestAttributes, boolean includeStackTrace) { Map<String, Object> errorAttributes = new LinkedHashMap<String, Object>(); errorAttributes.put("timestamp", new Date()); addStatus(errorAttributes, requestAttributes); addErrorDetails(errorAttributes, requestAttributes, includeStackTrace); addPath(errorAttributes, requestAttributes); return

静态资源访问与拦截

ぃ、小莉子 提交于 2019-11-27 19:12:44
静态资源访问映射: 在前几年的web开发中,url通常是以.do、.action、.xhtml等等作为结尾,现在是Rest的时代,这样的url显得非常ugly。老版本的Spring MVC不能很好的处理静态资源,所以在web.xml中通常配置 DispatcherServlet 的 url-pattern 类似.do、.action这种。因为如果请求映射配置成 / 的话,Spring MVC将拦截所有的请求(当然包括静态资源的请求),交由 Controller 处理,显然静态资源的请求到了Controller那里必然会导致 no handler mapping 的错误。 那么怎么样在配置请求映射为 \ 的情况下,让Spring MVC能拦截所有请求,同时将静态资源的请求交给web服务器来处理呢?在Spring3.0的版本中,Spring的团队给出了两种解决方案。 web.xml中DispatcherServlet配置 1 2 3 4 5 6 7 8 9 10 < servlet > < servlet-name > springmvc </ servlet-name > < servlet-class > org.springframework.web.servlet.DispatcherServlet </ servlet-class > < load-on-startup >

基于SSM的物业管理系统-JSP MYSQL小区物业费管理系统

不想你离开。 提交于 2019-11-27 16:10:45
"基于SSM的物业管理系统-java物业管理系统-mysql数据源物业缴费水电气 1.包含源程序,数据库脚本。代码和数据库脚本都有详细注释。 2.课题设计仅供参考学习使用,可以在此基础上进行扩展完善 代码已经上传github,下载地址 https://github.com/21503882/house 开发环境: Eclipse ,MYSQL,JDK1.7,Tomcat 7 涉及技术点: MVC模式、SpringMvc、Mybatis、Spring、HTML、JavaScript、CSS、JQUERY、DWR、Ajax等 系统采用Mybatis框架实现ORM对象关系映射,前台JSP实现,后台springMvc映射,使用Spring框架进行整合。适合学习J2EE的一段时间的熟手,代码思路清晰,注解详细,数据库用的是mysql5.1,服务器用的tomcat7,JDK版本1.7. 编程软件Eclispe J2EE版本。是典型MVC架构,并且前后台分离 具体功能这里不再赘述,请下方看系统详细演示图,如果大家有什么疑问或者什么不懂得可以在下方给我留言,或者你有更好的建议等等都可以的,也可以找我和我一起交流沟通,互相学习进步!但是dai。ma。you。chang 好了下面让我来给大家展示一下这个项目的页面效果: --------------------- " 4.2.1 管理员子系统功能划分

开始学SpringMVC之注解

倖福魔咒の 提交于 2019-11-27 10:55:45
概述 SpringMVC不仅提供了Xml的配置方式,还提供了注解的方式来声明一个Controller,本文属于SpringMVC的入门级内容,仅供学习分享使用,如有不足之处,还请指正。 SpringMVC注解方式的优点 XML配置起来有时候冗长,此时注解可能是更好的选择。 注解最大的好处就是简化了XML配置;其实大部分注解一定确定后很少会改变,在一些中小项目中使用注解反而提供了开发效率。 注解相对于XML的另一个好处是类型安全的,XML只能在运行期才能发现问题。 采用注解的方式,一个类可以有多个Action。 SpringMVC支持注解步骤 1. 配置dispatcher-servlet.xml文件 如下所示,主要配置注解的扫描,和支持MVC注解两项内容 1 <?xml version="1.0" encoding="UTF-8"?> 2 <beans xmlns="http://www.springframework.org/schema/beans" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4 xmlns:context="http://www.springframework.org/schema/context" 5 xmlns:mvc="http://www.springframework.org

Spring Boot 系列(八)@ControllerAdvice 拦截异常并统一处理

泪湿孤枕 提交于 2019-11-27 08:14:12
原文: Spring Boot 系列(八)@ControllerAdvice 拦截异常并统一处理 在spring 3.2中,新增了@ControllerAdvice 注解,可以用于定义@ExceptionHandler、@InitBinder、@ModelAttribute,并应用到所有@RequestMapping中。参考: @ControllerAdvice 文档 一、介绍 创建 MyControllerAdvice,并添加 @ControllerAdvice注解。 package com.sam.demo.controller; import org.springframework.ui.Model; import org.springframework.web.bind.WebDataBinder; import org.springframework.web.bind.annotation.*; import java.util.HashMap; import java.util.Map; /** * controller 增强器 * @author sam * @since 2017/7/17 */ @ControllerAdvice public class MyControllerAdvice { /** * 应用到所有@RequestMapping注解方法

SpringMVC之拦截器

£可爱£侵袭症+ 提交于 2019-11-27 07:50:01
SpringMVC中的拦截器对应了Web基础中的过滤器。 拦截器和过滤器的区别: 过滤器依赖于Servletr容器,拦截器是springmvc自带的,不依赖容器 用法 1.定义拦截器 public class FirstIntercepter implements HandlerInterceptor{ /** * 进入Handler之前调用的方法 * 处理: * 用于身份确认和授权 * 比如确认当前请求是否登陆,如果登陆就方法,否则拦截跳回登陆界面 * @return * true 放过 * false 拦截 */ @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { System.out.println("preHandle 执行了..."); return true; } /** * 进入Handler之后,返回ModelAndView对象之前执行 * 可以修改调整的视图 */ @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object

Spring全家桶之SpringMVC(三)

妖精的绣舞 提交于 2019-11-27 05:06:18
    Spring MVC单个接收表单提交的数据     单个接收表单提交的参数       在实际开发中通过会在spring MVC的Controller里面接收表单提交过来的参数,这块代码该怎么去编写呢?     示例:     编写一个带有表单的jsp(我这里直接使用了index.jsp): <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>Title</title> </head> <body> <form action="${pageContext.request.contextPath}/regist1.do" method="post"> 姓名:<input type="text" name="username"><br> 年龄:<input type="text" name="age"><br> <input type="submit" value="提交"> </form> </body> </html>     之后创建一个controller来接收这个表单提交的值:    package controller; import javax.servlet.http.HttpServletRequest; import javax