SpringMVC拿参数的方式session的创建与删除方式

355 阅读2分钟

一、SpringMVC中拿用户端参数的方式

第一种(最常用):

  • 通过method:指定请求方式
  • params:指定传入什么字段
  • consumes指定传入的格式
  • produces:类型,文本类型还是网页类型

    @RequestMapping(value = "login"
            , method = {RequestMethod.POST , RequestMethod.GET}
            , params = {"yhm", "pwd"}
//            , headers = {"name"}
//            ,consumes = "application/json"
//            ,produces = "text/plain;charset=utf-8"
    )
    public String login(String yhm, String pwd , @RequestHeader("name") String name, @CookieValue("JESESSIONID") String  sid) {
        System.out.println("拿到用户名: " + yhm);
        System.out.println("拿到密码: " + pwd);
        System.out.println("请求头"+name);
        System.out.println("获得cookie"+sid);
        return "index";
    }

第二种

通过 @RequestParam 拿自己想要的参数


    @RequestMapping("login1")
    public String abc(@RequestParam("yhm") String uname, @RequestParam("pwd") String upwd) {
        System.out.println("登录2");
        System.out.println("用户名"+uname);
        System.out.println("密码"+upwd);
        return "index";
    }

第三种

通过HttpServletRequest 最经典的方式拿参数

  1. 导入servlet包
        <dependency>
            <groupId>org.apache.tomcat</groupId>
            <artifactId>servlet-api</artifactId>
            <version>6.0.53</version>
        </dependency>
  1. 使用:
    @Autowired
    HttpServletRequest request;
​
    @RequestMapping("login3")
    public String abc1(HttpServletRequest request1) {
        System.out.println("登录3");
        System.out.println("用户名"+request.getParameter("yhm"));
        System.out.println("密码"+request1.getParameter("pwd"));
        return "index";
    }

二、请求方式:restful风格


例如: stus地址
    1.新增    stus        POST请求
    2.修改    stus        PUT请求
    3.删除    stus/123    DELETE请求
    4.查找    stus/123    GET请求

三、声明session和清除session的方式

1、使用RequestMapping 注解 ,显示提示消息后自动删除提示消息,添加用户弹框消息,数据使用之后会自动删除,带状态消息的请求都要重定向到控制器,才能在页面上显示状态信息

    @RequestMapping("add")
    public String  add(RedirectAttributes ra) {
        System.out.println("添加成功");
        ra.addFlashAttribute("msg","添加成!");
//        return "redirect:/index.jsps"; 直接重定向不能拿到数据
        return  "redirect:/toIndex";
    }

2、存储数据的方法:Model、ModelMap、HttpServletRequest、HttpSession

  • Model \ModelMap 只有转发才能拿得到
  • forward 转发 redirect 重定向 ,如果使用了转发或者是重定向之后, 跳转页面路径不走视图解析器

视图解析器的配置:对跳转页面进行解析

<!-- 对跳转页面的路径解析。prefix:前缀, suffix:后缀 --> 
  <bean id="viewResolver" 
    class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 
    <property name="prefix" value="/"></property> 
    <property name="suffix" value=".jsp"></property> 
  </bean> 
​
    @RequestMapping("save")
    public String saveModule(Model m , ModelMap mm, HttpServletRequest request, HttpSession session) {
        m.addAttribute("a","葡萄");
        mm.addAttribute("b","水果");
        request.setAttribute("c","西瓜");
        session.setAttribute("d","火龙故宫");
​
         //  如果是双路径 转发也要写双层路径: forward:/users/index.jsp
        // return "forward:/toIndex";
        return "redirect:/index.jsp";
    }
​

2、清除session的两种方式

// HttpSession 方式   (推荐使用)
@RequestMapping("clear1")
    public String c1(HttpSession session) {
        session.invalidate();
        return "session";
    }
// 注解方式
    @RequestMapping("clear2")
    public String c1(SessionStatus ss) {
        ss.setComplete(); //清楚注解session
        return "session";
    }

注解方式: 清除session 在页面中不会立即刷新,解决 方法重定向到页面

 return "redirect:/session.jsp";

3、通过get 方法拿到session

    @RequestMapping("get")
    public String get(@SessionAttribute(value = "users1",required = false)  String u, HttpSession session) {
        System.out.println("users1"+ u);
        String users1 = (String) session.getAttribute("users1");
        System.out.println(users1);
        return "session";
    }

4、保存session方式一(传统方式,推荐)

 @RequestMapping("save1")
    public String s1(HttpSession session) {
        session.setAttribute("users1","admine");
        return "session";
    }

5、保存session方式二(注解方式)

@SessionAttributes({"users2"})   
@RequestMapping("save2")
    public String s2(Model model) {
        model.addAttribute("users2","lige");
        return "session";
    }

6、清除session的方式一(推荐)

    @RequestMapping("clear1")
    public String c1(HttpSession session) {
        session.invalidate();
        return "session";
    }

7、清除session的方式一(清除注解session)

  • 清除注解的方式,如果该session在页面中有展示,session被清除之后,页面中session立即消失,实际上session已经消失,需要重新刷新页面,
    @RequestMapping("clear2")
    public String c1(SessionStatus ss) {
        ss.setComplete(); 
//        return "redirect:/session.jsp";
        return "session";
    }