MyException - 我的异常网
当前位置:我的异常网» 数据库 » Jsp+Servlet+JavaBean+JDBC登陆范例

Jsp+Servlet+JavaBean+JDBC登陆范例

www.MyException.Cn  网友分享于:2015-08-26  浏览:392次
Jsp+Servlet+JavaBean+JDBC登陆实例
运行环境:
引用
JDK1.5
Tomcat5.5
MyEclips5.5.1 GA
SqlServer2000
windows2003


1.在SqlServer下的查询分析器中新建表:
Sql代码  收藏代码
  1. create table dbuser(  
  2. userId int identity(1,1) primary key not null,  
  3. userName varchar(50),  
  4. userPasswd varchar(50))  


2.在MyEclipse中新建Web工程,并创建包结构。




3.编写登陆界面。
Html代码  收藏代码
  1. <%@ page language="java" contentType="text/html; charset=GB18030"  
  2.     pageEncoding="GB18030"%>  
  3. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">  
  4. <html>  
  5. <head>  
  6. <meta http-equiv="Content-Type" content="text/html; charset=GB18030">  
  7. <title>Insert title here</title>  
  8. <style type="text/css">  
  9. body{  
  10.  color : #000 ;  
  11.  font-size : 12px ;  
  12.   
  13.  margin : 0px auto ;  
  14.  }  
  15.   
  16. </style>  
  17.   
  18. <script type="text/javascript">  
  19.     function check(form){  
  20.     //document.forms.form1.username.value取得form1中Username的值 并判断是否为空  
  21.         if(document.forms.form1.username.value==""){  
  22.         //如果 为""则弹出提示  
  23.             alert("pls input username");  
  24.             //将输入焦点定位到没有输入的地方  
  25.             document.forms.form1.username.focus();  
  26.             //返回错误  
  27.             return false;  
  28.         }  
  29.                 if(document.forms.form1.password.value==""){  
  30.             alert("pls input password");  
  31.             document.forms.form1.password.focus();  
  32.             return false;  
  33.         }  
  34.     }  
  35.   
  36. </script>  
  37. </head>  
  38. <body>  
  39. <form action="LoginServlet" method="post" name="form1">  
  40.       
  41.       
  42. <table border="1" cellspacing="1" cellpadding="1"  bordercolor="silver" align="center">  
  43.    <tr>  
  44.       <td colspan="2" align="center" bgcolor="#e8e8e8">用户登陆</td>  
  45.    </tr>  
  46.    <tr>  
  47.       <td>用户名:</td>  
  48.       <td><input type="text" name="username"/></td>  
  49.    </tr>  
  50.    <tr>  
  51.       <td>密码:</td>  
  52.       <td><input type="password" name="password"/></td>  
  53.    </tr>  
  54.    <tr>  
  55.       <td><a href="rsg.jsp" >新用户注册</a></td>  
  56.       <!-- onclick="return check(this) 调用上面的Script进行验证 -->  
  57.       <td><input type="submit" name="submit" onclick="return check(this);"/><input type="reset" name="reset"/></td>  
  58.    </tr>  
  59. </table>  
  60.   
  61. </form>  
  62. </body>  
  63. </html>  




