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

Spring学习笔记 之 Spring-MVC

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

Spring学习笔记 之 Spring-MVC

系列文章目录 

1.spring学习笔记之spring


文章目录
  • Spring MVC
  • Spring MVC 功能
  • Spring MVC 实现原理
  • 核⼼组件
  • 组件之间运作流程
  • Spring MVC 具体使⽤
  • 流程梳理
  • Spring MVC 常⽤注解 - @RequestMapping
  • 参数绑定 - @RequestParam
  • RESTful ⻛格的 URL 参数获取 - @PathVariable
  • 映射 Cookie - @CookieValue
  • 使⽤ POJO 绑定参数
  •  JSP ⻚⾯的转发和重定向
  • 转发 - forward
  • 重定向 - redirect
  • Spring MVC 数据绑定
  • 基本数据类型
  • 包装类
  • 数组
  • List
  • JSON
  • FastJson
  • Spring MVC 视图层解析
  • 业务数据绑定到 request 域对象
  • Map
  • Model
  • ModelAndView
  • HttpServletRequest
  • @ModelAttribute
  • 业务数据绑定到 session 域对象
  • HttpSession
  • @SessionAttribute
  • Spring MVC⾃定义数据类型转换器
  • Spring MVC与RESTful的集成
  • RESTful 特点:
  • RESTful 具体来讲就是四种表现形式
  • HiddenHttpMethodFilter 的实现原理
  • Spring MVC实现⽂件的上传下载
  • 单⽂件上传
  • 多⽂件上传
  • ⽂件下载
  • Spring MVC 数据校验
  • 基于 Validator 接⼝
  •  Annotation JSR-303 标准
  • Spring MVC表单标签库
  • 常⽤标签
  • Spring MVC国际化

Spring MVC

Spring MVC 是 Spring Framework 提供的 Web 组件,全称是 Spring Web MVC,是⽬前主流的实现 MVC 设计模式的框架,提供前端路由映射、视图解析等功能

Java Web 开发者必须要掌握的技术框架

Spring MVC 功能 MVC : Controller (控制层)、 Model (模型层)、 View (视图层) 流程: Controller 接收客户端请求,调⽤相关业务层组件产出 Model ,或业务数据并返回给 Controller , Controller 再结合 View 完成业务数据的视图层渲染,并将结果响应给客户端

Spring MVC 实现原理

核⼼组件
  • DispatcherServlet:前置控制器,负责调度其他组件的执⾏,可以降低不同组件之间的耦合性,是整个 Spring MVC 的核⼼模块
  • Handler:处理器,完成具体的业务逻辑,相当于 Servlet
  • HandlerMapping:DispatcherServlet 是通过 HandlerMapping 将请求映射到不同的 Handler
  • HandlerInterceptor:处理器拦截器,是⼀个接⼝,如果我们需要进⾏⼀些拦截处理,可以通过实现该接⼝完成
  • HandlerExecutionChain:处理器执⾏链,包括两部分内容:Handler 和 HandlerInterceptor(系统会有⼀个默认的 HandlerInterceptor,如果需要额外拦截处理,可以 添加拦截器进⾏设置)
  • HandlerAdapter:处理器适配器,Handler 执⾏业务⽅法之前,需要进⾏⼀系列的操作包括表单的数据验证、数据类型的转换、将表单数据封装到 POJO 等,这⼀些列操作都是由
  • HandlerAdapter 完成,DispatcherServlet 通过 HandlerAdapter 执⾏不同的 Handler
  • ModelAndView:封装了模型数据和视图信息,作为 Handler 的处理结果,返回给 DispatcherServlet

组件之间运作流程


Spring MVC 具体使⽤

1.创建Maven工程,选择maven-archetype-webapp,然后在pom.xml添加以下依赖


      org.springframework
      spring-webmvc
      5.2.3.RELEASE

2.main文件夹下创建java文件夹和resources文件夹,resources下配置springmvc.xml文件




    
    

    
    
        
        
        
        
    

