java servlet jsp 实例_JSP+Servlet+JavaBean实现登录网页实例详解

本文实例讲述了JSP+Servlet+JavaBean实现登录网页的方法。分享给大家供大家参考。具体如下:

这里涉及到四个文件:

1. 登录页面:login.html

2. 登录成功欢迎页面:login_success.jsp

3. 登录失败页面:login_failure.jsp

4. Servlet处理文件:LoginServlet.java

其实还涉及到一个文件:web.xml,这个后面再说:

下面分别介绍这几个文件:

1. 登录页面:login.html

登录

用户登录

用户名:

size="20" maxlength="20"

οnfοcus="if(this.value=='Your name')this.value='';">
密码:

size="20" maxlength="20"

οnfοcus="if(this.value=='Your password')this.value='';">

function validateLogin()

{

var sUserName = document.frmLogin.txtUserName.value;

var sPassword = document.frmLogin.txtPassword.value;

if( sUserName=="" )

{

alert("请输入用户名!");

return false;

}

if( sPassword=="" )

{

alert("请输入密码!");

return false;

}

}

2. 登录成功欢迎页面:login_success.jsp

pageEncoding="UTF-8"%>

My JSP 'login_failure.jsp' starting page

String userName = (String)session.getAttribute ( "UserName" );

%>

欢迎您,登录成功!

3. 登录失败页面:login_failure.jsp

pageEncoding="UTF-8"%>

My JSP 'login_failure.jsp' starting page

String userName = (String)session.getAttribute ( "UserName" );

%>

对不起,登录失败!

4. Servlet处理文件:LoginServlet.java

/**

* 该JSP程序是用来测试与MySQL数据库的连接,

* 需要一个数据库:LearnJSP,和其中一个表:userinfo

* 表中有两个字段分别为:UserName varchar (20) not null,UserPwd varchar (20) not null

*/

package zieckey.login.servlet;

import java.sql.Statement;

import java.io.IOException;

import java.sql.DriverManager;

import java.sql.ResultSet;

import java.sql.SQLException;

import javax.servlet.Servlet;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

public class LoginServlet extends HttpServlet implements Servlet

{

public LoginServlet ()

{

// TODO Auto-generated constructor stub

}

/*

* (non-Javadoc)

*

* @see javax.servlet.http.HttpServlet#doGet(javax.servlet.http.HttpServletRequest,

* javax.servlet.http.HttpServletResponse)

*/

@Override

protected void doGet ( HttpServletRequest arg0, HttpServletResponse arg1 )

throws ServletException, IOException

{

}

/*

* (non-Javadoc)

*

* @see javax.servlet.http.HttpServlet#doPost(javax.servlet.http.HttpServletRequest,

* javax.servlet.http.HttpServletResponse)

*/

@Override

protected void doPost ( HttpServletRequest request, HttpServletResponse response )

throws ServletException, IOException

{

response.setContentType ( "text/html" );

String result = "";

// 获取用户名

String sUserName = request.getParameter ( "txtUserName" );

if ( sUserName == "" || sUserName == null || sUserName.length ( ) > 20 )

{

try

{

result = "请输入用户名(不超过20字符)!";

request.setAttribute ( "ErrorUserName", result );

response.sendRedirect ( "login.html" );

} catch ( Exception e )

{

}

}

// 获取密码

String sPasswd = request.getParameter ( "txtPassword" );

if ( sPasswd == "" || sPasswd == null || sPasswd.length ( ) > 20 )

{

try

{

result = "请输入密码(不超过20字符)!";

request.setAttribute ( "ErrorPassword", result );

response.sendRedirect ( "login.html" );

} catch ( Exception e )

{

}

}

// 登记JDBC驱动程序

try

{

Class.forName ( "org.gjt.mm.mysql.Driver" ).newInstance ( );

} catch ( InstantiationException e )

{

// TODO Auto-generated catch block

e.printStackTrace ( );

System.out.println ("InstantiationException");

} catch ( IllegalAccessException e )

{

// TODO Auto-generated catch block

e.printStackTrace ( );

System.out.println ("IllegalAccessException");

} catch ( ClassNotFoundException e )

{

// TODO Auto-generated catch block

e.printStackTrace ( );

System.out.println ("ClassNotFoundException");

}

// 连接参数与Access不同

String url = "jdbc:mysql://localhost/LearnJSP";

// 建立连接

java.sql.Connection connection = null;

Statement stmt = null;

ResultSet rs = null;

try

{

connection = DriverManager.getConnection ( url, "root", "011124" );

stmt = connection.createStatement ( );

// SQL语句

String sql = "select * from userinfo where username='" + sUserName

+ "' and userpwd = '" + sPasswd + "'";

rs = stmt.executeQuery ( sql );// 返回查询结果

} catch ( SQLException e )

{

// TODO Auto-generated catch block

e.printStackTrace ( );

}

try

{

if ( rs.next ( ) )// 如果记录集非空,表明有匹配的用户名和密码,登陆成功

{

// 登录成功后将sUserName设置为session变量的UserName

// 这样在后面就可以通过 session.getAttribute("UserName") 来获取用户名,

// 同时这样还可以作为用户登录与否的判断依据

request.getSession ( ).setAttribute ( "UserName", sUserName );

response.sendRedirect ( "login_success.jsp" );

} else

{

// 否则登录失败

//response.sendRedirect ( "MyJsp.jsp" );

response.sendRedirect ( "login_failure.jsp" );

}

} catch ( SQLException e )

{

// TODO Auto-generated catch block

e.printStackTrace ( );

}

try

{

if ( null!=rs )

{

rs.close ( );

}

if ( null!=stmt )

{

stmt.close ( );

}

if ( null!=connection )

{

connection.close ( );

}

} catch ( SQLException e )

{

// TODO Auto-generated catch block

e.printStackTrace ( );

}

}

/**

*

*/

private static final long serialVersionUID = 1L;

}

为了让这个网站正常运行还要到web.xml中注册一下,

现该文件内容修改如下:

LoginServlet

LoginServlet

zieckey.login.servlet.LoginServlet

LoginServlet

/LoginServlet

好了,这几个文件就可以构成我们的这个登录界面了.

注意事项:

1. 文件目录形式

login.html,login_success.html,login_failure.html这三个文件放在同一目录,

LoginServlet.java该文件的字节码文件LoginServlet.class放在WEB-INF/classes目录下(注意jar包顺序)

现在整个工程的目录形式是:

M:/Tomcat5.5/webapps/JSP_Servlet_JavaBean_Login 的目录

007-01-18  15:16   

007-01-18  15:16   

007-01-18  16:17             1,801 login.html

007-01-18  15:48               858 login_failure.jsp

007-01-18  15:40               234 login_success.html

007-01-18  15:46               781 MyJsp.jsp

007-01-18  16:12               859 login_success.jsp

M:/Tomcat5.5/webapps/JSP_Servlet_JavaBean_Login/WEB-INF 的目录

007-01-18  15:16   

007-01-18  15:16   

007-01-18  16:21               606 web.xml

M:/Tomcat5.5/webapps/JSP_Servlet_JavaBean_Login/WEB-INF/classes/zieckey/login/servlet 的目录

2007-01-18  16:18             3,900 LoginServlet.class

2. 其他注意事项

数据库MySQL服务器程序要先启动起来.

希望本文所述对大家的JSP程序设计有所帮助。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值