3.编写工具类DBConn。
Java代码  收藏代码
  1. package utils;  
  2.   
  3.     import java.io.*;     
  4. import java.sql.*;     
  5.   
  6. public class DBConn {     
  7.         public static String driver;//定义驱动     
  8.         public static String url;//定义URL     
  9.         public static String user;//定义用户名     
  10.         public static String password;//定义密码     
  11.         public static Connection conn;//定义连接     
  12.         public static Statement stmt;//定义STMT     
  13.         public ResultSet rs;//定义结果集     
  14.         //设置CONN     
  15.         static{     
  16.             try {   
  17.                 driver="com.microsoft.jdbc.sqlserver.SQLServerDriver";  
  18.                 url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=qtliu";  
  19.                 user="sa";  
  20.                 password="sa";  
  21.                 Class.forName(driver);     
  22.                 conn = DriverManager.getConnection(url,user,password);  
  23.                 System.out.println("-------连接成功------");  
  24.             } catch(ClassNotFoundException classnotfoundexception) {     
  25.                   classnotfoundexception.printStackTrace();     
  26.                 System.err.println("db: " + classnotfoundexception.getMessage());     
  27.             } catch(SQLException sqlexception) {     
  28.                 System.err.println("db.getconn(): " + sqlexception.getMessage());     
  29.             }     
  30.         }     
  31.         //构造函数,默认加裁配置文件为jdbc.driver     
  32.         public DBConn(){     
  33.             this.conn=this.getConn();  
  34.         }     
  35.         //返回Conn     
  36.         public Connection getConn(){     
  37.             return this.conn;     
  38.         }     
  39.         //执行插入     
  40.            public void doInsert(String sql) {     
  41.             try {     
  42.                 stmt = conn.createStatement();     
  43.                 int i = stmt.executeUpdate(sql);     
  44.             } catch(SQLException sqlexception) {     
  45.                 System.err.println("db.executeInset:" + sqlexception.getMessage());     
  46.             }finally{     
  47.                      
  48.             }     
  49.         }     
  50.         //执行删除     
  51.         public void doDelete(String sql) {     
  52.             try {     
  53.                 stmt = conn.createStatement();     
  54.                 int i = stmt.executeUpdate(sql);     
  55.             } catch(SQLException sqlexception) {     
  56.                 System.err.println("db.executeDelete:" + sqlexception.getMessage());     
  57.             }     
  58.         }     
  59.         //执行更新     
  60.         public void doUpdate(String sql) {     
  61.             try {     
  62.                 stmt = conn.createStatement();     
  63.                 int i = stmt.executeUpdate(sql);     
  64.             } catch(SQLException sqlexception) {     
  65.                 System.err.println("db.executeUpdate:" + sqlexception.getMessage());     
  66.             }     
  67.         }     
  68.         //查询结果集     
  69.         public ResultSet doSelect(String sql) {     
  70.             try {  
  71.                 conn=DriverManager.getConnection(url,user,password);  
  72.                 stmt = conn.createStatement(java.sql.ResultSet.TYPE_SCROLL_INSENSITIVE,java.sql.ResultSet.CONCUR_READ_ONLY);       
  73.                 rs = stmt.executeQuery(sql);   
  74.                 System.out.println("取得结果集");  
  75.             } catch(SQLException sqlexception) {     
  76.                 System.err.println("db.executeQuery: " + sqlexception.getMessage());     
  77.             }     
  78.             return rs;     
  79.         }     
  80.         /**   
  81.          *关闭数据库结果集,数据库操作对象,数据库链接   
  82.            @Function: Close all the statement and conn int this instance and close the parameter ResultSet   
  83.            @Param: ResultSet   
  84.            @Exception: SQLException,Exception   
  85.           **/    
  86.          public void close(ResultSet rs) throws SQLException, Exception {     
  87.         
  88.            if (rs != null) {     
  89.              rs.close();     
  90.              rs = null;     
  91.            }     
  92.         
  93.            if (stmt != null) {     
  94.              stmt.close();     
  95.              stmt = null;     
  96.            }     
  97.         
  98.            if (conn != null) {     
  99.              conn.close();     
  100.              conn = null;     
  101.            }     
  102.          }     
  103.         
  104.          /**   
  105.           *关闭数据库操作对象,数据库连接对象   
  106.           * Close all the statement and conn int this instance   
  107.           * @throws SQLException   
  108.           * @throws Exception   
  109.           */    
  110.          public void close() throws SQLException, Exception {     
  111.            if (stmt != null) {     
  112.              stmt.close();     
  113.              stmt = null;     
  114.            }     
  115.         
  116.            if (conn != null) {     
  117.              conn.close();     
  118.              conn = null;     
  119.            }     
  120.          }     
  121.         //测试类     
  122. //       public static void main(String []args){  
  123. //           DBConn db=new DBConn();  
  124. //           db.getConn();  
  125. //          ResultSet rs=db.doSelect("select * from db_user where userName='admin'");  
  126. //          try {  
  127. //              while(rs.next()){  
  128. //                  System.out.println(rs.getInt(1));  
  129. //                  System.out.println(rs.getString(3));  
  130. //                    
  131. //              }  
  132. //          } catch (SQLException e) {  
  133. //              // TODO Auto-generated catch block  
  134. //              e.printStackTrace();  
  135. //          }  
  136. //       }  
  137.     }    