3.在 web.xml 中配置 Spring MVC 的 DispatcherServlet




  Archetype Created Web Application
  
    springmvc
    org.springframework.web.servlet.DispatcherServlet
    
    
      contextConfigLocation
      classpath:springmvc.xml
    

  

  
  
    springmvc
    /
  

4.添加controller包,添加MyHandler类

@Controller
public class MyHandler {
    @RequestMapping("/index")
    public  String index(){
        System.out.println("接收到请求");
        //返回逻辑试图
        return "index";
    }
}

5.配置Tomcat(没有的先下载),在AddConfiguration里选择tomcat,配置Deployment如下

 /:表示直接localhost:8080/index,就可以访问

如果是/test,则要localhost:8080/test/index,才可以访问

流程梳理
  1. 浏览器输入localhost:8080/index  -> DispatcherServlet 接收到 URL 请求 index,结合 @RequestMapping("/index") 注解将该请求交给index()进⾏处理
  2. 执⾏ index() 业务⽅法,控制台打印⽇志,并且返回 "index" 字符串(逻辑视图)
  3. 结合 springmvc.xml 中的视图解析器配置,"index"加上前缀/,加上后缀.jsp ->找到⽬标资源:/index.jsp,即根⽬录下的 index.jsp ⽂件,将该 JSP 资源返回给客户端完成响应


Spring MVC 常⽤注解 - @RequestMapping Spring MVC 通过 @RequestMapping 注解将 URL 请求与业务⽅法进⾏映射,在控制器的类定义处以及⽅法定义处都可以添加 @RequestMapping ,在类定义处添加相当于多了⼀层访问路径
//----需要访问 localhost:8080/hello/index --------
@Controller
@RequestMapping("/hello")
public class HelloHandler {
     @RequestMapping("/index")
     public String index(){
     System.out.println("接收到了请求");
     //返回逻辑视图
     return "index";
     }
}
http://localhost:8080/hello/index   @RequestMapping 常⽤参数
  • value:指定 URL 请求的实际地址,是 @RequestMapping 的默认值
@RequestMapping(value="/index")     // = @RequestMapping("/index")  
public String index(){
     System.out.println("接收到了请求");
     //返回逻辑视图
     return "index"; 
}
  • method:指定请求的 method 类型,包括 GET、POST、PUT、DELETe 等
@RequestMapping(value = "/index",method = RequestMethod.POST)
public String index(){
     System.out.println("接收到了请求");
     //返回逻辑视图
     return "index"; 
}
        默认访问是GET请求,所以输入localhost:8080/index出现以下错误。

​

         通过postman 模拟POST请求,能够被访问到:

​

  • params:指定 request 请求中必须包含的参数值,若不包含,⽆法调⽤该⽅法
@RequestMapping(value = "/index",params = {"id=1","name=tom"})
public String index(){
     System.out.println("接收到了请求");
     //返回逻辑视图
     return "index";
 }

        正确访问方式:localhost:8080/index?id=1&name=tom 


参数绑定 - @RequestParam params 是对 URL 请求参数进⾏限制,不满⾜条件的 URL ⽆法访问该⽅法,需要在业务⽅法中获取 URL 的参数值
  • 1、在业务⽅法定义时声明参数列表
  • 2、给参数列表添加 @RequestParam 注解进⾏绑定
@RequestMapping(value = "/index",method = RequestMethod.POST)
public String index(@RequestParam("num") Integer id,@RequestParam("str")
String name){
     System.out.println("接收到了请求,参数是:id="+id+",name="+name);
     //返回逻辑视图
     return "index"; 
}

        正确访问URL:localhost:8080/index?num=1&str=tom

        错误访问URL  :localhost:8080/index?id=1&name=tom


RESTful ⻛格的 URL 参数获取 - @PathVariable
  • 传统的 URL:localhost:8080/hello/index?id=1&name=tom
  • RESTful URL:localhost:8080/hello/index/1/tom
