java jsp+servlet实现登录网页设计
这次涉及到四个文件:
登录页面:login.jsp
登录成功欢迎页面:success.jsp
登录失败页面:fail.jsp
Servlet处理文件:LoginServlet.java
其实还涉及到一个文件:web.xml,这个后面再说:
下面分别介绍这几个文件:
LoginServlet.java 内容:
package
org.cai.servlet ;
import
java.sql.* ;
import
java.io.* ;
import
javax.servlet.http.* ;
import
javax.servlet.* ;
public
class
LoginServlet
extends
HttpServlet
implements
Servlet{
public
LoginServlet(){
}
protected
void
doGet(HttpServletRequest request, HttpServletResponse response)
throws
ServletException, IOException{
}
protected
void
doPost(HttpServletRequest request, HttpServletResponse response)
throws
ServletException, IOException{
response.setContentType(
"text/html;charset=gb2312"
) ;
request.setCharacterEncoding(
"gb2312"
) ;
String result =
""
;
String username = request.getParameter(
"username"
) ;
String psw = request.getParameter(
"password"
) ;
if
((username ==
""
) || (username==
null
) || (username.length() >
20
)){
try
{
result =
"请输入用户名(不能超过20个字符)!"
;
request.setAttribute(
"message"
,result) ;
response.sendRedirect(
"login.jsp"
) ;
}
catch
(Exception e){
e.printStackTrace() ;
}
}
if
((psw ==
""
) || (psw==
null
) || (psw.length() >
20
)){
try
{
result =
"请输入密码(不能超过20个字符)!"
;
request.setAttribute(
"message"
,result) ;
response.sendRedirect(
"login.jsp"
) ;
}
catch
(Exception e){
e.printStackTrace() ;
}
}
try
{
Class.forName(
"org.gjt.mm.mysql.Driver"
) ;
}
catch
(ClassNotFoundException e){
e.printStackTrace() ;
System.out.println(
"Class Not Found Exception . "
) ;
}
String url =
"jdbc:mysql://localhost:3306/learnJSP"
;
Connection conn =
null
;
Statement stmt =
null
;
ResultSet rs =
null
;
try
{
conn = DriverManager.getConnection(url,
"root"
,
"root"
) ;
stmt = conn.createStatement() ;
String sql =
"select * from userInfo where username='"
+username+
"' and userpsw= '"
+psw+
"'"
;
rs = stmt.executeQuery(sql) ;
}
catch
(SQLException e){
e.printStackTrace() ;
}
HttpSession session = request.getSession() ;
session.setAttribute(
"username"
, username) ;
try
{
if
(rs.next()){
session.setAttribute(
"age"
,rs.getString(
"age"
)) ;
session.setAttribute(
"sex"
,rs.getString(
"sex"
)) ;
session.setAttribute(
"weight"
,rs.getString(
"weight"
)) ;
response.sendRedirect(
"success.jsp"
) ;
}
else
{
session.setAttribute(
"message"
,
"用户名或密码不匹配。"
);
response.sendRedirect(
"fail.jsp"
) ;
}
}
catch
(SQLException e){
e.printStackTrace() ;
}
}
private
static
final
long
serialVersionUID = 1L;
}
login.jsp内容:
<%@ page language=
"java"
contentType=
"text/html;charset=gb2312"
%>
<html>
<head>
<title>登陆</title>
</head>
<body>
<form method=
"POST"
name=
"frmLogin"
action=
"LoginServlet"
>
<h1 align=
"center"
>用户登录</h1><br />
<center>
<table border=
1
>
<tr>
<td>用户名:</td>
<td>
<input type=
"text"
name=
"username"
value=
"Your name"
size=
"20"
maxlength=
"20"
onfocus=
"if (this.value=='Your name') this.value='';"
/>
</td>
</tr>
<tr>
<td>密 码:</td>
<td>
<input type=
"password"
name=
"password"
value=
"Your password"
size=
"20"
maxlength=
"20"
onfocus=
"if (this.value=='Your password') this.value='';"
/>
</td>
</tr>
<tr>
<td>
<input type=
"submit"
name=
"Submit"
value=
"提交"
onClick=
"return validateLogin()"
/>
</td>
<td>
<input type=
"reset"
name=
"Reset"
value=
"重置"
/>
</td>
</tr>
</table>
</center>
</form>
<script language=
"javascript"
>
function validateLogin(){
var sUserName = document.frmLogin.username.value ;
var sPassword = document.frmLogin.password.value ;
if
((sUserName ==
""
) || (sUserName==
"Your name"
)){
alert(
"请输入用户名!"
);
return
false
;
}
if
((sPassword ==
""
) || (sPassword==
"Your password"
)){
alert(
"请输入密码!"
);
return
false
;
}
}
</script>
</body>
</html>
success.jsp 内容;
<%@ page language=
"java"
contentType=
"text/html;charset=gb2312"
pageEncoding =
"gb2312"
%>
<html>
<head>
<title>欢迎</title>
</head>
<body>
<%
String userName = (String)session.getAttribute(
"username"
) ;
String age = (String)session.getAttribute(
"age"
) ;
String weight = (String)session.getAttribute(
"weight"
) ;
String sex = (String)session.getAttribute(
"sex"
) ;
System.out.println(
"性别:A"
+ sex +
"A"
) ;
if
(sex.trim().equals(
"M"
)) {
sex =
"男"
;
}
else
{
sex =
"女"
;
}
%>
<div align=
"center"
>
<%=userName %>
欢迎您,登陆成功!<br />
<font color=
"blue"
>登陆用户信息:</font>
<table border =
1
>
<tr>
<td> 姓名: </td>
<td> <%=userName %> </td>
</tr>
<tr>
<td> 年龄: </td>
<td> <%=age %> </td>
</tr>
<tr>
<td> 体重: </td>
<td> <%=weight %> kg </>
</tr>
<tr>
<td> 性别: </td>
<td> <%=sex %> </>
</tr>
</table>
<a href=
"login.jsp"
>返回</a>
</div>
</body>
</html>
fail.jsp 内容:
<%@ page language=
"java"
contentType=
"text/html;charset=gb2312"
pageEncoding =
"gb2312"
%>
<html>
<head>
<title>登陆失败</title>
</head>
<body>
<%
String userName = (String)session.getAttribute(
"username"
) ;
String msg = (String)session.getAttribute(
"message"
) ;
%>
<div align=
"center"
>
<%=userName %>
对不起,登陆失败!<br />
<font color=
"red"
>原因: </font>
<%=msg %>
<br/>
<br/>
5
秒后将返回登陆界面。
</div>
<%
response.setHeader(
"Refresh"
,
"5;URL=/learnJSP/login.jsp"
);
%>
</body>
</html>
mysql数据库中需要创建数据库learnJSP,其中创建表userInfo 创建表语句为:
create database learnJSP ;
use learnJSP
create table userInfo(id
int
not
null
primary key,username
char
(
20
) not
null
,userpsw
char
(
20
) ,age
int
,weight
int
,sex
enum
(
'M'
,
'F'
)) ;
需要把连接mysql的jar包放到项目的lib目录中
web.xml 内容:
<?xml version=
"1.0"
encoding=
"ISO-8859-1"
?>
<!DOCTYPE web-app
PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd"
>
<web-app>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>
LoginServlet
</servlet-name>
<servlet-
class
>
org.cai.servlet.LoginServlet
</servlet-
class
>
</servlet>
<servlet-mapping>
<servlet-name>LoginServlet</servlet-name>
<url-pattern>/LoginServlet</url-pattern>
</servlet-mapping>
</web-app>