自建站外贸平台有哪些比较好,公司邮箱一般用哪个,小程序免费网站,vip视频网站怎么做在分享SpringMVC之前#xff0c;我们先对MVC有个基本的了解。MVC(Model-View-Controller)指的是一种软件思想#xff0c;它将软件分为三层#xff1a;模型层、视图层、控制层 模型层即Model#xff1a;负责处理具体的业务和封装实体类#xff0c;我们所知的service层、poj… 在分享SpringMVC之前我们先对MVC有个基本的了解。MVC(Model-View-Controller)指的是一种软件思想它将软件分为三层模型层、视图层、控制层 模型层即Model负责处理具体的业务和封装实体类我们所知的service层、pojo都属于模型层 视图层即view它是前端的交互页面也就是用户可以直观看到的东西例如登录界面商城界面 控制层即Controller它负责接收请求的接收和分发将请求分发给指定的业务逻辑 1、什么是Spring MVC 简单来说SpringMVC是Spring对MVC设计思想的一种实现实现的一个用于接收Web请求响应请求的模块其简易架构如图所示 其中核心组件及其作用如下 DispatcherServlet前端控制器不需要开发由MVC框架提供 作用统一处理请求和响应整个流程控制的中心由它调用其它组件处理用户的请求相当于是一个中转站的功能将请求发给其他组件前必须要经由它 HandlerMapping处理器映射器不需要开发由框架提供 作用根据请求的url、method等信息查找Handler即控制器方法 Handler处理器需要工程师开发就是Controller 作用在DispatcherServlet的控制下Handler对具体的用户请求进行处理 HandlerAdapter处理器适配器不需要开发由框架提供 作用通过HandlerAdapter对处理器控制器方法进行执行 HandlerInterceptor拦截器, 需要工程师开发 作用实现请求响应的共性处理 ViewResolver视图解析器(前缀viewname后缀)不需要工程师开发由框架提供 作用进行视图解析得到相应的视图例如ThymeleafView、InternalResourceView、RedirectView View视图 作用将模型数据通过页面展示给用户。 当前端发送一个请求后(请求即一个url路径)会先到达MVC过滤器通过过滤器筛选后通过的请求接下来会来到DispatcherServlet开始请求的分发在分发之前它会先和HandlerMapping进行交互HandlerMapping会判断请求路径中url是否有对应的的Controller可以进行处理如果有则将该信息返回给DispatcherServlet后由它来调用对应的Controller处理请求在调用Controller之前请求还会经过一个HandlerInterceptor拦截器(拦截器功能和过滤器相似)在拦截器中就可以进行一些控制用户的访问操作Controller接收请求后调用该请求所对应的Service业务以及数据库数据库返回数据后再将该返回的数据逐层返回至前端返回的数据即为服务器的responce(响应)。
2、SpringMVC运行流程详解图(面试可能会用到) 3、SpringBoot 整合MVC依赖 添加spring-web依赖该框架提供了Spring MVC依赖支持由于Spring boot Web的核心是SpringMVC所以Spring基础框架的所有功能都适用与Spring boot Web例如组件扫描、自动装配等
dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId
/dependency
4、SpringMVC——RESTful RestFul是一种以网络为基础构架一种架构风格是一组架构约束条件和原则不是标准不是规范。” 如果一个架构符合REST的约束条件和原则我们就称它为RESTful架构 REST原则
①URI代表着一个资源是一个实体应该是名词而不要把具体的动作放在URL中对资源的操作应该通过HTTP的动词来实现 传统方式操作资源我们都是例如(修改和删除类似) http://localhost:8080/admin/getUser 表示查询操作 http://localhost:8080/admin/addUser 表示新增操作 使用REST风格之后使用如下命令(修改和删除类似) GET http://localhost:8080/admin/user 表示查询操作 POST http://localhost:8080/admin/user 表示新增操作 ②使用适合的状态码而不应该全部都返回状态码 200 常用状态码 200 – OK – 一切正常 201 – OK – 新的资源已经成功创建 204 – OK – 资源已经成功删除 304 – Not Modified – 客户端使用缓存数据 400 – Bad Request – 请求无效需要附加细节解释如 JSON无效 401 – Unauthorized – 请求需要用户验证 403 – Forbidden – 服务器已经理解了请求但是拒绝服务或这种请求的访问是不允许的。 404 – Not found – 没有发现该资源 422 – Unprocessable Entity – 只有服务器不能处理实体时使用比如图像不能被格式化或者重要字段丢失。 500 – Internal Server Error – API开发者应该避免这种错误。 5、响应结果对象设计 设计响应结果对象的主要目的是为了在 API 接口中提供一种统一的数据格式便于客户端程序进行处理和解析。通过定义响应结果对象可以将 API 接口返回的数据封装成一个标准的数据结构这样客户端程序就能够定位出需要的数据而不必关心底层的具体实现。 响应结果对象通常包含以下属性
状态码 (status code)表示请求处理的状态如 200 表示成功400 表示请求参数错误等。错误信息 (error message)当发生错误时返回的错误提示信息以便客户端程序进行修复或者调试。数据结果 (data)API 接口返回的请求结果数据可能是一个单独的对象或者一个数组等 响应结果代码的设计
Data
public class JsonResult {/**状态码*/private Integer state 1; //1表示OK,0表示Error/**状态信息*/private String message ok;/**封装正确的查询结果*/private Object data;public JsonResult(){}//在修改成功或删除成功时会使用的构造方法例如将message改为“修改成功/删除成功等”public JsonResult(String msg){this.message msg;}//当出现异常时使用的构造方法public JsonResult(Integer state,String message){this(message);this.state state;}//当查询成功时使用的构造方法public JsonResult(Object data){ //new JsonResult(list)this.data data;}//当出现异常时,可以通过此构造方法对异常信息进行封装public JsonResult(Throwable exception){ //new JsonResult(exception);this(0,exception.getMessage()); //该方法还会调用第三个构造方法}}
6、统一异常处理设计 异常处理类是一种用于在程序执行期间捕获并处理异常情况的机制如果没有异常处理类一旦程序执行发生问题Controller会将该问题抛给前端控制器前端控制器会将错误直接抛给用户而用户并不希望看到这些错误也没办法理解错误的含义我们希望程序能够拦截错误并且告诉开发者让我们去接解决。 另外异常处理类可以将异常处理逻辑与业务逻辑分离开来使程序的代码更加清晰、易于理解和维护并且使得我们只需要编写一次异常处理逻辑而不是在每个代码块中都写一遍简化代码。
异常处理逻辑 统一异常处理代码设计
/*RestControllerAdvice 注解描述的类为全局异常处理类启动时会交给Spring管理*/
RestControllerAdvice //是ControllerAdvice和ResponseBody的组合
public class GlobalExceptionHandler {
//表示为当前异常处理类生成一个日志对象private static final Logger log LoggerFactory.getLogger(GlobalExceptionHandler.class);/*ExceptionHandler注解描述的方法为异常处理方法,注解中定义的异常类型为方法可以处理的异常类型*/ExceptionHandler(RuntimeException.class)public JsonResult doHandleRuntimeException(RuntimeException e){e.printStackTrace();log.error(exception msg is {},e.getMessage());//该方法会调用JsonResult中的异常处理构造方法return new JsonResult(e);}//可以定义多个异常处理方法
}
—————————————————————
路漫漫其修远兮吾将上下而求索~ 到此关于SpringMVC框架的讲解就暂时结束啦后续随着博主的功力增加会不断更新(#^.^#)
写作不易如果你认为博主写的不错
请点赞、关注、评论给博主一个鼓励吧您的鼓励就是博主前进的动力。