• SpringMVC小记


    SpringMVC

    什么是SpringMVC

    它是基于MVC开发模式的框架,用来优化控制器,它是Spring家族的一员.它也具备IOC和AOP

    什么是mvc?

    它是一种开发模式,它是模型视图控制器的简称,所有的web应用都是基于MVC开发

    M:模型层:包含实体类,业务逻辑层,数据访问层

    V:视图层,html,JavaScript,vue 用来显示数据

    C:控制器,它是用来接收科幻短的请求,并返回响应到客户端的组件

    优点

    1)轻量级,基于MVC的框架

    2)易于上手,容易理解,功能强大

    3)它具备IOC和AOP

    4)完全基于注解开发

    @RequestMapping
    1)此注可加在方法是,是为方法注册一个可以访问的名称(路径)
    2)此注解可以加在类上,相当于是包名,区分不同类中相同的action的名称
    3)可以区分post和get请求
        
    
    • 1
    • 2
    • 3
    • 4
    • 5

    五种提交数据的优化方式
    1)单个数据提交
    2)对象封装提交数据
    在提交请求中,保证请求参数的名称与实体类中成员变量的名称一致,则可以自动提交数据,自动类型转换,自动封装数据到对象中
    3)动态占位符提交
    仅限于超链接或地址栏提交数据,它是1杠1址1大括号。使用注解来进行
    @PathVariable(“uname”)====>用来解析路径中的请求参数
    4)映射名称不一致
    提交请求参数与action方法的形参的名称不一致,使用注解来解析
    @RequestParam =====>专门用来解决名称不一致
    5)手工提取数据
    处理器方法的返回值
    1)String:客户端资源的地址,自动拼接前缀和后缀,还可以屏蔽自动拼接字符串,可以指定返回的路径
    2)Object:返回json格式的对象,自动将对象或集合转为json,使用的是Jackson工具进行转换,必须要提那家jackson依赖,一般用户ajax请求
    3)void:无返回值,一般用于ajax请求
    4)基本数据类型,用于ajax请求
    5)ModelAndView:返回数据和视图对象
    完成ajax请求访问服务器,返回学生集合
    1)添加jackson依赖

     <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-databind</artifactId>
      <version>2.9.8</version>
    </dependency>
    
    
    
        2)在webapp目录下新建js目录,添加jQuery函数库
        3)在index.jsp页面上导入函数库
        4)在action上添加注解@ResponseBody,用来出来ajax请求
        5)在springmvc.xml文件中添加注解驱动<mvc:annotationdriven/>,
        它用来解析@ResponseBody注解
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    请求转发和重定向
    请求转发基于服务器的跳转 forward:
    重定向是基于客户端的跳转 Redirect:

    springmvc默认参数概念
    不需要去创建,直接拿来使用
    HttpServletRequest:
    HttpServletResponse
    HttpSession
    Model
    Map
    ModelMap
    注意:Map,Model,ModelMap和request一样,都是用请求转发作用域进行数据传递,所以服务器端的跳转必须是请求转发

    SpringMVC的拦截器

    针对请求和响应进行额外的处理,在请求和响应的过程中添加预处理,后处理和最终处理

    拦截器的执行时机

    1)preHandle():在请求处理之前进行操作,预处理

    2)postHandle():在青丘被处理之后,但结果还没有渲染前进行操作,可以改变响应结果,后处理

    3)afterCompletion:在所有的请求响应结束后执行善后工作,清理对象,关闭资源,最终处理

    拦截器实现的两种方式

    1)继承HandlerInterceptorAdapter的父类

    2)实现HandlerInterceptorAdapter接口,实现的接口(接口中的方法默认实现),推荐使用实现接口的方式

    拦截器实现步骤

    public interface HandlerInterceptor {
        default boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
            return true;
        }
    
        default void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, @Nullable ModelAndView modelAndView) throws Exception {
        }
    
        default void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, @Nullable Exception ex) throws Exception {
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    1)改造登录方法,在session中存储用户信息,用于权限验证 request.getSession().setAttribute(“users”,name);

    2)开发拦截器的功能,实现HandlerInterceptorAdapter接口,重写preHandle()方法

    public class LoginInterceptor implements HandlerInterceptor {
       public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
    //        是否登陆过的判断
           if (request.getSession().getAttribute("users")==null){
    //           此时没有登录,打回到登录页面 给出提示
               request.setAttribute("msg","请返回重新登录");
               request.getRequestDispatcher("/WEB-INF/jsp/login.jsp").forward(request,response);
               return false;
           }
    
           return true;  //执行请求
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    3)在springmvc.xml中注册拦截器

    <!--    注册拦截器-->
        <mvc:interceptors>
            <mvc:interceptor>
    <!--            映射要拦截的请求-->
                <mvc:mapping path="/**"/>
    <!--            设置放行的请求-->
                <mvc:exclude-mapping path="/showLogin"/>
                <mvc:exclude-mapping path="/login"/>
    <!--            配置具体的拦截器实现功能的类-->
                <bean class="com.huaze.interceptor.LoginInterceptor"></bean>
            </mvc:interceptor>
        </mvc:interceptors>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    ps:404找不到资源 配置视图解析器

    <!--添加视图解析器-->
        <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
            <property name="prefix" value="/WEB-INF/JSP"></property>
            <property name="suffix" value=".jsp"></property>
        </bean>
    
    • 1
    • 2
    • 3
    • 4
    • 5
  • 相关阅读:
    机器学习简述
    idea spring boot java maven 依赖重复报错解决
    mysql中explain使用说明
    React中:富文本编辑器(react-quill),自定义上传图片到阿里云
    设计模式之责任链模式
    算法:经典贪心算法--跳一跳[2]
    html网页设计大学生作业成品——公益校园网站设计与实现(HTML+CSS+JavaScript)
    Linux下的一些基础功能
    【深度学习之模型优化】模型剪枝、模型量化、知识蒸馏概述
    捷诚管理信息系统 SQL注入漏洞复现
  • 原文地址:https://blog.csdn.net/weixin_51270766/article/details/125494500