@RequestMapping("/restful/{id}/{name}")
public String restful(@PathVariable("id") Integer id,@PathVariable("name")
String name){
     System.out.println(id+"-"+name);
     return "index"; 
}

映射 Cookie - @CookieValue

@CookieValue("JSESSIONID")能够自动获取页面的jsessionid赋给形参

@RequestMapping("/cookie")
public String getCookie(@CookieValue("JSESSIONID") String sessionId){
     System.out.println(sessionId);
     return "index";
 }

使⽤ POJO 绑定参数 POJO:一个简单的普通的Java对象,它不包含 业务逻辑或持久逻辑等 业务要求:设计一个addUser.jsp,提交一个表单,自动将输入的内容付给一个User对象 User类(POJO): 注意:主体对象User可以没有⽆参构造函数,但是级联对象Address必须有⽆参构造函数
@Data
public class User {
    private Integer id;
    private String name;
    //级联属性
    private Address address;
}

Address类(POJO):

@Data
public class Address {
    private Integer code;
    private String value;
}

addUser.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>


    Title


    
编号:
姓名:
地址编号:
地址信息:

MyHandler

@RequestMapping(value="/add",method = RequestMethod.POST)
    public String add(User user){
        System.out.println(user);
        return "index";
    }

访问addUser.jsp页面:

提交之后,后台的User对象会获取到提交信息,根据addUser.jsp设定的属性对应赋值


 JSP ⻚⾯的转发和重定向

转发 - forward

页面跳转的时候,浏览器显示的地址不变,默认

@RequestMapping("/restful/{id}/{name}")
public String restful(@PathVariable("id") Integer id,@PathVariable("name")
String name){
     System.out.println(id+"-"+name);
     return "forward:/index.jsp";   // = return "index";
 }

重定向 - redirect

页面跳转的时候,浏览器显示的地址也跟着改变

因为不默认,所以 redirect:/   必须写完整的jsp路径

@RequestMapping("/restful/{id}/{name}")
public String restful(@PathVariable("id") Integer id,@PathVariable("name")
String name){
     System.out.println(id+"-"+name);
     return "redirect:/index.jsp"; 
}

Spring MVC 数据绑定 数据绑定:在后台业务⽅法中,直接获取前端 HTTP 请求(即在网址栏处)中的参数
  • HTTP 请求传输的参数都是 String 类型的,Handler 业务⽅法中的参数是开发者指定的数据类型,int、 Integer、Object等,因此需要进⾏数据类型的转换
  • Spring MVC 的 HandlerAdapter 组件会在执⾏ Handler 业务⽅法之前,完成参数的绑定,开发者直接使⽤即可

基本数据类型
@RequestMapping("/baseType")
@ResponseBody        //添加这个就不会返回逻辑视图,而是将http请求参数赋给形参,后端输出
public String baseType(int id){
     return "id:"+id; 
}

正确访问:localhost:8080/baseType?id=1

错误访问:localhost:8080/baseType?id=a 或 localhost:8080/baseType

包装类
@RequestMapping("/packageType")
@ResponseBody
public String packageType(Integer id){
     return "id:"+id; 
}

此时,id可以为null,但是id不可以是浮点类型或者字符串类型

 @RequestParam 注解
@RequestMapping("/packageType")
@ResponseBody
public String packageType(@RequestParam(value = "id",required =
true,defaultValue = "0") Integer id){
     return "id:"+id; 
}
  • value = "id":将 HTTP 请求中名为 id 的参数 与 ⽅法中的形参进⾏映射
  • required:ture 表示 id 参数必填,false 表示⾮必填
  • defaultValue = "0":表示当 HTTP 请求中没有 id 参数时,形参的默认值为 0

数组
@RequestMapping("/arrayType")
@ResponseBody
public String arrayType(String[] names){
     StringBuffer stringBuffer = new StringBuffer();
     for (String str:names){
         stringBuffer.append(str).append(" ");
     }
     return "names:"+stringBuffer.toString();
}

