JSP小项目,会员管理系统之实现登录功能

时间:2022-03-07 09:19:36

1.上学期,在学期结束之际,学校安排实训,做了一个小小的JSP会员管理系统,今天,来介绍一下会员管理系统中的登录模块,此系统是使用JSP和Servlet技术,在加上JavaBean来实现的,是一个MVC模式来写的一个小系统,其中JavaBean的实例放在tom.bean包下,Servlet控制器代码放在tom.servlet包下,jsp页面放在WebRoot包下,其中在WEB_INF的lib目录下必须把连接数据库的驱动文件sqljdbc.jar包添加进去,接下来开始介绍登录功能的实现,先附上主页index.jsp的效果,代码很简单,就不附上了,在文章末尾我将附上源代码:

JSP小项目,会员管理系统之实现登录功能

2.该模块的模型JavaBean描述用户登录的信息,视图部分由两个JSP页面组成,一个页面是通过用户提交的登录信息,即表单内容(其中有会员名和密码),提交到Servlet控制器里面去,通过连接数据库验证登录信息,登录成功,显示一个登录成功的界面,错误提示会员重新登录,控制器Servlet负责验证会员名和密码是否正确,并负责更新视图,即跳转页面。

3.首先,新建一个用于输入登录信息的页面,页面名为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>

<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->

</head>

<body>
<div align="center">
<table width="536">
<tr>
<td colspan="4"><div align="center"><strong><font size="+3" color="#FFCCCC">会员管理系统</font> </strong></div></td>
</tr>
<tr>
<td width="173"><div align="center"><a href="register.jsp">会员注册</a></div></td>
<td width="119"><div align="center"><a href="login.jsp">会员登录</a></div></td>
<td width="112"><div align="center"><a href="uploadPic.jsp">上传照片</a></div></td>
<td width="112"><div align="center"><a href="lookMember.jsp">浏览会员</a></div></td>
</tr>
<tr>
<td><div align="center"><a href="updateRegister.jsp">修改注册信息</a></div></td>
<td><div align="center"><a href="updatePwd.jsp">修改密码</a></div></td>
<td><div align="center"><a href="exit">退出登录</a></div></td>
<td><div align="center"><a href="index.jsp">返回主页</a></div></td>
</tr>
</table>
</div>
<center>
<form action="login" method="post">
<object id="FlashID" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="400" height="200">
<param name="movie" value="flash/login.swf" />
<param name="quality" value="high" />
<param name="wmode" value="opaque" />
<param name="swfversion" value="6.0.65.0" />
<!-- 此 param 标签提示使用 Flash Player 6.0 r65 和更高版本的用户下载最新版本的 Flash Player。如果您不想让用户看到该提示,请将其删除。 -->
<param name="expressinstall" value="Scripts/expressInstall.swf" />
<!-- 下一个对象标签用于非 IE 浏览器。所以使用 IECC 将其从 IE 隐藏。 -->
<!--[if !IE]>-->
<object type="application/x-shockwave-flash" data="flash/login.swf" width="400" height="200">
<!--<![endif]-->
<param name="quality" value="high" />
<param name="wmode" value="opaque" />
<param name="swfversion" value="6.0.65.0" />
<param name="expressinstall" value="Scripts/expressInstall.swf" />
<!-- 浏览器将以下替代内容显示给使用 Flash Player 6.0 和更低版本的用户。 -->
<div>
<h4>此页面上的内容需要较新版本的 Adobe Flash Player。</h4>
<p><a href="http://www.adobe.com/go/getflashplayer"><img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="获取 Adobe Flash Player" /></a></p>
</div>
<!--[if !IE]>-->
</object>
<!--<![endif]-->
</object>
<br/>请您登录
<table>
<tr><td>登录名:</td><td><input type="text" name="logname" width="21"/></td></tr>
<tr><td>密码:</td><td><input type="password" name="password" width="21"/></td></tr>
</table>
<table>
<tr><td><input type="submit" value="登录" name="login">  <input type="reset" value="重置" name="reset"></td></tr>
</table>
</form>
</center>
</body>
</html>

 页面效果如下:

JSP小项目,会员管理系统之实现登录功能

然后根据我们数据表中定义的两个字段和表单输入的登录名和密码建立一个JavaBean的实例用来描述用户登录信息,即在tom.bean包下新建一个Login.java文件,其中定义了两个变量,通过SetXxx()和getXxx()方法封装数据:

Login.java文件,代码如下:

package tom.bean;

public class Login {
private String logname;//声明会员名称变量
private String password;//声明会员密码变量

public String getLogname() {
return logname;
}

public void setLogname(String logname) {
this.logname = logname;
}

public String getPassword() {
return password;
}

public void setPassword(String password) {
this.password = password;
}


}

在login.jsp页面中通过表单提交到Servlet上,即:

<form action="login" method="post"></form>

所以我们必须新建一个Servlet控制器,即 LoginMessage.java文件:

LoginMessage.java文件代码如下:

package tom.servlet;

import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import tom.bean.Login;

