* 十天内免登录。
- Cookie禁用之后,一些web站点的功能就无法使用了。
- 当Cookie禁用之后,怎么实现session机制呢?
URL重写机制。
可以在URL后面添加:jsessionid..
url;jsessionid=32位长度的字符串?name=value&name=value&name=value....
但这种方式会大大提高编程复杂度,每一个URL后面都需要动态的添加jsessionid
所以99%的web站点都会提示你开启浏览器Cookie功能。
- 在servlet中Cookie的API?
* 创建Cookie
Cookie cookie = new Cookie(String name,String value);
* 设置有效时长
cookie.setMaxAge(秒);
秒 > 0 存储到硬盘文件
秒 = 0 删除该Cookie
秒 < 0 不被存储
不设置有效时长,默认是:存储到浏览器缓存当中,直到浏览器关闭之后销毁Cookie。
* 设置Cookie的关联路径
cookie.setPath("/crm");
以上代码的含义表示:以后浏览器只有发送/crm请求的时候,该Cookie就会被自动发送给服务器。
* 获取Cookie的name和value
String name = cookie.getName();
String value = cookie.getValue();
* 将Cookie发送到浏览器客户端
response.addCookie(cookie);
* 服务器获取浏览器客户端提交的Cookie
Cookie[] cookies = request.getCookies();
共六部
案例
package com.bjpowernode.p2padmin.user.controller;
import com.bjpowernode.p2padmin.user.model.UserInfo;
import com.bjpowernode.p2padmin.user.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.util.List;
import java.util.Map;
/**
* ClassName:UserController
* Package:com.bjpowernode.p2padmin.user.controller
* Description:
*
* @date:2018/10/27 9:23
* @author:bjpowernode.com
*/
@Controller
public class UserController {
@Autowired
private UserService userService;
@RequestMapping("/")
public String toLogin(HttpServletRequest request,HttpServletResponse response, HttpSession session,Model model){
Cookie cookies[]=request.getCookies();
if(cookies==null){
return "user/login";
}
UserInfo userInfo=new UserInfo();
for(Cookie cookie: cookies){
if("username".equals(cookie.getName())){
userInfo.setUsername(cookie.getValue());
continue;
}
if("password".equals(cookie.getName())){
userInfo.setPassword(cookie.getValue());
continue;
}
}
if(userInfo.getUsername()==null||userInfo.getPassword()==null){
return "user/login";
}
Integer result= userService.login(userInfo);
switch (result){
case 1:
model.addAttribute("errorMessage","对不起!账号错误!");
return "user/login";
case 2:
model.addAttribute("errorMessage","对不起!密码错误!");
Cookie cookieUsername1=new Cookie("username","");
cookieUsername1.setMaxAge(1);
cookieUsername1.setPath("/");
Cookie cookiePassword1=new Cookie("password", "");
cookiePassword1.setMaxAge(1);
cookiePassword1.setPath("/");
response.addCookie(cookieUsername1);
response.addCookie(cookiePassword1);
return "user/login";
}
session.setAttribute("userSession",userInfo);
Cookie cookieUsername=new Cookie("username",userInfo.getUsername());
cookieUsername.setMaxAge(60*60*24*7);
cookieUsername.setPath("/");
Cookie cookiePassword=new Cookie("password", userInfo.getPassword());
cookiePassword.setMaxAge(60*60*24*7);
cookiePassword.setPath("/");
response.addCookie(cookieUsername);
response.addCookie(cookiePassword);
return "main";
}
@RequestMapping("/login")
public String login(UserInfo userInfo, String isAutoLogin, Model model, HttpSession session, HttpServletResponse response){
Integer result= userService.login(userInfo);
switch (result){
case 1:
model.addAttribute("errorMessage","对不起!账号错误!");
return "user/login";
case 2:
model.addAttribute("errorMessage","对不起!密码错误!");
return "user/login";
}
session.setAttribute("userSession",userInfo);
if(isAutoLogin!=null){
Cookie cookieUsername=new Cookie("username",userInfo.getUsername());
cookieUsername.setMaxAge(60*60*24*7);
cookieUsername.setPath("/");
Cookie cookiePassword=new Cookie("password", userInfo.getPassword());
cookiePassword.setMaxAge(60*60*24*7);
cookiePassword.setPath("/");
response.addCookie(cookieUsername);
response.addCookie(cookiePassword);
}
return "main";
}
@RequestMapping("/onPermission")
public String onPermission(){
return "user/onPermission";
}
@RequestMapping("/admin/users")
public String users( Model model){
List<UserInfo> userList=userService.getUserAll();
model.addAttribute("userInfoList",userList);
return "user/users";
}
@RequestMapping("/toDisRole/{userId}")
public String toDisRole(@PathVariable Integer userId ,Model model){
List<Map> roleData= userService.intiRoleDataByUserId(userId);
model.addAttribute("roleDataList",roleData);
model.addAttribute("userId",userId);
return "user/distributionRole";
}
@RequestMapping("/admin/disRole")
public String disRole(Integer userId,Integer [] roleIds){
userService.disRole(userId,roleIds);
return "redirect:/admin/users";
}
}