List Spring MVC 不⽀持 List 类型的直接转换,需要 List 的⾃定义包装类--UserList
@Data
public class UserList {
     private List users; 
}
业务⽅法
@RequestMapping("/listType")
@ResponseBody
public String listType(UserList users){
     StringBuffer stringBuffer = new StringBuffer();
     for(User user:users.getUsers()){
         stringBuffer.append(user);
     }
     return "⽤户:"+stringBuffer.toString();
}
addList.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
 
 Title
 
 
⽤户1ID:
⽤户1姓名:
⽤户2ID:
⽤户2姓名:
⽤户3ID:
⽤户3姓名:
需要注意的是 :User 类⼀定要有⽆参构造函数,否则抛出异常

JSON 引入jQuery文件,webapp下新建js文件夹,引入js文件 jquery-1.8.3.min.js,并在web.xml中配置以下信息
 
    default
    *.js
  

json.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>


    Title
    
    




注意
  • JSON 数据必须⽤ JSON.stringify() ⽅法转换成字符串
  • contentType:"application/json;charset=UTF-8" 不能省略
Handler方法
@RequestMapping("/jsonType")
@ResponseBody
public User jsonType(@RequestBody User user){
    System.out.println(user);
    return user;
}
  • @RequestBody 注解
读取 HTTP 请求参数,通过 Spring MVC 提供的 HttpMessageConverter 接⼝将读取的参数转为 JSON 、 XML 格式的数据,绑定到业务⽅法的形参
  • @ResponseBody 注解
将业务⽅法返回的对象,通过 HttpMessageConverter 接⼝转为指定格式的数据, JSON 、 XML 等,响应给客户端

FastJson 如果属性为空就不会将其转为 JSON,结合 @RequestBody 注解将 JSON 转为 Java Bean 1.pom.xml种配置依赖
    
    
      com.alibaba
      fastjson
      1.2.32
    

2.sprimvc.xml


     
     
         
             Spring MVC 视图层解析 
  

调⽤ Web 资源给JSP域对象传值-四大作用域
  • page
  • request
  • session
  • application
业务数据的绑定是指将业务数据绑定给 JSP 域对象,业务数据的绑定是由 ViewResolver 来完成的,开发时,我们先添加业务数据,再交给 ViewResolver 来绑定,因此学习的重点在于如何添加业务数据,Spring MVC 提供了以下⼏种⽅式来添加业务数据:
  • Map
  • Model
  • ModelAndView
  • @SessionAttribute
  • @ModelAttribute
  • Servlet API

业务数据绑定到 request 域对象

Map Spring MVC 在调⽤业务⽅法之前会创建⼀个隐含对象作为业务数据的存储容器,设置业务⽅法的⼊参为 Map 类型, Spring MVC 会将隐含对象的引⽤传递给⼊参 1.新建ViewHandler.class
@RequestMapping("/map")
public String map(Map map){
     User user = new User();
     user.setId(1);
     user.setName("张三");
     map.put("user",user);
     return "show"; 
}

2.show.jsp

<%--
  Created by IntelliJ IDEA.
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>

<%@ page isELIgnored="false" %>


    Title


    ${requestScope.user}

3.结果

Model Model 与 Map 类似,业务⽅法通过⼊参来完成业务数据的绑定
@RequestMapping("/model")
public String model(Model model){
     User user = new User();
     user.setId(1);
     user.setName("张三");
     model.addAttribute("user",user);
     return "show"; 
}

ModelAndView

不同点是:返回值为ModelAndView类型,

业务⽅法中对 ModelAndView 进⾏两个操作:
  • 填充业务数据
  • 绑定视图信息
@RequestMapping("/mav")
public ModelAndView modelAndView(){
     ModelAndView modelAndView = new ModelAndView();
     User user = new User();
     user.setId(1);
     user.setName("张三");
     //填充业务数据
     modelAndView.addObject("user",user);
     //绑定视图信息
     modelAndView.setViewName("show");
     return modelAndView; 
}

