JSP+Servlet+JavaBean+JDBC示例程序



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.  margin : 0px auto ;
  13.  }
  14. </style>
  15. <script type=”text/javascript”>
  16.     function check(form){
  17.     //document.forms.form1.username.value取得form1中Username的值 并判断是否为空
  18.         if(document.forms.form1.username.value==”"){
  19.         //如果 为”"则弹出提示
  20.             alert(“pls input username”);
  21.             //将输入焦点定位到没有输入的地方
  22.             document.forms.form1.username.focus();
  23.             //返回错误
  24.             return false;
  25.         }
  26.                 if(document.forms.form1.password.value==”"){
  27.             alert(“pls input password”);
  28.             document.forms.form1.password.focus();
  29.             return false;
  30.         }
  31.     }
  32. </script>
  33. </head>
  34. <body>
  35. <form action=”LoginServlet” method=”post” name=”form1″>
  36. <table border=”1″ cellspacing=”1″ cellpadding=”1″  bordercolor=”silver” align=”center”>
  37.    <tr>
  38.       <td colspan=”2″ align=”center” bgcolor=”#e8e8e8″>用户登陆</td>
  39.    </tr>
  40.    <tr>
  41.       <td>用户名:</td>
  42.       <td><input type=”text” name=”username”/></td>
  43.    </tr>
  44.    <tr>
  45.       <td>密码:</td>
  46.       <td><input type=”password” name=”password”/></td>
  47.    </tr>
  48.    <tr>
  49.       <td><a href=”rsg.jsp” >新用户注册</a></td>
  50.       <!– onclick=”return check(this) 调用上面的Script进行验证 –>
  51.       <td><input type=”submit” name=”submit” onclick=”return check(this);”/><input type=”reset” name=”reset”/></td>
  52.    </tr>
  53. </table>
  54. </form>
  55. </body>
  56. </html>

3.编写工具类DBConn。

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

4.编写Servlet,LoginServlet.java。

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

5.在web.xml中配置Servlet。

引用
配置关键代码

Xml代码  收藏代码
  1. <servlet>
  2.    <servlet-name>LoginServlet</servlet-name>
  3.    <servlet-class>servlet.LoginServlet</servlet-class>
  4.  </servlet>
  5.  <servlet-mapping>
  6.    <servlet-name>LoginServlet</servlet-name>
  7.    <url-pattern>/LoginServlet</url-pattern>
  8.  </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.   <servlet-mapping>
  12.     <servlet-name>LoginServlet</servlet-name>
  13.     <url-pattern>/LoginServlet</url-pattern>
  14.   </servlet-mapping>
  15.   <welcome-file-list>
  16.     <welcome-file>index.jsp</welcome-file>
  17.   </welcome-file-list>
  18. </web-app>

5.编写userBean。

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

6.编写JavaBean CheckUser。

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

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. <jsp:useBean id=”user” class=”beans.UserBean” scope=”request”/>
  4. <jsp:setProperty name=”user” property=”*”/>
  5. <!DOCTYPE html PUBLIC ”-//W3C//DTD HTML 4.01 Transitional//EN” ”http://www.w3.org/TR/html4/loose.dtd”>
  6. <html>
  7. <head>
  8. <meta http-equiv=”Content-Type” content=”text/html; charset=GB18030″>
  9. <title>Insert title here</title>
  10. </head>
  11. <body>
  12. <%
  13.     session.setAttribute(“user”,user);
  14.     String username=user.getUsername();
  15.  %>
  16.  <%=username %>,欢迎您来到FUCK网!<br>
  17.  您的IP是:<%=request.getRemoteAddr() %><br>
  18. 你的主机是:<%=request.getRemoteHost() %><br>
  19. 你使用的协议是:<%=request.getProtocol() %><br>
  20. 你目前的地址是:<%=request.getRealPath(“/”) %>
  21. 你的主机端口是:<%=request.getRemotePort() %>
  22. </body>
  23. </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. </script>
  15. <input type=”submit” name=”submit” onclick=”return check(this);”/>

*request、response的常见用法

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

*转发和重定向的区别

转向页面:
重定向(redirect):以前的request中存放的变量全部失效,并进入一个新的request作用域。
转发(Forward):以前的request中存放的变量不会失效,就像把两个页面拼到了一起。
<jsp:forward page=”login_success.jsp”/>
(注:只要使用了服务器端跳转<jsp:forward>,则请求内容可以在跳转之后的页面继续得到)

Java代码  收藏代码
  1. Response.sendRedirect(“URL”);//重定向
  2. request.getRequestDispatcher(“apage.jsp”).forward(request, response);//转发到apage.jsp
  3. <jsp:forward page=”d.jsp”/>   //转发到d.jsp 在JSP中使用
  4. response.sendRedirect(“apage.jsp”);//重定向到apage.jsp
  • 大小: 13.6 KB
  • 大小: 2 KB
  • 大小: 25.4 KB
  • 大小: 18.8 KB