4.编写Servlet,LoginServlet.java。
Java代码  收藏代码
  1. package servlet;  
  2.   
  3. import java.io.IOException;  
  4.   
  5. import javax.servlet.RequestDispatcher;  
  6. import javax.servlet.ServletException;  
  7. import javax.servlet.http.HttpServlet;  
  8. import javax.servlet.http.HttpServletRequest;  
  9. import javax.servlet.http.HttpServletResponse;  
  10.   
  11. import model.CheckUser;  
  12. import beans.UserBean;  
  13.   
  14. public class LoginServlet extends HttpServlet {  
  15.   
  16.     /** 
  17.      *  
  18.      */  
  19.     private static final long serialVersionUID = 7381169134016556647L;  
  20.   
  21.     public void doGet(HttpServletRequest request, HttpServletResponse response)  
  22.             throws ServletException, IOException {  
  23.             doPost(request,response);  
  24.     }  
  25.   
  26.     public void doPost(HttpServletRequest request, HttpServletResponse response)  
  27.             throws ServletException, IOException {  
  28.         //设置HTTP响应的文档类型,此处为Text/html,如果更改为application\msword则设置为word文档格式  
  29.         response.setContentType("text/html");  
  30.         //设置响应所采用的编码方式  
  31.         response.setCharacterEncoding("GB18030");  
  32.         //取得参数username的值  
  33.         String uname=request.getParameter("username");  
  34.         String passwd=request.getParameter("password");  
  35.           
  36.           
  37.         UserBean user=new UserBean();  
  38.         user.setUsername(uname);  
  39.         user.setPassword(passwd);  
  40.         CheckUser cku=new CheckUser();  
  41.         boolean bool=cku.checkUsre(user);  
  42.           
  43.         String forward;  
  44.         if(bool){  
  45.             forward="success.jsp";  
  46.               
  47.         }else{  
  48.             forward="error.jsp";  
  49.         }  
  50.         RequestDispatcher rd=request.getRequestDispatcher(forward);  
  51.         rd.forward(request,response);  
  52.     }  
  53.   
  54.   
  55. }  

5.在web.xml中配置Servlet。
引用

配置关键代码
Xml代码  收藏代码
  1. <servlet>  
  2.    <servlet-name>LoginServlet</servlet-name>  
  3.    <servlet-class>servlet.LoginServlet</servlet-class>  
  4.  </servlet>  
  5.   
  6.  <servlet-mapping>  
  7.    <servlet-name>LoginServlet</servlet-name>  
  8.    <url-pattern>/LoginServlet</url-pattern>  
  9.  </servlet-mapping>  


本机上的整个Web.xml代码
Xml代码  收藏代码
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <web-app version="2.5"   
  3.     xmlns="http://java.sun.com/xml/ns/javaee"   
  4.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"   
  5.     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee   
  6.     http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">  
  7.   <servlet>  
  8.     <servlet-name>LoginServlet</servlet-name>  
  9.     <servlet-class>servlet.LoginServlet</servlet-class>  
  10.   </servlet>  
  11.   
  12.   <servlet-mapping>  
  13.     <servlet-name>LoginServlet</servlet-name>  
  14.     <url-pattern>/LoginServlet</url-pattern>  
  15.   </servlet-mapping>  
  16.   <welcome-file-list>  
  17.     <welcome-file>index.jsp</welcome-file>  
  18.   </welcome-file-list>  
  19. </web-app>  




5.编写userBean。
Java代码  收藏代码
  1. package beans;  
  2.   
  3. public class UserBean {  
  4.       
  5.   
  6.     public String username;  
  7.     public String password;  
  8.       
  9.     public UserBean() {  
  10.         super();  
  11.     }  
  12.       
  13.       
  14.     public String getPassword() {  
  15.         return password;  
  16.     }  
  17.     public void setPassword(String password) {  
  18.         this.password = password;  
  19.     }  
  20.     public String getUsername() {  
  21.         return username;  
  22.     }  
  23.     public void setUsername(String username) {  
  24.         this.username = username;  
  25.     }  
  26.   
  27. }  


6.编写JavaBean CheckUser。
Java代码  收藏代码
  1. package model;  
  2.   
  3. import java.sql.ResultSet;  
  4. import java.sql.SQLException;  
  5.   
  6. import utils.DBConn;  
  7. import utils.DBUtils;  
  8. import beans.UserBean;  
  9.   
  10. public class CheckUser {  
  11.       
  12.     public boolean checkUsre(UserBean user){  
  13.         if(user.username.equals("")||user.username!=null){  
  14.             ResultSet rs=null;  
  15.             DBConn db=new DBConn();  
  16.             rs=db.doSelect("select * from db_user where userName='"+user.getUsername()+"'");  
  17.             try {  
  18.                 if(rs.next()){  
  19.                     if(user.password.equals("")||user.password!=null){  
  20.                         rs=db.doSelect("select * from db_user where userPasswd="+user.password);  
  21.                         return true;  
  22.                     }  
  23.                 }  
  24.             } catch (SQLException e) {  
  25.                 e.printStackTrace();  
  26.             }  
  27.         }  
  28.           
  29.         return false;  
  30.           
  31.     }  
  32.   
  33. }  


