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)动态占位符提交
仅限于超链接或地址栏提交数据,它是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注解

请求转发和重定向
请求转发基于服务器的跳转 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)改造登录方法,在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;  //执行请求
    }
}

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>

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>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值