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

springMVC获得请求参数

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

springMVC获得请求参数

一. 获得基本数据类型

UserController中的方法:

@RequestMapping("/quick8")
@ResponseBody
public void save8(String name,int age) {
    System.out.println(name);
    System.out.println(age);

}

网页中网址:

http://localhost:8080/springioc_mvc_war_exploded/user/quick8?name=zhangsan&age=333

得到:

二. 获得POJO数据类型

UserController中的方法:

@RequestMapping("/quick8")
@ResponseBody
public void save8(User user) {
    System.out.println(user);
    System.out.println(user.getName());
    System.out.println(user.getAge());
}

网页中网址,网址中的属性名称和bean中的属性名称一样,springMVC就会自动封装:

http://localhost:8080/springioc_mvc_war_exploded/user/quick8?name=zhangsan&age=123

得到

三. 获得数组类型

UserController中的方法:

@RequestMapping("/quick9")
@ResponseBody
public void save8(User user) {
    System.out.println(user);
    System.out.println(user.getName());
    System.out.println(user.getAge());
}

网页中网址,网址中的数组名称和接受的数组名称一样,springMVC就会自动封装:

http://localhost:8080/springioc_mvc_war_exploded/user/quick9?strs=1&strs=11&strs=111

得到:

四. 集合类型 1. 实现

在success.jsp中写上表单:

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


    success


    
<%-- name中的属性名必须和VO中list的对象名一样--%>



界面:

VO.java

public class VO {
    //
    private List userList;

    public List getUserList() {
        return userList;
    }

    public void setUserList(List userList) {
        this.userList = userList;
    }

    @Override
    public String toString() {
        return "VO{" +
                "userList=" + userList +
                '}';
    }
}

userController.java:

@RequestMapping("/quick10")
@ResponseBody
public void save10(VO vo) {
    System.out.println(Arrays.asList(vo));
}

在网页界面中提交表单之后就能看到:

2. 中文乱码问题

如果输入数据是中文

就会出现乱码:

解决方法是在web.xml中配置一个filter,让去往后端的数据全部转成utf-8格式:
  

    CharacterEncodingFilter
    org.springframework.web.filter.CharacterEncodingFilter

    
      encoding
      UTF-8
    
  

  
    CharacterEncodingFilter

    /*
  
五. 接收ajax数据

先创建一个ajax.jsp的前端页面:

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


    Title
<%--    加载jquery--%>
    
    





配置userController.java:

@RequestMapping("/quick11")
@ResponseBody
//    这里必须要加RequestBody的注解才能将json封装到userList
public void save11(@RequestBody List userList) {
    System.out.println(userList);
}

访问ajax.jsp会发现报错:


为什么会找不到jquery?
因为访问ajax.jsp后,前端会向后端发送找jquery包的请求。这个请求是发送到servlet那里去了。他会先搜索@requestmapping看有没有配置好的servlet,如果没有,就自动去找前端控制器。前端控制器一般都是配的缺省地址,也就是 /。这个地址显然也不是jquery在的地方。

解决办法:

在spring-mvc.xml中配置:




或者:

    
六. 参数映射

UserController.java:

    @RequestMapping("/quick12")
    @ResponseBody
    public void save12(@RequestParam("name") String username) {
        System.out.println(username);
    }

如果不要@requestparam,直接在网页中输入

http://localhost:8080/springioc_mvc_war_exploded/user/quick12?name=张三

会报错,得用username才行。这里用了@requestparam就建立了name到username的映射。

七. Restful风格

可以直接在网址中写上

http://localhost:8080/springioc_mvc_war_exploded/user/quick12/张三

就可以把张三作为username传到后端。

实现方法是:
//    {}表示占位符,其中的名称需要与@PathVariable的value参数一致
    @RequestMapping("/quick13/{username}")
    @ResponseBody
    //    @PathVariable注解,指定要映射的参数
    public void save13(@PathVariable(value = "username") String username) {
        System.out.println(username);
    }

然后输入上述网址,就可以实现:

八. 类型转换器

前端送到后端的数据,都会被转成字符串形式,但是在后端接收的时候,用int也能接受到数字,这说明springMVC自动做了一些类型转换。但有的类型是不进行自动转换的,比如日期。
这就需要自定义类型转换器:

首先定义一个DataConverter.java:

//范型:<原本的类型,要转成的类型>
public class DataConverter implements Converter {
    @Override
//    source:原本的数据
    public Date convert(String source) {
//        日期格式转换,yyyy-MM-dd表示可以在网址中输入的日期格式
        SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy-MM-dd");
        Date parse = null;
        try {
            parse = simpleDateFormat.parse(source);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return parse;
    }
}

告诉springMVC我有这个转换器,在springMVC.xml中配置:

    

        
            
                
            
        
    

将这个类配置到

    

浏览器输入地址:

http://localhost:8080/springioc_mvc_war_exploded/user/quick14?date=2022-03-03

就可以得到:

九. 获得servlet相关API

springMVC会自动为请求的方法注入servletAPI:
userController.java:

@RequestMapping("/quick15")
    @ResponseBody
    public void save15(HttpServletRequest request, HttpServletResponse response, HttpSession session) {
        System.out.println(request);
        System.out.println(response);
        System.out.println(session);
    }

访问后得到:

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

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

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