SpringMVC 收参 跳转 传值

接收请求参数

springMVC默认可以识别的日期字符串格式为: YYYY/MM/dd HH:mm:ss
通过@DateTimeFormat可以修改默认日志格式

@DateTimeFormat(pattern = "yyyy-MM-dd")

ParamContrallor.java

import entity.User;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;

import java.util.Date;

/**
 * 接收请求参数
 */
@Controller
@RequestMapping("param")
public class ParamContrallor {

    // 基本类型参数
    // 请求参数和方法的形参 同名即可
    // http://localhost:8989/xxx/../test1?id=1&name=zzz&gender=false&birth=2018-12-12 12:20:30
    @RequestMapping("/test1")
    public String hello1(Integer id, String name, Boolean gender,@DateTimeFormat(pattern = "yyyy-MM-dd") Date birth) {
        System.out.println("test1");
        return "user";
    }

    // 实体收参
    // 请求参数和实体的属性 同名即可
    //http://localhost:8989/.../test2?id=1&name=zzz&gender=false&birth=2018-12-12 12:20:30
    @RequestMapping("/test2")
    public String test2(User user) {
        System.out.println("test2");
        return "index";
    }

    // 数组收参
    //http://localhost:8989/.../test3?hobby=football&hobby=basketball
    @RequestMapping("/test3")
    public String test3(String[] hobby) {
        System.out.println("test3");
        return "index";
    }

    //集合收参
    // <input type="text" name="users[0].id"/>
    // post请求:http://...?users[0].id=1&users[0].name=zhangsan&users[0].birth=2018-12-12&users[1].id=2&....
    @RequestMapping("/test4")
    public String test4(String[] hobby) {
        System.out.println("test4");
        return "index";
    }

    /**
     * 路径参数
     * {abc}匹配价值 等于 *    /test4/*
     * {abc}会捕获其匹配到的内容   http://xxx/test4/1    1
     * http://xxx/text4/zhangsan     zhangsan
     *
     * @return http://xxxx/test4/10001
     * @PathVariable("id") 将名为id的路径 捕获的值给handler的参数
     */
    @RequestMapping("/test5/{id}")
    public String test5(@PathVariable("id") Integer id) {
        System.out.println("test5");
        return "index";
    }
}

index.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
hello world~~~
<hr>
<form action="${pageContext.request.contextPath}/param/test3">
    <input type="checkbox" name="hobby" value="football"> 足球  <br>
    <input type="checkbox" name="hobby" value="basketball"> 篮球  <br>
    <input type="checkbox" name="hobby" value="volleyball"> 排球  <br>
    <input type="submit" value="提交">
</form>
<hr>
<form action="${pageContext.request.contextPath}/param/test3">
    <input type="text" name="addrs[0].id">
    <input type="text" name="addrs[0].city"> <br>
    <input type="text" name="addrs[1].id">
    <input type="text" name="addrs[1].city"> <br>
    <input type="submit" value="提交">
</form>
</body>
</html>

跳转

mvc.xml


 <!-- 扫描 -->
    <context:component-scan base-package="contrallor"/>
    <!-- 注册 可以识别mvc相关注解的组件 -->
    <mvc:annotation-driven/>
    <!-- 视图解析器
         1. 捕获handler的返回值  "user"
         2. 解析,在返回值前后拼接  前后缀 :  /user.jsp
     -->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/"/><!-- 前缀 -->
        <property name="suffix" value=".jsp"/><!-- 后缀 -->
    </bean>

ForwardContrallor.java

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

/**
 * 跳转
 */
@Controller
@RequestMapping("/forward")
public class ForwardContrallor {

    @RequestMapping("/test1")
    public String test1(){
        System.out.println("test1");
        // 转发到 user.jsp
        return "user";
    }

    @RequestMapping("/test2")
    public String test2(){
        System.out.println("test2");
        // 转发到 user.jsp
        return "forward:/user.jsp";
    }

    @RequestMapping("/test3")
    public String test3(){
        System.out.println("test3");
        // 转发到 /forward/test2
        return "forward:/forward/test2";
    }

    @RequestMapping("/test4")
    public String test4(){
        System.out.println("test4");
        // 重定向到  index.jsp
        return "redirect:/index.jsp";
    }

    @RequestMapping("/test5")
    public String test5(){
        System.out.println("test5");
        // 重定向到 /forward/test3
        return "redirect:/forward/test3";
    }

}
  • 在增删改之后,为了防止请求重复提交,重定向跳转
  • 在查询之后,可以做转发跳转

传值

DataContrallor.java

import entity.Address;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.SessionAttributes;
import org.springframework.web.bind.support.SessionStatus;
import org.springframework.web.servlet.ModelAndView;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;

/**
 * 传值
 */
@Controller
@RequestMapping("/data")
@SessionAttributes({"addr4","id"})
public class DataContrallor {
    @RequestMapping("/test1")
    public String test1(HttpServletRequest request, HttpSession session){
        Address address = new Address();
        address.setId(1);
        address.setCity("上海");
        Address address2 = new Address();
        address2.setId(2);
        address2.setCity("北京");
        // 传值
        request.setAttribute("addr",address);
        request.setAttribute("addr2",address2);
        return "user";
    }

    @RequestMapping("/test2")
    public String test2(Model model){
        Address address = new Address();
        address.setId(11);
        address.setCity("上海11");
        Address address2 = new Address();
        address2.setId(22);
        address2.setCity("北京22");
        // 传值  model中的值,会在jsp即将执行时,复制给request
        model.addAttribute("addr3",address);
        model.addAttribute("addr4",address2);
        model.addAttribute("id",2005);
        return "user";
    }

    public ModelAndView test3(){
        ModelAndView mv = new ModelAndView();
        mv.addObject("id",1000);
        mv.setViewName("forward:/user.jsp");
        return mv;
    }

    @RequestMapping("/clear")
    public String clear(SessionStatus status){
        // 清空通过SessionAttributes存入的session
        status.setComplete();
        return "user";
    }
}

user.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>user</title>
</head>
<body>
hello user~~~ <br>
${requestScope.addr.id} -- ${requestScope.addr.city} <br>
${sessionScope.addr2.id} -- ${sessionScope.addr2.city} <br>
${requestScope.addr3.id} -- ${requestScope.addr3.city} <br>
${sessionScope.addr4.id} -- ${sessionScope.addr4.city} <br>
${sessionScope.id}<br>
</body>
</html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值