java SpringMvc笔记

发布于:2024-04-25 ⋅ 阅读:(22) ⋅ 点赞:(0)

springMVC

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

   v: 视图层,html,javascript,vue等

  c:控制层,它是用来接收客户端的请求,并返回响应客户端的组件,Servelet组件

SpringMVC

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

    2、具备IOC和AOP

   3、完全基于注解开发

client(客户端)-(http请求)-tomcat-control(携带数据的优化)

3、基于注解的springmvc框架开发的步骤

   1、新建项目,选择webapp模板;

   2、修改目录,添加缺失的test,java.resources(两套),并修改目录属性

   3、修改pom.xml文件,添加springmvc的依赖,添加servelet的依赖;

   4、添加springmvc.xml的配置文件,指定包扫描,添加视图解析器;

删除web.xml文件新建web.xml

分析web请求

 web请求

 index.jsp请求-DIspatcherServlet(核心处理器)-springmvc的处理器

DIspatcherServerlet必须在web.xml中注册

5、@RequestMapping详细注解(用映射访问服务器访问的路径)

 1)注解加到方法上,是为了此方法注册一个可以访问的名称

@Controller//交给spring 去创建对象

public class MyDemo {

@RequestMapping("/demo")

public String demo(){

return "main";//可以直接跳到jsp上

}

}

<a href="${pageContext.request.contextPath}/demo.action">页面跳转</a>

2)此注解可以加到类上,相当于包名(虚拟路径),区分不同类名相同action的名称

@RequestMapping("/zar")

public class MyDemo1 {

3)区分get和post的请求

6)5种数据提交的优化方式

  1、单个数据提交

2、对象封装数据提交

在提交请求,保证请求参数的实体类型与成员变量的名称保持一致,可以自动创建对象,自动类型转换,自动封装到对象中3WT4g ,自动提交数据

  通过封装类完成数据提交;

3、动态占位符的提交

   仅限于超链接:一杠一直,一杠一大括号,

4)映射名称不一致

   提交请求参数与action方法的形参名称不一致使用注解来解析@RequestParam

5)、手工提交

@RequestMapping("/five")

public String five(HttpServletRequest request){

String name= request.getParameter("2name");

int age= Integer.parseInt(request.getParameter("2age"));

System.out.println("姓名:" + name +"姓名:"+ age);

return "main";

   

7、中文乱码的解决方案

   (1)web.xml中配置中文编码过滤器 fileter解决post请求乱码

<filter>

<filter-name>encode</filter-name>

<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>

<init-param>

<param-name>encoding</param-name>

<param-value>UTF-8</param-value>

</init-param>

<init-param>

<param-name>forceRequestEncoding</param-name>

<param-value>true</param-value>

</init-param>

<init-param>

<param-name>forceResponseEncoding</param-name>

<param-value>true</param-value>

</init-param>

</filter>

<filter-mapping>

<filter-name>encode</filter-name>

<url-pattern>/*</url-pattern>

</filter-mapping>

  

  8、action的返回值

      String:客户端资源的地址,自动拼接前缀和后缀,还可以自动屏蔽拼接字符串,可以返回指定的路径;

      object: 返回json格式对象,自动将对象或集合转为json,使用jacson工具进行转换,必须添加jackson依赖,一般用于ajax请求

     void:无返回值,用于ajax;

     基本数据类型用于ajax;

9、完成ajax请求访问服务器,返回学生集合

 1)添加jacson依赖

2)在webapp目录下新建js目录,添加jquery函数库

3)在index.jsp上添加导入函数库

4)在action添加注解@ResponseBody,用来处理ajax请求

5)在sptringmvc.xml添加注解驱动<mvc:annotationdriven>,他用来解析@ResponseBody

14、springMVC拦截器

   1、针对请求和响应进行的额外处理,在请求和响应的时候添加预处理,后处理和最终处理

   2拦截器的执行时机

     preHandle:在请求之前进行操作,预处理;

     postHandle:在请求处理之后,但结果还没有渲染前进行操作,可以改变相应

    aftercompletion:所有请求响应结束后善后工作,清理对象,关闭资源,善后处理

拦截器实现的方式

   继承HandlerInterceptorAdapter

  实现 HandlerInterceptor接口

拦截器实现的步骤

  1、改造登陆方法,在session中存储用户信息,用于进行权限验证

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

  3、在springmvc.xml文件中注册拦截器