7.编写错误页面及成功登陆页面。

error.jsp
Jsp代码  收藏代码
  1. <%@ page language="java" contentType="text/html; charset=GB18030"  
  2.     pageEncoding="GB18030"%>  
  3. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">  
  4. <html>  
  5. <head>  
  6. <meta http-equiv="Content-Type" content="text/html; charset=GB18030">  
  7. <title>Insert title here</title>  
  8. </head>  
  9. <body>  
  10. Sorry!你的登陆信息不正确!系统无法让你登陆!<a href="login.jsp">点击返回</a>  
  11. </body>  
  12. </html>  


success.jsp
Jsp代码  收藏代码
  1. <%@ page language="java" contentType="text/html; charset=GB18030"  
  2.     pageEncoding="GB18030"%>  
  3.   
  4. <jsp:useBean id="user" class="beans.UserBean" scope="request"/>  
  5. <jsp:setProperty name="user" property="*"/>  
  6. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">  
  7. <html>  
  8. <head>  
  9. <meta http-equiv="Content-Type" content="text/html; charset=GB18030">  
  10. <title>Insert title here</title>  
  11. </head>  
  12. <body>  
  13. <%   
  14.     session.setAttribute("user",user);  
  15.     String username=user.getUsername();  
  16.  %>  
  17.    
  18.  <%=username %>,欢迎您来到FUCK网!<br>  
  19.  您的IP是:<%=request.getRemoteAddr() %><br>  
  20. 你的主机是:<%=request.getRemoteHost() %><br>  
  21. 你使用的协议是:<%=request.getProtocol() %><br>  
  22. 你目前的地址是:<%=request.getRealPath("/") %>  
  23. 你的主机端口是:<%=request.getRemotePort() %>  
  24. </body>  
  25. </html>  


=====================================================================
页面流向图





所涉知识点:
*JDBC连接的数据库的写法

*在Web.xml中配置Servlet




*在JSP中使用JavaBean


<jsp:useBean>与<jsp:setProperty>
<jsp:useBean>与<jsp:setProperty>是联系在一起的,在<jsp:setProperty>中的name值应当和<jsp:useBean>中的ID值相同。

Jap代码  收藏代码
  1. <jsp:useBean id="user" class="beans.UserBean" scope="request"/>  
  2. <jsp:setProperty name="user" property="*"/>  


*js验证的写法,及在页面中的触发
Javascript代码  收藏代码
  1. <script type="text/javascript">  
  2.     function check(form){  
  3.         if(document.forms.form1.username.value==""){  
  4.             alert("pls input username");  
  5.             document.forms.form1.username.focus();  
  6.             return false;  
  7.         }  
  8.                 if(document.forms.form1.password.value==""){  
  9.             alert("pls input password");  
  10.             document.forms.form1.password.focus();  
  11.             return false;  
  12.         }  
  13.     }  
  14.   
  15. </script>  
  16.   
  17. <input type="submit" name="submit" onclick="return check(this);"/>  


*request、response的常见用法


Java代码  收藏代码
  1. request常用方法  
  2.   
  3. 取得相关信息:  
  4. 您的IP是:<%=request.getRemoteAddr() %><br>  
  5. 你的主机是:<%=request.getRemoteHost() %><br>  
  6. 你使用的协议是:<%=request.getProtocol() %><br>  
  7. 你目前的地址是:<%=request.getRealPath("/") %>  
  8.   
  9. 接收请求内容:  
  10.   
  11. 通过:Request.getParemeter(“username”) 接收请求内容:代码如下所示:  
  12. String name = request.getParameter("uname") ;  
  13. 取得文本框提交的信息  
  14. String name = request.getParameter("uname") ;  
  15. 取得按钮的名字:  
  16. String name = request.getParameter("submit") ;  
  17.   
  18. 设置浏览器的输出文件类型,及编码标准  
  19. <%@page contentType="text/html;charset=gb2312"%>  
  20.   
  21. 两秒后自动跳转到新页面:  
  22. <%response.setHeader("refresh","3;URL=login.jsp");%>  
  23.   
  24. //设置HTTP响应的文档类型,此处为Text/html,如果更改为application\msword则设置为word文档格式  
  25.   
  26. response.setContentType("text/html");  
  27.   
  28. //设置响应所采用的编码方式  
  29. response.setCharacterEncoding("GB18030");  


*转发和重定向的区别

