SpringMVC学习第二天【注解写法笔记】【接收和响应】

这篇博客主要介绍了在高版本Tomcat中,由于参数不合法可能导致的问题及其解决办法,涉及修改server.xml配置文件,增加relaxedQueryChars属性。同时,文章也提及了SpringMVC接收和响应的相关知识点,提醒在使用session时需注意pom.xml中Spring和session库的版本要求,分别是5以上和2.9以上。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

高版本Tomcat 传参可能出现参数不合法被拦截的可能,需要改一下tomcat的server.xml,注意写自己用的端口 

<Connector port="8090" protocol="HTTP/1.1"
               connectionTimeout="20000"
               relaxedQueryChars="[]|{}^&#x5c;&#x60;&quot;&lt;&gt;"
               redirectPort="8443" /> 

 

接收

    <a href="test/test1">点击1</a>
    <a href="test/test2">点击2</a>
    <a href="test/test3?name=张三">传1参数</a>
    <a href="test/test3?name=张三&age=20">传2参数</a>
    <a href="test/test4?nums=1&nums=2&nums=3">传数组</a>

    <a href="test/test5?books[0].name=aa&books[0].price=189&books[1].name=bb&books[1].price=88">List</a>
    <a href="test/test6?books2[0].name=张三&books2[0].price=100&books2[1].name=李四&books2[1].price=98">Map(User)</a><br/>
    <a href="test/test7?score['java']=100&score['数学']=99&score['語文']=0">Map</a><br/>

@Controller
@RequestMapping("/test")
public class TestController {
    @RequestMapping(value = "/test1",method = RequestMethod.POST)
    public String test1(){

//      因为配置了视图解析器  所以可以跳转到success.jsp
        return "success";
    }
    @RequestMapping(value = "/test2",method = RequestMethod.GET)
    public  String test2(){
        return "success";
    }
    /**
     * @username 按name匹配
     * @age 值可有可无
     */
    @RequestMapping(value = "/test3")
    public  String test3(@RequestParam("name") String username,@RequestParam(required = false) Integer age){
        System.out.println(username+" "+age);
        return "success";
    }

    /**
     * 传数组参数
      * @param nums 数组
     * @return
     */
    @RequestMapping(value = "/test4")
    public String test4(int[] nums){
        for (int num:nums){
            System.out.println(num);
        }
        return "success";
    }
    List list =new ArrayList();

    /**
     * 传列表参数
     * @param user 实体用户
     * @return
     */
    @RequestMapping(value = "/test5")
    public String test5(User user){
        System.out.println(user.toString());
        return "success";
    }

    /**
     * 传map参数 (内含user)
     * @param user
     * @return
     */
    @RequestMapping(value = "/test6")
    public String test6(User user){
        System.out.println(user.toString());
        return "success";
    }
    /**
     * 传map参数 (不含user)
     * @param user
     * @return
     */
    @RequestMapping(value = "/test7")
    public String test7(User user){
        System.out.println(user.toString());
        return "success";
    }
}

响应(注意session 的pom.xml (spring需要5以上版本 session需要2.9以上版本 ))

<body>
    <h2>成功</h2>
    欢迎:requestScope  ${requestScope.user}<br>
    欢迎:sessionScope  ${sessionScope.user2.name} <br>
    <a href="return/out">推出登录</a>
</body>

 


@Controller
@RequestMapping("return")
@SessionAttributes(value = {"user2"})
public class TestReturnController {

//    转发
    @RequestMapping("/forward")
    public String test1(ModelMap modelMap, HttpServletRequest request, HttpServletResponse response){

//        System.out.println(modelMap.getClass().getName());
        //        1. springMVC 提供的规范
//        modelMap.addAttribute("user","弓长张");
        //        2.javaweb 提供的规范
        request.setAttribute("user","弓长张");

//        session 不会随着转发和重定向丢失数据 注意修改配置
        request.getSession().setAttribute("user","弓长张");
        return "forward:/success.jsp";
    }

//    重定向
    @RequestMapping("/redirect")
    public String test2(ModelMap modelMap, HttpServletRequest request, HttpServletResponse response){


//        System.out.println(modelMap.getClass().getName());
        //        1. springMVC 提供的规范
//        modelMap.addAttribute("user","弓长张");
        //        2.javaweb 提供的规范 重定向会丢失request区域数据
        request.setAttribute("user","弓长张");

//        session 不会随着转发和重定向丢失数据 注意修改配置
        request.getSession().setAttribute("user","弓长张");
        return "redirect:/success.jsp";
    }

//从一个Controller 到另一个Controller 另一个用session接收数据
    @RequestMapping("/first")
    public String test3(ModelMap modelMap, HttpSession session){
//        重定向 往服务器发送了两次次请求   丢失 rquest区域的数据

        User user2=new User();
        user2.setName("健哥哥");
        modelMap.addAttribute("user2",user2);
        session.setMaxInactiveInterval(5);
        return "redirect:/return/second";
    }

    //    获取session数据
    @RequestMapping("/second")
    //    SessionAttributes  存值   SessionAttribute  取值
    public String test4(@SessionAttribute("user2") User user){
        System.out.println(user.toString());
        return "redirect:/success.jsp";
    }
//    万能跳转
    @RequestMapping("/{url}")
    public String test5(@PathVariable("url") String url){
        System.out.println(url);
        return url;
    }
//    清除session
    @RequestMapping("/out")
    public String test6(HttpServletRequest request, Model model, SessionStatus sessionStatus){
//        清除所有session数据
        request.getSession().invalidate();
//          清除某个
        request.getSession().removeAttribute("user2");
//        清除某个 第二种当时
        request.getSession().setAttribute("user2",null);

        model.addAttribute("user2",null);

//SpringMVC提供的
        sessionStatus.setComplete();
        return "index";
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值