HttpServletRequest Spring MVC 可以在业务⽅法中直接获取 Servlet 原⽣ Web 资源,只需要在⽅法定义时添加 HttpServletRequest ⼊参即可,在⽅法体中直接使⽤ request 对象 在pom.xml添加servlet依赖

    
      javax.servlet
      servlet-api
      2.5
    
@RequestMapping("/request")
public String request(HttpServletRequest request){
     User user = new User();
     user.setId(1);
     user.setName("张三");
     request.setAttribute("user",user);
     return "show"; 
}

@ModelAttribute 具体使⽤步骤如下:
  • 定义⼀个⽅法,该⽅法⽤来放好要填充到业务数据中的对象
  • 给该⽅法添加 @ModelAttribute 注解
    @RequestMapping("/modelAttribute")
    public String modelAttribute(){
        return "show";
    }
    
    @ModelAttribute
    public User getUser(){
        User user = new User();
        user.setId(1);
        user.setName("张三");
        return user;
    }
解释:@ModelAttribute 注解的作⽤是,当 Handler 接收到⼀个客户端请求之后,⽆论调⽤哪个业务⽅法,都会优先调⽤被 @ModelAttribute 注解修饰的⽅法,并将其 返回值做为业务数据 ,再进⼊到业务⽅法,此时业务⽅法只需要返回视图信息即可,不需要返回业务数据,即使返回业务数据,也会被@ModelAttribute 注解修饰的⽅法返回的数据所覆盖 域对象中存值都是以 key-value 形式存储的,那么此时的 key 值是什么?默认值是业务数据对应的类的类名⾸字⺟⼩写之后的结果 另外,如果 getUser()  没有返回值,则业务数据不会传送到视图层,必须⼿动在该⽅法中填充业务数据,使⽤ Map 或者 Model 均可
@ModelAttribute
public void getUser(Model model){
     User user = new User();
     user.setId(1);
     user.setName("张三");
     model.addAttribute("user",user);
}
如果同时存在两个 @ModelAttribute 注解⽅法,则用Model装载的方法优先级更高

业务数据绑定到 session 域对象

HttpSession
@RequestMapping("/session")
public String session(HttpSession session){
     User user = new User();
     user.setId(1);
     user.setName("张三");
     session.setAttribute("user",user);
     return "show"; 
}

JSP

<%--
  Created by IntelliJ IDEA.
  User: Administrator
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>

<%@ page isELIgnored="false" %>



    Title


     
    ${sessionScope.user}


@SessionAttribute @SessionAttribute 注解不是给⽅法添加的,⽽是给类添加
@SessionAttributes(value = "user")
public class ViewHandler{
    ....................
}
只要给类添加了 @SessionAttributes 注解之后,⽆论类中的哪个业务⽅法被访问,  request 和 session 对象会同时存在业务数据 注:前提是 request 域中的 key 值需要和 @SessionAttributes 注解中的 value 值⼀致 @SessionAttributes 除了可以通过 key 值绑定,也可以通过业务数据的数据类型进⾏绑定:
@Controller
@SessionAttributes(types=User.class)
public class ViewHandler {
 ...
}
@SessionAttributes 可以同时绑定多个业务数据
@Controller
@SessionAttributes(types={User.class,Address.class})
public class ViewHandler {
     ...
}

只要业务方法中的request装载有User或者Address的数据,那么对应的也会给session装载上

Spring MVC⾃定义数据类型转换器

1、创建 DateConverter 类,并实现 org.springframework.core.convert.converter.Converter 接⼝, 这样它就成为了⼀个⾃定义数据类型转换器,需要指定泛型 ,表示将 String 类型转为Date 类型
public class DateConverter implements Converter {
    private String pattern;

    public DateConverter(String pattern){
        this.pattern = pattern;
    }