转向页面:
重定向(redirect):以前的request中存放的变量全部失效,并进入一个新的request作用域。
转发(Forward):以前的request中存放的变量不会失效,就像把两个页面拼到了一起。
<jsp:forward page="login_success.jsp"/>
(注:只要使用了服务器端跳转<jsp:forward>,则请求内容可以在跳转之后的页面继续得到)
Java代码  收藏代码
  1. Response.sendRedirect(“URL”);//重定向  
  2.   
  3. request.getRequestDispatcher("apage.jsp").forward(request, response);//转发到apage.jsp  
  4. <jsp:forward page="d.jsp"/>   //转发到d.jsp 在JSP中使用  
  5. response.sendRedirect("apage.jsp");//重定向到apage.jsp 

文章评论

代码女神横空出世
代码女神横空出世
看13位CEO、创始人和高管如何提高工作效率
看13位CEO、创始人和高管如何提高工作效率
聊聊HTTPS和SSL/TLS协议
聊聊HTTPS和SSL/TLS协议
编程语言是女人
编程语言是女人
Web开发者需具备的8个好习惯
Web开发者需具备的8个好习惯
程序员眼里IE浏览器是什么样的
程序员眼里IE浏览器是什么样的
十大编程算法助程序员走上高手之路
十大编程算法助程序员走上高手之路
什么才是优秀的用户界面设计
什么才是优秀的用户界面设计
程序员的鄙视链
程序员的鄙视链
当下全球最炙手可热的八位少年创业者
当下全球最炙手可热的八位少年创业者
“肮脏的”IT工作排行榜
“肮脏的”IT工作排行榜
那些争议最大的编程观点
那些争议最大的编程观点
老程序员的下场
老程序员的下场
Java 与 .NET 的平台发展之争
Java 与 .NET 的平台发展之争
程序员都该阅读的书
程序员都该阅读的书
程序员的一天:一寸光阴一寸金
程序员的一天:一寸光阴一寸金
10个调试和排错的小建议
10个调试和排错的小建议
不懂技术不要对懂技术的人说这很容易实现
不懂技术不要对懂技术的人说这很容易实现
60个开发者不容错过的免费资源库
60个开发者不容错过的免费资源库
程序员必看的十大电影
程序员必看的十大电影
Google伦敦新总部 犹如星级庄园
Google伦敦新总部 犹如星级庄园
如何区分一个程序员是“老手“还是“新手“?
如何区分一个程序员是“老手“还是“新手“?
鲜为人知的编程真相
鲜为人知的编程真相
亲爱的项目经理,我恨你
亲爱的项目经理,我恨你
科技史上最臭名昭著的13大罪犯
科技史上最臭名昭著的13大罪犯
要嫁就嫁程序猿—钱多话少死的早
要嫁就嫁程序猿—钱多话少死的早
写给自己也写给你 自己到底该何去何从
写给自己也写给你 自己到底该何去何从
程序员应该关注的一些事儿
程序员应该关注的一些事儿
程序猿的崛起——Growth Hacker
程序猿的崛起——Growth Hacker
程序员周末都喜欢做什么?
程序员周末都喜欢做什么?
程序员和编码员之间的区别
程序员和编码员之间的区别
Web开发人员为什么越来越懒了?
Web开发人员为什么越来越懒了?
 程序员的样子
程序员的样子
为什么程序员都是夜猫子
为什么程序员都是夜猫子
“懒”出效率是程序员的美德
“懒”出效率是程序员的美德
为啥Android手机总会越用越慢?
为啥Android手机总会越用越慢?
2013年中国软件开发者薪资调查报告
2013年中国软件开发者薪资调查报告
旅行,写作,编程
旅行,写作,编程
我是如何打败拖延症的
我是如何打败拖延症的
10个帮程序员减压放松的网站
10个帮程序员减压放松的网站
中美印日四国程序员比较
中美印日四国程序员比较
我跳槽是因为他们的显示器更大
我跳槽是因为他们的显示器更大
老美怎么看待阿里赴美上市
老美怎么看待阿里赴美上市
初级 vs 高级开发者 哪个性价比更高?
初级 vs 高级开发者 哪个性价比更高?
做程序猿的老婆应该注意的一些事情
做程序猿的老婆应该注意的一些事情
漫画:程序员的工作
漫画:程序员的工作
每天工作4小时的程序员
每天工作4小时的程序员
一个程序员的时间管理
一个程序员的时间管理
那些性感的让人尖叫的程序员
那些性感的让人尖叫的程序员
软件开发程序错误异常ExceptionCopyright © 2009-2015 MyException 版权所有