Jsp老师布置的一个作业,提供了几个题目,让我们用Jsp实现一些简单的功能,新手上路,做的比较菜,如果大家有需要的欢迎大家浏览,如果觉得我的代码里面有什么错误清大家指正,感谢!
目录
一、登录界面
主要是三块:1、登录界面;2、验证码部分;3、LoginServlet判断用户名密码是否正确。
完整代码如下:
login.jsp
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>登录界面</title>
</head>
<body>
<%
if(session.getAttribute("count")==null) {
session.setAttribute("count", 0);
application.setAttribute("flag", 0);
}
Cookie[] cookies = request.getCookies();
int flag;
try {
flag = (int)application.getAttribute("flag");
}catch(Exception e) {
flag = 0;
}
if(flag == 1)
{
String cookieName = (String)session.getAttribute("cookieName");
for(Cookie user :cookies) {
if(user.getName().equals(cookieName)) {
response.sendRedirect(request.getContextPath()+"/sucLogin.jsp?userName="+cookieName);
}
}
}
else {
%>
<center>
<h1>欢迎使用 </h1>
<form action="<%=request.getContextPath()%>/LoginServlet" method="post">
<table>
<tr>
<td>用户名:</td>
<td><input type="text" name="userName" style="width: 155px; " value="${param.userName}"></td>
</tr>
<tr>
<td>密 码:</td>
<td><input type="password" name="passWord" style="width: 155px; "></td>
</tr>
<tr>
<td>验证码:</td>
<td>
<input type="text" name="validateCode" style="width: 60px; height: 20px">
<img id="validateCode" src="validateCode.jsp" οnclick="javascript:document.getElementById('validateCode').src='validateCode.jsp?'+Math.random();" style="width: 60px; height: 20px"/>
</td>
</tr>
<tr>
<font color="red">
<%
if(request.getAttribute("message")!= null){
out.print(request.getAttribute("message"));
}
%>
</font>
</tr>
<tr>
<td colspan="2" align="center">
<input type="submit" value=" 登录 "/>
</td>
</tr>
</table>
</form>
<form action="register.jsp" method="post" style="width: 267px; ">
<input type="submit" value=" 注册 "/>
</form>
<%} %>
</center>
</body>
</html>
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"%>
<%
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();
%>
LoginServlet.java(包:Servlet)
package Servlet;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class LoginServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
this.doPost(req, resp);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String userName = request.getParameter("userName"); //接收用户名
String passWord = request.getParameter("passWord"); //接收密码
String validateCode = request.getParameter("validateCode"); //接收验证码
//默认的初始账号
String myUser1 = "admin";
String myPassword1 = "123abc";
//判断账号密码是否正确
if((userName.equals(myUser1)&&passWord.equals(myPassword1)) ) {//判断默认账号
if(validateCode.equals((String)request.getSession().getAttribute("key"))) {
Cookie cookie = new Cookie(userName, passWord);
response.addCookie(cookie);
response.sendRedirect(request.getContextPath()+"/sucLogin.jsp?userName="+userName);
return;
}
else {
request.setAttribute("message", "验证码输入错误,请重新输入<br>");
request.getRequestDispatcher("/login.jsp").forward(request, response);
return;
}
}
else {
int count = (int)request.getSession().getAttribute("count"); //接收注册的用户数量
String[][] user = null;
if(count!=0) { //接收所有注册的用户的账号和密码
user = new String[count][2];
for(int i=0;i<count;i++) {
user[i][0] = (String)request.getSession().getAttribute("registerUserName"+i);
user[i][1] = (String)request.getSession().getAttribute("registerPassword"+i);
}
}
if(count!=0) { //判断注册账号
for(int i=0;i<count;i++) {
if(userName.equals(user[i][0])&&passWord.equals(user[i][1])) {
if(validateCode.equals((String)request.getSession().getAttribute("key"))) {
Cookie cookie = new Cookie(userName, passWord);
response.addCookie(cookie);
response.sendRedirect(request.getContextPath()+"/sucLogin.jsp?userName="+userName);
return;
}
else {
request.setAttribute("message", "验证码输入错误,请重新输入<br>");
request.getRequestDispatcher("/login.jsp").forward(request, response);
return;
}
}
}
}
request.setAttribute("message", "账号或密码错误,请重新输入<br>");
request.getRequestDispatcher("/login.jsp").forward(request, response);
}
}
}
LoginServlet的web.xml配置
<servlet>
<servlet-name>LoginServlet</servlet-name>
<servlet-class>Servlet.LoginServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>LoginServlet</servlet-name>
<url-pattern>/LoginServlet</url-pattern>
</servlet-mapping></