一、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 最经典的方式拿参数
- 导入servlet包
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>servlet-api</artifactId>
<version>6.0.53</version>
</dependency>
- 使用:
@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";
}