    @Override
    public Date convert(String s) {
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat(this.pattern);
        try {
            return simpleDateFormat.parse(s);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return null;
    }
}
2、在 springmvc.xml 中配置 conversionService bean,这个 bean 是 org.springframework.context.support.ConversionServiceFactoryBean 的实例化对象,同时 bean 中必须包含⼀个 converters 属性,在其中注册所有需要使⽤的⾃定义转换器

        
            
                
                    
                    
                
            
        
     
    
    

3.date.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>


    Title


    

4.Handler

@Controller
@RequestMapping("/converter")
public class ConverterHandler {

    @RequestMapping("/date")
    @ResponseBody
    public String date(Date date){
        return date.toString();
    }
}

运行步骤:

  • tomcat启动时,IOC容器会根据springmvc.xml配置的bean创建一个DateConverter对象
  • 在date.jsp页面输入日期字符串的时候,由DateConverter转为date类型,提交给Handler业务方法的入参
  • Handler将date类型数据转为String类型在视图层localhost:8080/converter/date显示日期

Spring MVC与RESTful的集成
  • Resources
资源指的是⽹络中的某个具体⽂件,类型不限,可以是⽂本、图⽚、视频、⾳频、数据流等,是⽹络中 真实存在的⼀个实体。如何获取它?可以通过统⼀资源定位符找到这个实体,URI ,每个资源都有⼀个 特定的 URI ,通过 URI 就可以找到⼀个具体的资源
  • Pepresentation
资源表现层,资源的具体表现形式,例如⼀段⽂字,可以使⽤ TXT 、 HTML 、 XML 、 JSON 等不同的形式来描述它
  • State Transfer
状态转化是指客户端和服务端之间的数据交互,因为 HTTP 请求不能传输数据的状态,所有的状态都保存在服务端,如果客户端希望访问服务端的数据,就需要使其发⽣状态改变,同时这种状态转化是建⽴在表现层,完成转换就表示资源的表现形式发⽣了改变

RESTful 特点: 1、URL 传参更加简洁 传统形式 URL : http://localhost:8080/fifindById?id=1 RESTful URL : http://localhost:8080/fifindById/1 2、主要作用:完成不同终端之间的资源共享,资源传递

RESTful 具体来讲就是四种表现形式 HTTP 协议中四种请求类型( GET 、 POST 、 PUT 、 DELETE )分别表示四种常规操作
  • GET ⽤来获取资源---------查
  • POST ⽤来创建资源-------增
  • PUT ⽤来修改资源---------改
  • DELETE ⽤来删除资源---删

两个终端要完成数据交互,基于 RESTful 的⽅式,增删改查操作分别需要使⽤不同的 HTTP 请求类型来访问

传统的 Web 开发中,from 只⽀持 GET 和 POST,不⽀持 DELETe 和 PUT,如何解决?通过添加HiddenHttpMethodFilter 过滤器,可以将 POST 请求转为 PUT 或者 DELETE

HiddenHttpMethodFilter 的实现原理

HiddenHttpMethodFilter 检测请求参数重是否包含 _method 参数,如果包含则取出它的值,并且判断请求类型之后完成请求类型的转换,然后继续传递

实现

1.在form表单中添加隐藏于标签,name为_method,value为DELETE/PUT


Title

<%--用_method,转为PUT请求--%>
2、web.xml 中配置 HiddenHttpMethodFilter


     HiddenHttpMethodFilter
     org.springframework.web.filter.HiddenHttpMethodFilter
 


     HiddenHttpMethodFilter
     
@Data
public class Account {
    @NotEmpty(message = "用户名不能为空")
    private String username;

    @Size(min = 6,max = 20,message = "密码长度为6-20位")
    private String password;

