前几篇笔记只涉及到转发对象和视图、没有涉及Servlet API、
在要保存Cookie的时候就要用到Servlet API了、
Student.java
id name age三个属性及其set get方法、无参构造函数、有参构造函数(姓名和密码)、
login.jsp
写一个登录的表单,有用户名userName和密码password
<form action="user/login.do" method="post">
UserController
@Controller
@RequestMapping("/user")
public class UserController {
@RequestMapping("/login")
public String login(HttpServletRequest request,HttpServletResponse response){
System.out.println("----登录验证---");
String userName=request.getParameter("userName");
String password=request.getParameter("password");
Cookie cookie=new Cookie("user",userName+"-"+password);
cookie.setMaxAge(1*60*60*24*7); //设置cookie时间、以秒为单位
User currentUser=new User(userName,password); //构造当前用户
response.addCookie(cookie); //添加到cookie中去
HttpSession session=request.getSession(); //获取session
session.setAttribute("currentUser", currentUser);//将当前用户放到session中
return "redirect:/main.jsp";
}
}
mian.jsp
<!-- 以下为body中的内容 -->
Main.jsp ${currentUser.userName}
在UserController中、方法的参数可以仅有request或者session、
@RequestMapping("/login2")
public String login2(HttpServletRequest request){
return "redirect:/main.jsp";
}
@RequestMapping("/login3")
public String login3(HttpSession session){
return "redirect:/main.jsp";
}
Spring还可以把对象自动转换为Json格式、
导入jar包
在spring-mvc.xml中添加
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd"
<!-- 支持对象与json的转换。 -->
<mvc:annotation-driven/>
在UserController中添加
//通过@ResponseBody注解将user对象转换为json格式
@RequestMapping("/ajax")
public @ResponseBody User ajax(){
User user=new User("zhangsan","123");
return user;
}
在login.jsp中添加
<a href="user/ajax.do">测试ajax</a>
新建工具类将对象转换为Json格式
ResponseUtil.java
package com.java1234.util;
import java.io.PrintWriter;
import javax.servlet.http.HttpServletResponse;
public class ResponseUtil {
public static void write(HttpServletResponse response,Object o)throws Exception{
response.setContentType("text/html;charset=utf-8");
PrintWriter out=response.getWriter();
out.println(o.toString());
out.flush();
out.close();
}
}