【Spring MVC】第二站-Spring MVC哀求

种地  论坛元老 | 2025-1-17 08:36:44 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 1091|帖子 1091|积分 3273

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
目次
​编辑
一、RequestMapping注解
 1. RequestMapping的属性
2. RequestMapping的哀求参数绑定
2.1 绑定机制
2.2 支持的数据类型
2.3 在控制器中使用原生的ServletAPI对象
二、不常用的注解
1. RequestParam注解




一、RequestMapping注解

RequestMapping注解的作用是建立哀求URL和处置惩罚方法之间的对应关系。
RequestMapping注解可以作用在方法和类上。
   1. 作用在上:第一级的访问目次
  2. 作用在方法上:第二级的访问目次
  3. 细节:路径可以不编写 / 表示应用的根目次开始
   1. RequestMapping的属性

1. path 指定哀求路径的url
2. value value属性和path属性是一样的
3. mthod 指定该方法的哀求方式

  1. @Controller
  2. @RequestMapping(path = "/role") // 一级请求路径
  3. public class RoleController {
  4.     /**
  5.      * /role/save
  6.      * method="当前方法允许请求方式能访问"
  7.      * params="请求路径上传参数"
  8.      * @return
  9.      */
  10.    @RequestMapping(path = "/save",method = {RequestMethod.GET})
  11.     public String save(){
  12.         System.out.println("保存角色...");
  13.         return "suc";
  14.     }
  15.     @RequestMapping(value = "/delete")
  16.     public String delete(){
  17.         System.out.println("删除角色...");
  18.         return "suc";
  19.     }
  20. }
复制代码
返回数据/页面
  1. @RequestMapping("/save2")
  2. @ResponseBody  //返回的就是字符串
  3. public String save2(){
  4.     return "a";
  5. }
  6. @RequestMapping(path = "/save3",method = {RequestMethod.GET})
  7. public String save3(){
  8.     System.out.println("保存角色....");
  9.     return "suc";
  10. }
复制代码
2. RequestMapping的哀求参数绑定

2.1 绑定机制

1. 表单提交的数据都是k=v格式的。   
                        username=haha&password=123
2. SpringMVC的参数绑定过程是把表单提交的哀求参数,作为控制器中方法的参数举行绑定的
3. 要求:提交表单的name和参数的名称是雷同的。
2.2 支持的数据类型

   1. 基本数据类型和字符串类型
  2. 实体类型(JavaBean)
  3. 集合数据类型(List、map集合等)
   1. 基本数据类型和字符串类型
        1. 提交表单的name和参数的名称是雷同的
        2. 区分巨细写
2.  实体类型(JavaBean)
        1. 提交表单的name和JavaBean中的属性名称需要一致
        2. 如果一个JavaBean类中包罗其他的引用类型,那么表单的name属性需要编写成:对象.属性
        例如:address.name
3. 给集合属性数据封装
        JSP页面编写方式:list[0].属性
jsp代码:
  1. <html>
  2. <head>
  3.     <meta charset="utf-8">
  4.     <title>入门程序</title>
  5. </head>
  6. <body>
  7. <h3>入门</h3><a href="/SpringMVC/hello" >入门程序</a>
  8.     <h1>请求参数绑定入门程序</h1>
  9.     <form action="/SpringMVC/user/save" method="get">
  10.         <input type="text" name="username"/><br/>
  11.         <input type="text" name="age"/><br/>
  12.         <input type="submit"/>
  13.     </form>
  14.     <h1>请求参数绑定入门程序(封装到实体类)</h1>
  15.     <form action="/user/save1" method="post">
  16.         <input type="text" name="username"/><br/>
  17.         <input type="text" name="age"/><br/>
  18.         <input type="submit"/>
  19.     </form>
  20.     <h1>请求参数绑定入门程序(封装到实体类)</h1>
  21.     <form action="/user/save2" method="post">
  22.         <input type="text" name="username"/><br/>
  23.         <input type="text" name="age"/><br/>
  24.         <input type="text" name="account.money"/><br/>
  25.         <input type="submit"/>
  26.     </form>
  27.     <h1>请求参数绑定入门程序(存在list集合)</h1>
  28.     <form action="/user/save3" method="post">
  29.         <input type="text" name="username"/><br/>
  30.         <input type="text" name="age"/><br/>
  31.         <input type="text" name="account.money"/><br/>
  32.         <input type="text" name="accounts[0].money"/><br/>
  33.         <input type="text" name="accounts[1].money"/><br/>
  34.         <input type="submit"/>
  35.     </form>
  36. </body>
  37. </html>
