栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

SpringMVC学习笔记

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

SpringMVC学习笔记

什么是springMVC?

它是基于mvc开发模式的框架,用来优化控制器,它是spring家族的一员,springMVC也具备IOC和AOP功能

什么是MVC?

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

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

View:视图层,html,javaScript,vue等都是视图层,用来显示数据

Controller:控制器,它是用来接收客户端的请求,并返回相应到客户端的组件,Servicet就是组件

创建一个SpringMVC项目步骤是什么?

第一步:创建一个空工程,创建maven项目,使用webapp模板

第二步:创建好的maven项目,目录有缺失,我们自行创建好

src目录下创建test目录

main目录下创建java和resources目录

test目录下也建java和resources目录

并修改目录的属性

第三步:修改pom.xml文件

添加springMVC依赖,添加servlet依赖

所有web请求都是基于servlet

 在指定资源文件


    
      
        src/main/java
        
          ***.properties
        
      
      
        src/main/resources
        
          ***.properties
        
      
    
  

第四步:在resources目录下新建springmvc.xml文件

 在webapp目录下新建admin目录,在admin目录下新建main.jsp

 第五步:webapp-->WEB-INF-->web.xml文件版本太低删掉,重新创建一个,file-->project Settings-->选中模块下的web减号删除,在点加号新建一个,随便改一个名字,不能用web,新建完成后在重命名为web.xml

 第六步:

创建一个DemoAction类

类的上方加@Controller注解,该类代表控制器类(控制层/表现层)

*方法上添加@RequestMapping("/ demo"),在方法上添加这个注解是为这个方法注册一个可以访问的路径

*类上添加@RequestMapping("/ demo"),相当于包名,访问方法上的路径,还需要添加类上的路径

解决post请求中文乱码问题

首先在web.xml文件中配置中文编码过滤器

设置以下三个参数的值

private java.lang.String encoding;
private boolean forceRequestEncoding;
private boolean forceResponseEncoding;


        filter
        org.springframework.web.filter.CharacterEncodingFilter
        
        
            encoding
            UTF-8
        
        
            forceRequestEncoding
            true
        
        
            forceResponseEncoding
            true
        
    
    
        filter
        /*
    

处理器的方法返回值

使用@Contoller注解的处理器的方法,其返回值常用的有四种类型:

第一种:ModelAndView,返回数据和视图对象,现在用的少

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

第三种:无返回值void,一遍用于ajax请求

第四种:返回对象类型,返回json格式的对象,自动将对象或集合转为json,使用jackson工具进行转换,必须要添加jackson依赖,一般用于ajax请求。

-------------------------------------------------------

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

1)添加jackson依赖

 
    
      com.fasterxml.jackson.core
      jackson-databind
      2.9.8
    

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

3)在index.jap页面上导入函数库。

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

5)在resources目录下springmvc.xml文件中添加驱动注解,它用来解析@ResponseBody注解

  
    
    
    

--------------------------------------------------------------

 在springmvc中我们已经设置好默认的跳转路径(前缀后缀)那么想跳转到其他路径怎么办?

resources目录下的springmvx.xml配置文件中已经配置好默认的跳转路径,即前缀和后缀

 
    
    
    
        
        
        
        
    

这种情况下就用到了两个字符串:重定向:redirect: 和 请求转发:forward:

在bjpowernode-->controller目录下类中添加以下方法

请求转发到JSP页面forward:用法

 @RequestMapping("/five")
    public String five(){
        System.out.println("请求转发到页面");
        return "forward:/admin/login.jsp";
    }

请求转发到action,forward:用法

@RequestMapping("/two")
    public String two(){
        System.out.println("请求转发到action");
        //forward可以屏蔽前缀后缀的的拼接,请求转发就使用它
        return "forward:/otch.action";//默认是请求转发,使用视图解析器拼接前缀后缀进行跳转
    }

使用redirect:重定向到JSP页面

@RequestMapping("/four")
    public String four(){
        System.out.println("重定向页面");
        return "redirect:/admin/main.jsp";
    }

使用redirect:重定向到action

@RequestMapping("/three")
    public String three(){
        System.out.println("重定向action");
        return "redirect:/otch.action";
    }

-----------------------------------------------------------

日期处理

日期的提交处理

A单个日期处理:要使用注解@DateTimeFormat,此注解必须搭配springmvc.xml文件中的标签

首先在jsp页面写一个表单提交一个日期

 由于日期是不是被服务器直接接收的,所以要使用@DateTimeFormat注解,使用这个注解需要在springmvc.xml文件中注册

@DateTimeFormat注解的patter属性是设置注入日期的样式,JSP页面输入一个日期,jsp页面输入的日期其实是字符串,而@DateTimeFormat注解负责将时间字符串转换为时间注入方法形参

由于java中的时间,输出比较丑,所以用SimpleDateFormat类来美化一下

对比

 B.类中全局日期处理

优点:只需要添加一个@InitBinder注解,不需要去springmvc.xml文件中注册注解驱动。

注册一个注解,用来解析本类中所有的日期类型,自动转换

@InitBinder注解:数据绑定,能够进行日期,数字,货币以及自定义类型的转换

initBinder方法参数WebDateBinder:数据绑定

registerCustomEditor方法:注册一个自定义的转换器

 registerCustomEditor(转换的类型,转换的工具)方法参数两个,第一个Date.class第二个

new CustomDateEditor(日期格式sf,是否允许为空是)

日期格式:

 日期的回显处理

在from表单发送一个时间字符串到服务器,然后在返回到JSP页面显示,或者直接从数据库读取学生的出生日期显示到JSP页面

首先在,带有@RequestMapping注解的方法上添加形参,HttpServletResquest request

使用request.setAttribute方法把时间放到请求域中,在JSP页面使用${}取出

 

 ----------------------------------------------------------

Date时间类型的数据怎么显示在页面页面上

创建Student类,属性有String name   Date  shengri

1.首先在index.jsp页面写一个a标签

2.写studentAge,路径的方法

在studentAge方法中,创建了4个stundet对象,并把student对象放到List集合中,再把List集合方法request请求域中,最后在show.jsp页面展示List集合

3. show.jsp页面展示List集合

使用循环List集合,输出内容,由于没有处理日期格式,输出内容为

 输出日期格式很丑,需要修改日期格式,于是用到了jstl标签,

使用jstl标签,需要导入依赖


    
      jstl
      jstl
      1.2
    

然后再JSP页面导入核心标签库和导入jstl格式化标签库

 最后在使用标签

 对比

----------------------------------------------------------------

springmvc拦截器

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

拦截器执行的时机

1.preHandil():在请求被处理之前进行操作

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

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

拦截器实现的两种方式

继承HandlerInterceptorAdapter的父类

实现HandlerInterceptor接口,推荐使用现实接口方式

拦截器的实现步骤

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

把用户的账号放到session会话域中

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

创建一个类,现实HandlerInterceptor接口,重写preHandler方法

在方法中判断session会话域中是否为空,如果session中有用户名,则请求转发到登陆页面

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

 没有登陆账号,访问受保护的jsp或者访问action,都是请求转发到登陆页面,登陆之后,可以访问受保护的jsp页面

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/850432.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号