    @Email(regexp = ""^[a-zA-Z0-9_.-]+@[a-zA-Z0-9-]+(\\\\\\\\.[a-zA-Z0-9-n" +
            "]+)*\\\\\\\\.[a-zA-Z0-9]{2,6}$",message ="请输入正确的邮箱" )
    private String email;

    @Pattern(regexp = "^((13[0-9])|(14[5|7])|(15([0-3]|[5-9]))|(18[0,5-9]))\\\\\\\\d{8}$",message = "请输入正确的手机号")
    private String phone;
}

3.Handler

@GetMapping("/register")
public String register(Model model){
     model.addAttribute(new Account());
     return "register"; 
}

@PostMapping("/register")
public String register(@Valid Account account,BindingResult bindingResult){
     if(bindingResult.hasErrors()){
         return "regiser";
     }
     return "success"; 
}

4、register.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>


    Title


⽤户注册
    
    ⽤户名:
密码:
邮箱:
电话:

Spring MVC表单标签库

demo:通过jsp修改student的信息

1.Student实体类

@Data
public class Student {
     private Integer id;
     private String name;
     private Integer age;
     private String gender; }

2.Handler

@Controller
@RequestMapping("/student")
public class StudentHandler {

    @RequestMapping("/get")
    public String get(Model model){
        Student student = new Student();
        student.setId(1);
        student.setName("张三");
        student.setAge(22);
        student.setGender("男");
        model.addAttribute("student",student);
        return "student";
    }
}

3.student.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ page isELIgnored="false" %>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>


    Title


    修改学⽣信息
    <%--不用表单标签库的情况--%>
    
学⽣编号:
学⽣姓名:
学⽣年龄:
学⽣性别:
<%--使用表单标签库的情况--%> <%--功能一样,代码简单--%> 学⽣编号:
学⽣姓名:
学⽣年龄:
学⽣性别:

常⽤标签 1、form 标签

2、input 标签

渲染的是 HTML 中的 ,from 标签绑定的是业务数据,input 标签绑定的是业 务数据中的属性值,通过 path 与业务数据的属性名对应,并⽀持级联

3、password 标签

渲染的是 HTML 中的 ,通过 path 与业务数据的属性名对应 password跟input的区别是:password 标签的值不会在⻚⾯显示

4、checkbox 标签

渲染的是 HTML 中的 ,通过 path 与业务数据的属性名对应,可以绑定 boolean、数组和集合

如果绑定 boolean 类型的变量,该变量值为 true ,则表示选中, false 表示不选中 5、checkboxs 标签 渲染的是 HTML 中的⼀组 ,这⾥需要结合 items 和 path 两个属性来使 ⽤, items 绑定被遍历的集合或数组, path 绑定选中的集合或数组, items 是全部选型, path 为默认 选中的选型
6、radiobutton 标签 渲染的是 HTML 中的⼀个 ,绑定的数据与标签的 value 值相等为选中状 态,否则为不选中状
student.setRadioId(1);
男
⼥

Spring MVC国际化 国际化是指同⼀个应⽤程序在不同语⾔设置的浏览器中,⾃动显示不同的语⾔, Spring MVC 对国际化操作做了很好的集成,只需要简单配置即可实现国际化 1.配置springmvc.xml



 
 
 




 
 
 



2、创建国际化资源⽂件 language_en_US.properties,language_zh_CN.properties,分别存储英⽂和中⽂资源
language.cn = u4E2Du6587
language.en = English
info = login
username = username
password = password
repassword = repassword
tel = tel
email = email
submit = submit
reset = reset
language.cn = u4E2Du6587
language.en = English
info = u767Bu9646
username = u7528u6237u540D
password = u5BC6u7801
repassword = u786Eu8BA4u5BC6u7801
tel = u7535u8BDD
email = u7535u5B50u90AEu7BB1
submit = u63D0u4EA4
reset = u91CDu7F6E
3、Handler
@Controller
@RequestMapping("/inter")
public class InterHandler {
     @GetMapping("/index")
     public String index(){
         return "inter";
     }
}
4、inter.JSP
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
 

     Title
 

     English
     中⽂
     
     
:
:
:
:
:
"/> "/>

5、结果

总结

开始myBatis

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

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

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