复制代码
JavaBean代码
  1. public class Account {
  2.     private Double money;
  3.     public Double getMoney() {
  4.         return money;
  5.     }
  6.     public void setMoney(Double money) {
  7.         this.money = money;
  8.     }
  9.     @Override
  10.     public String toString() {
  11.         return "Account{" +
  12.                 "money=" + money +
  13.                 '}';
  14.     }
  15. }
复制代码
实体类:
  1. public class User {
  2.     private String username;
  3.     private Integer age;
  4.     private Account account;
  5.     private List<Account> accounts;
  6.     public String getUsername() {
  7.         return username;
  8.     }
  9.     public void setUsername(String username) {
  10.         this.username = username;
  11.     }
  12.     public Integer getAge() {
  13.         return age;
  14.     }
  15.     public void setAge(Integer age) {
  16.         this.age = age;
  17.     }
  18.     public Account getAccount() {
  19.         return account;
  20.     }
  21.     public void setAccount(Account account) {
  22.         this.account = account;
  23.     }
  24.     public List<Account> getAccounts() {
  25.         return accounts;
  26.     }
  27.     public void setAccounts(List<Account> accounts) {
  28.         this.accounts = accounts;
  29.     }
  30.     @Override
  31.     public String toString() {
  32.         return "User{" +
  33.                 "username='" + username + '\'' +
  34.                 ", age=" + age +
  35.                 ", account=" + account +
  36.                 ", accounts=" + accounts +
  37.                 '}';
  38.     }
  39. }
复制代码
controller代码
 
  1. @Controller
  2. @RequestMapping("/user")
  3. public class UserController {
  4.     @RequestMapping("/save")
  5.     public String save(String username,Integer age){
  6.         System.out.println(username);
  7.         System.out.println(age);
  8.         return "suc";
  9.     }
  10.     @RequestMapping("/save1")
  11.     public String save1(User user){
  12.         System.out.println(user.toString());
  13.         return "suc";
  14.     }
  15.     @RequestMapping("/save2")
  16.     public String save2(User user){
  17.         System.out.println(user);
  18.         return "suc";
  19.     }
  20.     @RequestMapping("/save3")
  21.     public String save3(User user){
  22.         System.out.println(user);
  23.         return "suc";
  24.     }
  25. }
复制代码
requestMapping: 
  1. @RequestMapping("/save4")
  2. public String save4(String name){
  3.     System.out.println(name);
  4.     return "a";
  5. }
  6. @RequestMapping("/save5")
  7. public String save5(String name ,Integer age,char sex){
  8.     System.out.println(name+" "+age+" "+sex);
  9.     return "a";
  10. }
  11. @RequestMapping("/save6")
  12. public String save6(User user){
  13.     System.out.println(user.toString());
  14.     return "a";
  15. }
  16. @RequestMapping("/save7")
  17. public String save7(User user,Integer pageSize,Integer pageIndex){
  18.     System.out.println(user.toString()+" "+pageSize+" "+pageIndex);
  19.     return "a";
  20. }
复制代码

 
2.3 在控制器中使用原生的ServletAPI对象

        只需要在控制器的方法参数界说HttpServletRequest和HttpServletResponse对象。
  1. @RequestMapping(value = "/save6.do",method = {RequestMethod.POST})
  2. public String save6(HttpServletRequest request, HttpServletResponse response){
  3.     // 获取到HttpSession对象
  4.     System.out.println(request.getParameter("username"));
  5.     HttpSession session = request.getSession();
  6.     System.out.println(session);
  7.     System.out.println(response);
  8.     return "suc";
  9. }
复制代码

二、不常用的注解

1. RequestParam注解

1. 作用:
        把哀求中的指定名称的参数通报给控制器中的形参赋值
2. 属性
           1. value:哀求参数中的名称
          2. required:哀求参数中是否必须提供此参数,默认值是true,必须提供
  3. 代码如下
  1. import org.springframework.stereotype.Controller;
  2. import org.springframework.web.bind.annotation.RequestMapping;
  3. import org.springframework.web.bind.annotation.RequestParam;
  4. @Controller
  5. @RequestMapping("/dept")
  6. public class DeptController {
  7.     @RequestMapping("/save")
  8.     public String save(@RequestParam(value = "username",required = false) String name){
  9.         System.out.println(name);
  10.         return "suc";
  11.     }
  12. }
复制代码


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

种地

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表