使用 Servlet 实现用户登录功能(包含Filter过滤器)

login.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<style>

</style>
<body>
<h1>登陆界面</h1>
<hr color="blue">
<form action="login" method="post">
<table>
	<tr>
	<td>
用户名:<input type="text" name="id" value="199000">
	</td>
	</tr>
	
	<tr>
	<td>
 密&nbsp;&nbsp;&nbsp;&nbsp;码:<input type="password" name="pass" value="123456">
	</td>
	</tr>
	
	<tr>
	<td>
	<br>
	<tr>

	<tr>
  <td width="50%" height="30" align="right">验证码:</td>
  <td width="50%" height="30" align="left">
  <input type="text" name="identifyCode">   
  <img id="img" src="validateCode.jsp" style="cursor:pointer">   
   <span></span>        
   </td>
   </tr>
   
    <tr>
	<td> 
<input type="submit" name="open" value="登录">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<input type="reset" name="off" value="取消">
	</td>
	</tr>
</table></form>
<form action="registe.jsp" method="post"><br>
没有账号?请先<input type="submit" name="registe" value="注册">
</form>	
</body>
</html>

mistake.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
密码或者用户名错误...
<hr color="red">
<form action="login.jsp" method="post">
<input type="submit" name="out" value="重新登录">
</form>
</body>
</html>

register.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>注册</title>

</head>
<body >
		<h1 align="center">用户注册</h1>
		<hr color="white">
	<table align="center">
	<form action="register_result.jsp" method="post">
		<tr>
			<td>用户名:</td>
			<td><input type="text" name="username" placeholder="请输入用户名"></td>
		</tr>
		<tr>
			<td>密码:</td>
			<td><input type="password" name="userpass" placeholder="请输入密码"></td>
		</tr>
		<tr>
			<td>确认密码:</td>
			<td><input type="password" name="usepass" placeholder="请确认密码"></td>
		</tr>
		<tr>
			<td>性别:</td>
			<td>
				<input type="radio" name="sex" value="boy" checked/>男
			    <input type="radio" name="sex" value="girl" />女
			</td><!--checked为默认选中-->
		</tr>
		<tr>
			<td>爱好:</td>
			<td>
				<input type="checkbox" name="interest" value="编程" checked/>编程
			    <input type="checkbox" name="interest" value="旅游" />旅游
			    <input type="checkbox" name="interest" value="游戏"  />游戏
			    <input type="checkbox" name="interest" value="爬山" />爬山
			</td>
		</tr>
		<tr>
			<td>学历:</td>
			<td>
			<select name="grade">
				<option value="gz">高中</option>
				<option value="dz">大专</option>
				<option value="bk" selected>本科</option><!--selected是默认选中-->
				<option value="ss">硕士</option>
			</select>
			</td>
		</tr>
		<tr>
			<td>个人简介:</td>
			<td><textarea rows="5" cols="20" name="info"></textarea></td>
		</tr>
		<tr align="center">
			<td colspan="2">
			<input type="submit" value="注册"  "/>
			&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
			<input type="reset" value="取消"/>
			</td>
		</tr>
</form>
</table>
</body>
</html>

success.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" import="java.util.*"  import="java.util.Date"%>
    <%@ page import="java.text.SimpleDateFormat"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h3>账号登录成功!</h3>
<%
//获取用户名
	if(session.getAttribute("id")!=null){
		String id = (String)session.getAttribute("id");
		out.println(id);
	}
%>
<%
//强制转换。application需要关闭服务器才能关闭掉application对象(session是需要关闭浏览器)
	Integer count = (Integer)application.getAttribute("count");	
//如果count为null则令count=1
	if(count == null){
		count=1;
		application.setAttribute("count",count);
//否则每登陆一次count++
	}else{
		count++;
		application.setAttribute("count",count);
	}
%>
<h3>欢迎您登录本页面,您是第<%=count %>个访问用户。</h3>
<%
Date now = new Date();
int year = now.getYear() + 1900;   //机器中默认从1900年开始计算年份
int month = now.getMonth()+1;  //因为在javascript中now取出的month比实际的月份小1,就好像数组的第一个元素下标是0一样
int date = now.getDate();
int day = now.getDay();
String week;  
switch(day){                   //getDay() 中 周一至周日:依次对应1234560
case 0:week = "星期日";break; 
case 1:week = "星期一";break;
case 2:week = "星期二";break;
case 3:week = "星期三";break;
case 4:week = "星期四";break;
case 5:week = "星期五";break;
default:week = "星期六";
}
%>
   今天是<%=year %>年<%=month %>月<%=date %>日<%=week %>;<br> 
   
 <a href = "http://www.baidu.com" target ="blank">百度</a><br>   
 <a href = "success1.jsp" target ="blank">用户管理</a><br>   
 <a href = "success1.jsp" target ="blank">新闻管理</a><br>   

<hr color="blue">

<h2>主页正在开发,请期待......</h2>

<form action="login.jsp" method="post">
	<input type="submit" name="out" value="退出">
</form>

</body>
</html>

success1.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
该页面正在开发!
<hr color="red">
<form action="login.jsp" method="post">
<input type="submit" name="out" value="重新登录">
</body>
</html>

Filter2.java

package filter1;

import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebFilter;

/**
 * Servlet Filter implementation class Filter2
 */
@WebFilter("/*")
public class Filter2 implements Filter {