public class LoginMessage extends HttpServlet {

//初始化Servlet的方法
@Override
public void init(ServletConfig config) throws ServletException {
// 加载驱动
try {
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver")
.newInstance();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
super.init(config);
}

@Override
protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
// 获取表单的内容
String name = request.getParameter("logname");
String pwd = request.getParameter("password");

// 获取连接
try {
String uri = "jdbc:sqlserver://127.0.0.1:1433;DatabaseName=ComeHere";
String user = "xg";
String password = "123456";
Connection con = DriverManager.getConnection(uri, user, password);
// 创建Statement对象
Statement st = con.createStatement();
//创建sql语句,查询会员名称和密码
String sql="select * from member where logname='"+name+"'and password='"+pwd+"'";
//执行sql语句
ResultSet rs=st.executeQuery(sql);
if(rs.next()){
//获取JavaBean对象,封装数据
Login login=new Login();
login.setLogname(name);
login.setPassword(pwd);
HttpSession session=request.getSession(true);
session.setAttribute("login", login);
RequestDispatcher dispatcher=request.getRequestDispatcher("loginMessage.jsp");
dispatcher.forward(request, response);
}else{
//登录失败请会员重新登录
response.setContentType("text/html;charset=GB2312");
PrintWriter out=response.getWriter();
out.println("<html><body>");
out.println("会员登录失败");
out.println("<a href='login.jsp'>重新登录</a>");
out.println("</body></html>");
}
} catch (Exception e) {
e.printStackTrace();
}
}

@Override
protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}

}

如果对于连接数据库不理解的话,可以浏览一下我的博客文章:http://blog.csdn.net/u012561176/article/details/41245919 ,如果对于数据库连接有问题的,可以查阅相关文章,也可以评论。

其中登录成功的话,就会转发到loginMessage.jsp这个视图上去,接下来附上loginMessage.jsp页面的代码,如下:

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ page import="tom.bean.Login" %>
<%
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>

<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->

</head>

<body>
<div align="center">
<table width="536">
<tr>
<td colspan="4"><div align="center"><strong><font size="+3" color="#FFCCCC">会员管理系统</font> </strong></div></td>
</tr>
<tr>
<td width="173"><div align="center"><a href="register.jsp">会员注册</a></div></td>
<td width="119"><div align="center"><a href="login.jsp">会员登录</a></div></td>
<td width="112"><div align="center"><a href="uploadPic.jsp">上传照片</a></div></td>
<td width="112"><div align="center"><a href="lookMember.jsp">浏览会员</a></div></td>
</tr>
<tr>
<td><div align="center"><a href="updateRegister.jsp">修改注册信息</a></div></td>
<td><div align="center"><a href="updatePwd.jsp">修改密码</a></div></td>
<td><div align="center"><a href="exit">退出登录</a></div></td>
<td><div align="center"><a href="index.jsp">返回主页</a></div></td>
</tr>
</table>
</div>
<center>
<jsp:useBean id="login" class="tom.bean.Login" scope="session"></jsp:useBean>
<br/><jsp:getProperty property="logname" name="login"/>登录成功
<br/>登录密码为:<jsp:getProperty property="password" name="login"/>
</center>
</body>
</html>

其中action="login"中login是在浏览器的地址栏中所需要的,单击一个表单的提交按钮,访问Servlet,Servlet中必须在WEB_INF下的web.xml文件:其中要在web.xml文件中添加<servlet>标记和<servlet-mapping>标记,在这里我们可以这样配置Servlet:

  <servlet>
<servlet-name>login</servlet-name>
<servlet-class>tom.servlet.LoginMessage</servlet-class>
</servlet>

<servlet-mapping>
<servlet-name>login</servlet-name>
<url-pattern>/login</url-pattern>
</servlet-mapping>


其中<servlet>标记下的:<servlet-name>子标记定义的是servlet的名字可以随便定义,最好是小写的,如果是两个单词合并,如Login和Message合并。应该写为loginMessage,最好有所规范, <servlet-class>子标记是你定义Servlet控制器Java文件的路径,为包名+类名,

其中<servlet-mapping>标记下的:<servlet-name>子标记必须和<servlet>标记下的<servlet-name>的名称相同,<url-pattern>子标记为"/login",那么用户在书写表单时的<form action="login" method="post">action值相同,但要加上个/,此时浏览器在点击表单里的登录按钮后便会访问这个Servlet了。

4.这样就实现了登录的效果,接着我们访问登录界面,地址为http://localhost:8083/Project1/login.jsp 效果如下:

JSP小项目,会员管理系统之实现登录功能

输入你之前插入数据库的字段内容或者注册成功过的会员名时:

JSP小项目,会员管理系统之实现登录功能

点击登录按钮后:

JSP小项目,会员管理系统之实现登录功能

如果输入错误会员名和密码时:

JSP小项目,会员管理系统之实现登录功能

点击登录按钮,会出现下图的界面,要求你重新登录,重新输入登录信息:

JSP小项目,会员管理系统之实现登录功能

点击重新登录链接,又会到登录界面。

如果运行项目时发现下图错误时:

JSP小项目,会员管理系统之实现登录功能

可以打开你的SQL Server 2005软件,连接下图windows身份验证的数据库:

JSP小项目,会员管理系统之实现登录功能

找到下图为xg的登录名:

JSP小项目,会员管理系统之实现登录功能

右键选择xg的属性,修改密码即可:

JSP小项目,会员管理系统之实现登录功能

因为密码过期了,在输入与你servlet连接数据库的密码一样,然后确定,在连接下图的SQL Server身份验证服务器即可:

JSP小项目,会员管理系统之实现登录功能

JSP小项目,会员管理系统之实现登录功能

就没错误了,可以访问数据库了。

5.下面附上完整代码下载地址:http://download.csdn.net/download/u012561176/8483147 ,希望对大家有用!

6.以上内容仅供大家学习参考所用,写得不好请见谅,如有错误请指出,如有问题,可以一起讨论,谢谢!