ac
package web;
import java.io.IOException;
import java.io.PrintWriter;
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 ActionServlet extends HttpServlet {
public void service(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
String url=request.getRequestURI();
String action=url.substring(url.lastIndexOf("/")+1, url.lastIndexOf("."));
HttpSession session=request.getSession();
session.setMaxInactiveInterval(30); //验证超时30秒
if("login".equals(action)){
String user=request.getParameter("user");
String pwd=request.getParameter("pwd");
String code=request.getParameter("code");
String vcode=session.getAttribute("code").toString();
if(!code.equalsIgnoreCase(vcode)){
request.setAttribute("msg_code_error", "Code Error!");
request.getRequestDispatcher("login.jsp").forward(request, response);
return;
}
if(user.equals("111")&&pwd.equals("111")){
session.setAttribute("user", user);
// response.sendRedirect("index.jsp"); //禁用cookies,url重写,地址后面带参数传session
response.sendRedirect(response.encodeRedirectUrl("index.jsp"));
}else{
request.setAttribute("msg_user", "User Data Error!");
request.getRequestDispatcher("login.jsp").forward(request, response);
}
}else if("logout".equals(action)){
session.invalidate();
response.sendRedirect("login.jsp");
}
}
}
package web;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.util.Random;
import javax.imageio.ImageIO;
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 Code extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//空白图片
BufferedImage image=new BufferedImage(100, 30, BufferedImage.TYPE_INT_RGB);
//画笔
Graphics g=image.getGraphics();
Random ran=new Random();
//画笔颜色
g.setColor(new Color(ran.nextInt(255),ran.nextInt(255),ran.nextInt(255)));
//矩形背景
g.fillRect(0, 0, 100,30);
//字符串
String code=getNum(5);
HttpSession session=request.getSession();
session.setAttribute("code", code);
g.setColor(new Color(0,0,0));
g.setFont(new Font(null,Font.BOLD, 24));
g.drawString(code, 5,25);
//干扰线
for(int i=0;i<5;i++){
g.setColor(new Color(ran.nextInt(255),ran.nextInt(255),ran.nextInt(255)));
g.drawLine(ran.nextInt(100), ran.nextInt(30),ran.nextInt(100), ran.nextInt(30));
}
response.setContentType("image/jpeg");
OutputStream os=response.getOutputStream();
ImageIO.write(image,"jpeg", os);
os.close();
}
private String getNum(int size){
String str="ABCDEFGHJKLNMPQRSTUVWXYZ23456789";
String code="";
Random ran=new Random();
for(int i=0;i<size;i++){
code+=str.charAt(ran.nextInt(str.length()));
}
return code;
}
}
<%@page pageEncoding="utf-8" contentType="text/html; charset=utf-8"%>
<html>
<head>
<style type="text/css">
.s1{
cursor: pointer;
}
</style>
</head>
<body>
<form action="login.do" method="post">
user:<input name="user"/>
<%
String msg=(String)request.getAttribute("msg_user");
%>
<span style="color:red"><%=(msg==null?"":msg)%></span>
</br><br/>
pwd: <input name="pwd" type="password"><br/>
code:<input name="code">
<img class="s1" src="code" title="change" onclick="this.src='code?'+Math.random();">
<%
String msg2=(String)request.getAttribute("msg_code_error");
%>
<span style="color:red"><%=(msg2==null?"":msg2)%></span>
<br/><br/>
<input type="submit" value="POST">
</form>
</body>
</html>
index
<%@page pageEncoding="utf-8" contentType="text/html; charset=utf-8"%>
<%
Object user=session.getAttribute("user");
if(user==null){
response.sendRedirect("login.jsp");
return;
}
%>
<html>
<head></head>
<body>
<h4>Welcome,<%=user.toString() %></h4>
<a href="logout.do">Logout</a>
</body>
</html>
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<servlet>
<servlet-name>ActionServlet</servlet-name>
<servlet-class>web.ActionServlet</servlet-class>
</servlet>
<servlet>
<servlet-name>Code</servlet-name>
<servlet-class>web.Code</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ActionServlet</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>Code</servlet-name>
<url-pattern>/code</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>