1.搭建springmvc框架
2.编写LoginController,login.jsp
LoginController:
1.获取用户名密码并验证,验证成功,将用户名写入Cookie(“username”,”xiaoming”),path为/,获取login.jsp传过来的回调地址,callbackurl,并重定向到callbackurl
2.验证失败,重新跳转到login.jsp
3.编写MianController1,main1.jsp主页
MianController:
1.获取Cookie信息,如果Cookie中包含usernema,并且等于xiaoming,用户已登录,直接跳转main.jsp
4.编写MianController2,main2.jsp主页
MianController:
1.获取Cookie信息,如果Cookie中包含usernema,并且等于xiaoming,用户已登录,直接跳转main.jsp
2.如果Cookie中没有此信息,表示用户需要登陆,跳转到login.jsp,并传参callbackurl为此控制器的url
5.案例
如上目录结构
1.User:
package com.tiglle.bean;
public class User {
private String username;
private String password;
private String callbackurl;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getCallbackurl() {
return callbackurl;
}
public void setCallbackurl(String callbackurl) {
this.callbackurl = callbackurl;
}
public User(String username, String password, String callbackurl) {
super();
this.username = username;
this.password = password;
this.callbackurl = callbackurl;
}
public User(String username, String password) {
super();
this.username = username;
this.password = password;
}
public User() {
super();
}
}
2.LoginController:
package com.tiglle.controller;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import com.tiglle.bean.User;
import com.tiglle.service.UserService;
@Controller
public class LoginController {
@Autowired
private UserService userService;
@RequestMapping("/login")
public String login(HttpServletRequest request,HttpServletResponse response,User user){
if(userService.checkLogin(user)){
//写入cookie
Cookie cookie = new Cookie("username",user.getUsername());
cookie.setMaxAge(300);
cookie.setPath("/");
response.addCookie(cookie);
//重定向到callbackurl
return "redirect:"+user.getCallbackurl();
}
return "login";
}
}
3.UserService:
package com.tiglle.service;
import javax.servlet.http.Cookie;
import org.springframework.stereotype.Service;
import com.tiglle.bean.User;
@Service
public class UserService {
private User user = new User("xiaoming","123456");
public boolean checkLogin(User paramUser){
if(paramUser.getUsername().equals(user.getUsername())&¶mUser.getPassword().equals(user.getPassword())){
return true;
}
return false;
}
public boolean checkCookie(Cookie[] cookies){
if(cookies!=null){
for(Cookie cookie:cookies){
if(cookie.getName().equals("username")&&cookie.getValue().equals("xiaoming")){
return true;
}
}
}
return false;
}
}
5.MainController1:
package com.tiglle.server1;
import java.util.Map;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import com.tiglle.service.UserService;
@Controller
public class MainController1 {
@Autowired
private UserService userService;
@RequestMapping("/main1")
public String main1(HttpServletRequest request,Map<String,String> map){
Cookie[] cookies = request.getCookies();
if(userService.checkCookie(cookies)){
return "main1";
}
map.put("callbackurl", "/main1");
return "login";
}
}
6.MainController2:
package com.tiglle.server2;
import java.util.Map;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import com.tiglle.service.UserService;
@Controller
public class MainController2 {
@Autowired
private UserService userService;
@RequestMapping("/main2")
public String main2(HttpServletRequest request,Map<String,String> map){
Cookie[] cookies = request.getCookies();
if(userService.checkCookie(cookies)){
return "main2";
}
map.put("callbackurl", "/main2");
return "login";
}
}
7.login.jsp:
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>登录页面</title>
</head>
<body>
<center>
<form action="login">
用户名:<input type="text" name="username"/><br/>
密 码:<input type="text" name="password"/><br/>
<input type="hidden" name="callbackurl" value="${callbackurl }"/><br/>
<input type="submit" value="登录"/><br/>
</form>
</center>
</body>
</html>
8.main1.jsp:
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>主页1</title>
</head>
<body>
主页1
</body>
</html>
9.main2.jsp:
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>主页2</title>
</head>
<body>
主页2
</body>
</html>
- index.jsp:
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>首页</title>
</head>
<body>
<%
request.getRequestDispatcher("/WEB-INF/page/login.jsp").forward(request, response);
%>
</body>
</html>
此时,打开访问main1会出现登录页面,当登录成功,访问main2就直接进入主页面,无需登录,反之一样。