天天看點

基于jsp+javabean開發的登入子產品

上一篇學習了基于jsp的登入子產品,現在總結一下在開發中遇到的問題和這種開發模式的缺點。

一、遇到的問題:1.是mysql驅動包的導入問題(com.mysql.jdbc.Driver);2.連接配接資料庫的url(jdbc:mysql://localhost:3306/testjsp);3.在logincheck中擷取login.jsp中傳遞過來的參數(request.getParameter("username"));4.sql語句中where條件部分的單引号(”select * from t_user where mame ="+"'"+uname+"'");5.控制頁面跳轉的條件設定一個boolean類型的變量;6.頁面跳轉(好幾種方式):<jsp:forward page="success.jsp"></jsp:forward>。

二、缺點:就是在logincheck.jsp中嵌入了太多的java代碼 并且 每次有通路資料庫的請求(比如說注冊),都需要建立新的資料庫連接配接,再通路資料庫,最後關閉資料庫連接配接。

       改進方法:把對資料庫的連接配接、通路和關閉封裝出來。

三、基于jsp+javabean開發的登入子產品

1、其他步驟都一樣,下面是jspcheck.jsp的核心代碼:

//利用jsp:useBean

<jsp:useBean id="user" class="testjspbean.User">

       <jsp:setProperty name="user"  property="*"/>

</jsp:useBean>

<jsp:useBean id="userdao" class="dao.Userdao"></jsp:useBean>

<body>

<% 

  //擷取頁面傳遞參數

  String names = user.getName();

  String password = user.getPassword();

  //擷取資料庫連

  userdao.getConnection();

  boolean flag = false;

  String sql = "select * from t_user where mame ="+"'"+names+"'"+"and password ="+"'"+password+"'"; 

  //查詢資料庫

  ResultSet rst = userdao.select(sql);

  while(rst.next()){

    flag=true;

    session.setAttribute("name",names);

  }

  //關閉資料庫連接配接

  userdao.close();

  //頁面跳轉

  if(flag){%>

   <jsp:forward page="success.jsp"></jsp:forward>

  <%}else{%>

   <jsp:forward page="false.html"></jsp:forward>

  <%}

  %>

</body>

2、項目目錄:

基于jsp+javabean開發的登入子產品

3、右鍵src--new--class--輸入name--finishi。

User.java中的代碼:

package testjspbean; public class User {

 private String name;

 private String password;

 public String getName() {

  return name;

 }

 public void setName(String name) {

  this.name = name;

 }

 public String getPassword() {

  return password;

 }

 public void setPassword(String password) {

  this.password = password;

 }

}

Userdao.java中代碼:

package dao; import java.sql.*; import testjspbean.User; public class Userdao {

 private Connection con=null;

 private Statement stmt=null;

 private ResultSet rs=null;

 private String url = "jdbc:mysql://localhost:3306/test";

 private String user="root";

 private String password ="Admin123";

 public void getConnection(){  

  try {

   Class.forName("com.mysql.jdbc.Driver");

   con = DriverManager.getConnection(url, user, password);

  } catch (Exception e) {

   e.printStackTrace();

  }

 }

 public ResultSet select(String sql){

   try {

    stmt = con.createStatement();

    rs = stmt.executeQuery(sql);

   } catch (Exception e) {

    e.printStackTrace();

   }

   return rs;

 }

 public void close(){

   try {

    if(rs!=null){

     rs.close();

    }

    if(stmt!=null){

     stmt.close();

    }

    if(con!=null){

     con.close();

    }

   } catch (SQLException e) {

    e.printStackTrace();

   }

 }

}

4、運作結果:

基于jsp+javabean開發的登入子產品
基于jsp+javabean開發的登入子產品
基于jsp+javabean開發的登入子產品

好了,大功告成,是不是logincheck.jsp中代碼簡潔了很多。

繼續閱讀