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
<!--该Login页面是一个简单的登录界面--> <!-- 该JSP程序是用来测试与MySQL数据库的连接, 需要一个数据库:LearnJSP,和其中一个表:userinfo 表中有两个字段分别为:UserNamevarchar(20)notnull,UserPwdvarchar(20)notnull --> <html> <head> <title>登录</title> <metahttp-equiv="content-type"content="text/html;charset=UTF-8"> <metahttp-equiv="Content-Language"content="ch-cn"> </head> <body> <!--Form用来提取用户填入并提交的信息--> <formmethod="post"name="frmLogin"action="LoginServlet"> <h1align="center">用户登录</h1><br> <divalign="center">用户名: <inputtype="text"name="txtUserName"value="Yourname" size="20"maxlength="20" onfocus="if(this.value=='Yourname')this.value='';"><br>密码: <inputtype="password"name="txtPassword"value="Yourpassword" size="20"maxlength="20" onfocus="if(this.value=='Yourpassword')this.value='';"><br> <inputtype="submit"name="Submit"value="提交"onClick="validateLogin();"> <inputtype="reset"name="Reset"value="重置"><br> </div> </form> <!--javaScript函数validateLogin(),用来验证用户名和密码是否为空--> <scriptlanguage="javaScript"> functionvalidateLogin() { varsUserName=document.frmLogin.txtUserName.value; varsPassword=document.frmLogin.txtPassword.value; if(sUserName=="") { alert("请输入用户名!"); returnfalse; } if(sPassword=="") { alert("请输入密码!"); returnfalse; } } </script> </body> </html>
2.登录成功欢迎页面:login_success.jsp
<%@pagelanguage="java"contentType="text/html;charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN"> <html> <head> <title>MyJSP'login_failure.jsp'startingpage</title> <metahttp-equiv="content-type"content="text/html;charset=UTF-8"> <metahttp-equiv="pragma"content="no-cache"> <metahttp-equiv="cache-control"content="no-cache"> <metahttp-equiv="expires"content="0"> <metahttp-equiv="keywords"content="keyword1,keyword2,keyword3"> <metahttp-equiv="description"content="Thisismypage"> <!-- <linkrel="stylesheet"type="text/css"href="styles.css"> --> </head> <body> <% StringuserName=(String)session.getAttribute("UserName"); %> <divalign=center> <%=userName%> 欢迎您,登录成功! </div> </body> </html>
3.登录失败页面:login_failure.jsp
<%@pagelanguage="java"contentType="text/html;charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN"> <html> <head> <title>MyJSP'login_failure.jsp'startingpage</title> <metahttp-equiv="content-type"content="text/html;charset=UTF-8"> <metahttp-equiv="pragma"content="no-cache"> <metahttp-equiv="cache-control"content="no-cache"> <metahttp-equiv="expires"content="0"> <metahttp-equiv="keywords"content="keyword1,keyword2,keyword3"> <metahttp-equiv="description"content="Thisismypage"> <!-- <linkrel="stylesheet"type="text/css"href="styles.css"> --> </head> <body> <% StringuserName=(String)session.getAttribute("UserName"); %> <divalign=center> <%=userName%> 对不起,登录失败! </div> </body> </html>
4.Servlet处理文件:LoginServlet.java
/** *该JSP程序是用来测试与MySQL数据库的连接, *需要一个数据库:LearnJSP,和其中一个表:userinfo *表中有两个字段分别为:UserNamevarchar(20)notnull,UserPwdvarchar(20)notnull */ packagezieckey.login.servlet; importjava.sql.Statement; importjava.io.IOException; importjava.sql.DriverManager; importjava.sql.ResultSet; importjava.sql.SQLException; importjavax.servlet.Servlet; importjavax.servlet.ServletException; importjavax.servlet.http.HttpServlet; importjavax.servlet.http.HttpServletRequest; importjavax.servlet.http.HttpServletResponse; publicclassLoginServletextendsHttpServletimplementsServlet { publicLoginServlet() { //TODOAuto-generatedconstructorstub } /* *(non-Javadoc) * *@seejavax.servlet.http.HttpServlet#doGet(javax.servlet.http.HttpServletRequest, *javax.servlet.http.HttpServletResponse) */ @Override protectedvoiddoGet(HttpServletRequestarg0,HttpServletResponsearg1) throwsServletException,IOException { } /* *(non-Javadoc) * *@seejavax.servlet.http.HttpServlet#doPost(javax.servlet.http.HttpServletRequest, *javax.servlet.http.HttpServletResponse) */ @Override protectedvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse) throwsServletException,IOException { response.setContentType("text/html"); Stringresult=""; //获取用户名 StringsUserName=request.getParameter("txtUserName"); if(sUserName==""||sUserName==null||sUserName.length()>20) { try { result="请输入用户名(不超过20字符)!"; request.setAttribute("ErrorUserName",result); response.sendRedirect("login.html"); }catch(Exceptione) { } } //获取密码 StringsPasswd=request.getParameter("txtPassword"); if(sPasswd==""||sPasswd==null||sPasswd.length()>20) { try { result="请输入密码(不超过20字符)!"; request.setAttribute("ErrorPassword",result); response.sendRedirect("login.html"); }catch(Exceptione) { } } //登记JDBC驱动程序 try { Class.forName("org.gjt.mm.mysql.Driver").newInstance(); }catch(InstantiationExceptione) { //TODOAuto-generatedcatchblock e.printStackTrace(); System.out.println("InstantiationException"); }catch(IllegalAccessExceptione) { //TODOAuto-generatedcatchblock e.printStackTrace(); System.out.println("IllegalAccessException"); }catch(ClassNotFoundExceptione) { //TODOAuto-generatedcatchblock e.printStackTrace(); System.out.println("ClassNotFoundException"); } //连接参数与Access不同 Stringurl="jdbc:mysql://localhost/LearnJSP"; //建立连接 java.sql.Connectionconnection=null; Statementstmt=null; ResultSetrs=null; try { connection=DriverManager.getConnection(url,"root","011124"); stmt=connection.createStatement(); //SQL语句 Stringsql="select*fromuserinfowhereusername='"+sUserName +"'anduserpwd='"+sPasswd+"'"; rs=stmt.executeQuery(sql);//返回查询结果 }catch(SQLExceptione) { //TODOAuto-generatedcatchblock 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(SQLExceptione) { //TODOAuto-generatedcatchblock e.printStackTrace(); } try { if(null!=rs) { rs.close(); } if(null!=stmt) { stmt.close(); } if(null!=connection) { connection.close(); } }catch(SQLExceptione) { //TODOAuto-generatedcatchblock e.printStackTrace(); } } /** * */ privatestaticfinallongserialVersionUID=1L; }
为了让这个网站正常运行还要到web.xml中注册一下,
现该文件内容修改如下:
<?xmlversion="1.0"encoding="UTF-8"?> <web-appxmlns="http://java.sun.com/xml/ns/j2ee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"version="2.4"xsi:schemaLocation="http://java.sun.com/xml/ns/j2eehttp://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> <servlet> <display-name>LoginServlet</display-name> <servlet-name>LoginServlet</servlet-name> <servlet-class>zieckey.login.servlet.LoginServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>LoginServlet</servlet-name> <url-pattern>/LoginServlet</url-pattern> </servlet-mapping> </web-app>
好了,这几个文件就可以构成我们的这个登录界面了.
注意事项:
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 <DIR> META-INF
007-01-18 15:16 <DIR> WEB-INF
007-01-18 16:17 1,801login.html
007-01-18 15:48 858login_failure.jsp
007-01-18 15:40 234login_success.html
007-01-18 15:46 781MyJsp.jsp
007-01-18 16:12 859login_success.jsp
M:/Tomcat5.5/webapps/JSP_Servlet_JavaBean_Login/WEB-INF的目录
007-01-18 15:16 <DIR> classes
007-01-18 15:16 <DIR> lib
007-01-18 16:21 606web.xml
M:/Tomcat5.5/webapps/JSP_Servlet_JavaBean_Login/WEB-INF/classes/zieckey/login/servlet的目录
2007-01-18 16:18 3,900LoginServlet.class
2.其他注意事项
数据库MySQL服务器程序要先启动起来.
希望本文所述对大家的JSP程序设计有所帮助。