    /**
     * Default constructor. 
     */
    public Filter2() {
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see Filter#destroy()
	 */
	public void destroy() {
		// TODO Auto-generated method stub
	}

	/**
	 * @see Filter#doFilter(ServletRequest, ServletResponse, FilterChain)
	 */
	public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
		// TODO Auto-generated method stub
		// place your code here
		request.setCharacterEncoding("utf-8");
		response.setCharacterEncoding("utf-8");
		response.setContentType("text/html ; charset=UTF-8");
		

		// pass the request along the filter chain
		chain.doFilter(request, response);
	}

	/**
	 * @see Filter#init(FilterConfig)
	 */
	public void init(FilterConfig fConfig) throws ServletException {
		// TODO Auto-generated method stub
	}

}

MyFilter1.java

package filter1;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;

/**
 * Servlet Filter implementation class MyFilter1
 * 
 */
@WebFilter({"/success.jsp","/success1.jsp"})
public class MyFilter1 implements Filter {

    /**
     * Default constructor. 
     */
    public MyFilter1() {
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see Filter#destroy()
	 */
	public void destroy() {
		// TODO Auto-generated method stub
	}

	/**
	 * @see Filter#doFilter(ServletRequest, ServletResponse, FilterChain)
	 */
	public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
		// TODO Auto-generated method stub
		// place your code here
		// pass the request along the filter chain
		request.setCharacterEncoding("utf-8");
		response.setCharacterEncoding("utf-8");
		response.setContentType("text/html ; charset=UTF-8");
		
		PrintWriter out=response.getWriter();
		HttpSession session=((HttpServletRequest) request).getSession();
		
		String id=(String) session.getAttribute("id");
		if(id==null) {
			out.print("没有登录,请<a href='login.jsp'>重新登录</a>");
			return;
		}
		
		
		
		chain.doFilter(request, response);
	}

	/**
	 * @see Filter#init(FilterConfig)
	 */
	public void init(FilterConfig fConfig) throws ServletException {
		// TODO Auto-generated method stub
	}

}

login_Servlet.java

package Servelt;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;


@WebServlet("/login")
public class login_Servlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public login_Servlet() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		PrintWriter out = response.getWriter();
		HttpSession session = request.getSession();
		ServletContext application = request.getServletContext();
		//获取到信息
		String id = request.getParameter("id");//获取账号
		String pass = request.getParameter("pass");
		
	//登陆验证
		if(id.equals("199000") && pass.equals("123456")){
	//将账号保存到session变量中
		session.setAttribute("id",id);
	//登陆成功跳转页面
		request.getRequestDispatcher("success.jsp").forward(request, response);
	// 存储用户名
		session.setAttribute("id","lss");
		}
	//第二个用户登陆验证
	else if(id.equals("1990001") && pass.equals("123456")){
	//将账号保存到session变量中
		session.setAttribute("id",id);
	//登陆成功跳转页面
		request.getRequestDispatcher("success.jsp").forward(request, response);	
	//存储用户名
		session.setAttribute("id","sf");
		}
	//第三个用户登陆验证
	else if(id.equals("1990002") && pass.equals("123456")){
		//将账号保存到session变量中
			session.setAttribute("id",id);
		//登陆成功跳转页面
			request.getRequestDispatcher("success.jsp").forward(request, response);
		//存储用户名
			session.setAttribute("id","lll");
			}
	else{
	//登录失败跳转页面
		request.getRequestDispatcher("mistake.jsp").forward(request, response);	
	}
	}
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		doGet(request, response);
	}
	
}

validateCode.jsp

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<%@ page import="java.util.Random"%>
<%@ page import="java.io.OutputStream"%>
<%@ page import="java.awt.Color"%>
<%@ page import="java.awt.Font"%>
<%@ page import="java.awt.Graphics"%>
<%@ page import="java.awt.image.BufferedImage"%>
<%@ page import="javax.imageio.ImageIO"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Insert title here</title>
</head>
<body>
<%
	int width = 60;
	int height = 20;
	BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);		//创建图片
	Graphics grap = image.getGraphics();
	Random random = new Random();
	// 创建背景颜色
	grap.setColor(new Color(random.nextInt(50)+200,random.nextInt(50)+200,random.nextInt(50)+200));
	grap.fillRect(0, 0, width, height);
	// 画出边界
	grap.setColor(Color.black);
	grap.drawRect(0, 0, width-1, height-1);
	String key = "";		// 存放生成随机4位验证码
	for(int i=0;i<4;i++)
		key = key + random.nextInt(10);
	//制作干扰
	for (int i=0; i<5; i++) {
		int x1 = random.nextInt(width);
		int x2 = random.nextInt(width);
		int y1 = random.nextInt(height);
		int y2 = random.nextInt(height);
		grap.drawLine(x1, y1, x2, y2);	
	}
	session.setAttribute("key", key);//将验证码存储到session中
	grap.setColor(new Color(0, 100, 0));
	grap.setFont(new Font("Candara", Font.BOLD, 24));
	grap.drawString(key, 8, 16);
	grap.dispose();
	response.setContentType("image/jpeg");
	out.clear();
	out = pageContext.pushBody();
	OutputStream strm = response.getOutputStream();
	ImageIO.write(image, "jpeg", strm);
	strm.close();
	
%>
</body>
</html>

 

 

  • 7
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值