Jsp实现简单登录、注册、以及简单计算等功能

Jsp老师布置的一个作业,提供了几个题目,让我们用Jsp实现一些简单的功能,新手上路,做的比较菜,如果大家有需要的欢迎大家浏览,如果觉得我的代码里面有什么错误清大家指正,感谢!

目录

一、登录界面

二、用户注册

三、主要可进行的操作

1、操作选择界面

2、查看账号密码(Cookie)

3、选择选修课程

4、计算n的阶乘

5、计算器(加减乘除)

6、计算x的y次方

四、结语

五、参考文章

六、补充



一、登录界面

主要是三块: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>密&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;码:</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-patter
  • 38
    点赞
  • 197
    收藏
    觉得还不错? 一键收藏
  • 15
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值