input{
margin:12px;
font-size:15px;
color:SaddleBrown;
vertical-align:middle;
padding:5px;
font-family:楷体;
font-weight:bold;
}
[type=text],[type=password]{
width:180px;
height:30px;
border-radius:5px;
}
[type=submit],[type=reset] {
width:80px;
padding:5px;
background:Crimson;
color:white;
font-weight:bold;
font-family:楷体;
border-radius:7px;
}
body{font-weight:bold;font-family:楷体;}
a{text-decoration:none;}
a:link{color:blueViolet;}
a:visited{color:brown;}
a:hover{color:orangeRed;}
a:active{color:dimGray;}
from.css
<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=UTF-8" />
<title>表单</title>
<link rel=stylesheet href="from.css" type="text/css">
<script type="text/javascript">
/*用户名验证*/
function check_name() {
var nameNode = document.getElementsByName("user")[0];
var name = nameNode.value;
var spanNode = document.getElementById("userNameSpan");
if(name.length > 6){
spanNode.innerHTML = "用户名不能超过6个字".fontcolor("red");
return false;
}
if(name.length == 0) {
spanNode.innerHTML = "用户名不能为空".fontcolor("red");
return false;
}
spanNode.innerHTML="";
return true;
}
/*密码验证*/
function check_password() {
var nameNode = document.getElementsByName("password")[0];
var name = nameNode.value;
var spanNode = document.getElementById("userPassSpan");
if(name.length > 16){
spanNode.innerHTML = "密码不能超过16个字".fontcolor("red");
return false;
}
if(name.length == 0) {
spanNode.innerHTML = "密码不能为空".fontcolor("red");
return false;
}
spanNode.innerHTML="";
return true;
}
function submitForm() {
return check_name()&&check_password();
}
function changeImage(img) {
/*后面添加随机值,防止浏览器缓存*/
img.src = img.src + "?" + new Date().getTime();
}
</script>
</head>
<body align="center">
<h1>登 入</h1>
<form align="center" action="/ServletExample6_Cookie_Session/SessionDemo" method="get" οnsubmit="return submitForm()">
用 户<input type="text" name="username" οnblur="check_name()" placeholder="请输入账号"/><br>
<span id="userNameSpan"></span><br/>
密 码<input type="password" name="userpassword" οnblur="check_password()" placeholder="请输入密码"/><br>
<span id="userPassSpan"></span><br/>
<!-- 图片点击时,重新发送图片请求,更换图片验证码 -->
<img src="/ServletExample6_Cookie_Session/RandomPictureServlet" οnclick="changeImage(this)"/><br>
认 证<input type="password" name="authentication" placeholder="请输入认证码"/><br>
<span id="userAuthenticationSpan"></span><br/>
<input type="submit" value="提交" />
<input type="reset" value="重置"/><br/>
</form>
</body>
</html>
login.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
登入失败
</body>
</html>
defeated.html
<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=UTF-8" />
</head>
<body>
登入成功<a href="/ServletExample6_Cookie_Session/DeleteSessionServlet">退出登入</a>
</body>
</html>
succeed.html
package cn.et;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
public class SessionDemo extends HttpServlet {
private static final long serialVersionUID = 1L;
public SessionDemo() {
super();
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
try {
Thread.sleep(1000*3);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("login");
//Session技术把用户的数据存储在浏览器中
HttpSession session = request.getSession(false);
User sessionUser = (User)session.getAttribute("user");
//判断root 123456这个账号是否已登入,可选择处理方式,比如切换账号、跳至已登入的账号...
User loginUser = new User("root","123456");
if(loginUser.equals(sessionUser)) {
request.getRequestDispatcher("/succeed.html").forward(request, response);
return;
}
String username = request.getParameter("username");
String userpassword = request.getParameter("userpassword");
String authentication = request.getParameter("authentication");
if(username!=null || userpassword!=null) {
System.out.println(username.equals("root") && userpassword.equals("123456"));
//判断用户名、密码是否正确
if(username.equals("root") && userpassword.equals("123456")) {
//向Session中存入一个登入标记
request.getSession().setAttribute("user",new User("root","123456"));
request.getRequestDispatcher("/succeed.html").forward(request, response);
return;
} else {
request.getRequestDispatcher("/defeated.html").forward(request, response);
}
}else {
request.getRequestDispatcher("/defeated.html").forward(request, response);
}
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
package cn.et;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
public class DeleteSessionServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
public DeleteSessionServlet() {
super();
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
HttpSession session = request.getSession(false);
if(session==null){
request.getRequestDispatcher("/login.html").forward(request, response);
return;
}
session.removeAttribute("user");
request.getRequestDispatcher("/login.html").forward(request, response);
return;
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}