Servlet—簡單的管理系統


網站的框架

網站的框架采用MV模式,即Model(模型)、View(視圖)。框架將界面層和模型層進行分離,結構更清晰,更加方便管理代碼。

其中上圖框架中的修改和刪除功能完成而添加查詢模塊沒有編寫

實現的系統頁面樣式如下:

             

      

下面貼出網站詳細的代碼:

1.Login.java 

/**
 *登錄界面*/
package com.xidian;
import javax.servlet.http.*;
import java.io.*;

public class Login extends HttpServlet {

    public void doGet(HttpServletRequest req,HttpServletResponse res){
      try{
          //中文亂碼
          res.setContentType("text/html;charset=gbk");
         PrintWriter pw=res.getWriter();
         //返回登錄界面
         pw.println("<html>");
         pw.println("<body bgcolor=#CDD4FF >");
         pw.println("<center><img src=images/1.jpg width=120px height=150px><hr>");

         //得到error信息
         String info=req.getParameter("info");
         if(info!=null){
             pw.println("<h4>請正確登錄!</h4>");
         }
         pw.println("<h3>登錄界面<h3>");
         pw.println("<form action=logincl method=post>");
         pw.println("用戶名:<input type=text name=username><br>");
         pw.println("密碼:<input type=password name=password><br>");
         pw.println("<input type=checkbox name=keep value=2>保存Cookie<br>");
         pw.println("<input type=submit name=login value=login><br>");
         pw.println("</form>");
         pw.println("</center><hr><img src=images/3.jpg width=120px height=150px>");
         pw.println("<body>");
         pw.println("<html>");
      }
    catch(Exception ex){
        ex.printStackTrace();
    } 
}
public void doPost(HttpServletRequest req,HttpServletResponse res){ this.doGet(req,res); } }

 2.LoginCl.java

  1 //處理界面
  2 package com.xidian;
  3 import javax.servlet.http.*;
  4 import java.io.*;
  5 import java.sql.*;
  6 
  7 public class Logincl extends HttpServlet {
  8 
  9     //重寫init函數,init只會在啟動tomcat調用servlet時被執行
 10     public void init(){
 11 
 12         try {
 13             //只會被調用一次
 14             System.out.println ("init被調用");
 15 
 16             //添加網頁訪問次數的功能
 17             //創建一個FileReader
 18             FileReader f=new FileReader("e://myDocument.txt");
 19             BufferedReader br=new BufferedReader(f);
 20             //讀出一行數據
 21             String numVal=br.readLine();
 22             //一定要關閉文件流
 23             br.close();
 24             int times=Integer.parseInt(numVal);
 25             //將times值放入到servletcontext
 26             this.getServletContext().setAttribute("visitTimes",times+"");
 27 
 28             }
 29             catch (Exception ex) {
 30             }
 31     }
 32 
 33     //重寫destroy函數,destroy函數在tomcat關閉的時候被調用,要用shutdown.bat關,不能直接叉掉tomcat窗口
 34     public void destroy(){
 35         try {
 36             System.out.println ("destroy被調用");
 37 
 38             //再將新的次數寫回去
 39             FileWriter fw=new FileWriter("e://myDocument.txt");
 40             BufferedWriter bw=new BufferedWriter(fw);
 41             bw.write(this.getServletContext().getAttribute("visitTimes").toString());
 42             bw.close();
 43             }
 44             catch (Exception ex) {
 45             }
 46     }
 47 
 48     public void doGet(HttpServletRequest req,HttpServletResponse res){
 49     Connection ct=null;
 50     PreparedStatement sm=null;
 51     ResultSet rs=null;
 52       try{
 53       //接收用戶名和密碼
 54       String u=req.getParameter("username");
 55       String p=req.getParameter("password");
 56     //調用UserBeanCl
 57     UserBeanCl ubc=new UserBeanCl();
 58         //使用UserBean方法
 59          if(ubc.checkUser(u,p)){
 60               //用戶合法
 61 
 62               //設置Cookie值
 63                String keep=req.getParameter("keep");
 64                if(keep!=null){
 65                //將用戶名和密碼保存在客戶端(cookie)
 66                //創建Cookie
 67                Cookie name=new Cookie ("myname",u);
 68                Cookie pass=new Cookie("mypasswd",p);
 69                //設置時間
 70                name.setMaxAge(14*24*3600);
 71               pass.setMaxAge(14*24*3600);
 72                    //回寫到客戶端
 73                res.addCookie(name);
 74                res.addCookie(pass);
 75                }
 76 
 77             //設置Session值
 78                HttpSession hs=req.getSession(true);
 79             //1.修改session的存在時間
 80             //hs.setMaxInactiveInterval(0);
 81             //2.向session添加屬性
 82             hs.setAttribute("uname",u+"");
 83 
 84             //每登錄一次在Session空間中添加計數器
 85             String times=this.getServletContext().getAttribute("visitTimes").toString();
 86             this.getServletContext().setAttribute("visitTimes",(Integer.parseInt(times)+1)+"");
 87 
 88             //跳轉到Main頁面
 89             res.sendRedirect("Main");
 90 
 91          } else{
 92            //說明用戶不存在
 93            res.sendRedirect("login");//要到的servlet的那個url
 94            }
 95   }
 96     catch(Exception ex){
 97 
 98         ex.printStackTrace();
 99     }finally{
100         try {
101             if(rs!=null){
102             rs.close();
103             }
104             if(sm!=null){
105             sm.close();
106             }
107             if(ct!=null){
108             ct.close();
109             }
110         }
111     catch (Exception ex) {
112         ex.printStackTrace();
113         }
114       }
115    }
116 
117  public void doPost(HttpServletRequest req,HttpServletResponse res){
118    this.doGet(req,res);
119     }
120 
121 }
View Code

 3.Main.java

/**
 *登錄界面
 * @version 1.00 2016/7/14
 */
package com.xidian;
import javax.servlet.http.*;
import java.io.*;

public class Main extends HttpServlet {

    public void doGet(HttpServletRequest req,HttpServletResponse res){
      try{
           //中文亂碼處理
           res.setContentType("text/html;charset=gbk");
         PrintWriter pw=res.getWriter();
         //返回登錄界面
         pw.println("<html>");
         pw.println("<body bgcolor=#CDD4FF >");
         pw.println("<center><img src=images/1.jpg width=120px height=150px><hr>");
         pw.println("<h1>主界面</h1>");
         pw.println("<a href=Welcome>管理用戶</a><br>");
         pw.println("<a href=???>添加用戶</a><br>");
         pw.println("<a href=???>查找用戶</a><br>");
         pw.println("<a href=???>安全退出</a><br>");
         pw.println("</center><hr><img src=images/3.jpg width=120px height=150px>");
         pw.println("<body>");
         pw.println("<html>");
          }
        catch(Exception ex){
            ex.printStackTrace();
        }
    }

   public void doPost(HttpServletRequest req,HttpServletResponse res){

   this.doGet(req,res);
    }

}
View Code

 4.Welcome.java

//歡迎界面


package com.xidian;
import javax.servlet.http.*;
import java.io.*;
import java.sql.*;
import java.util.*;

public class Welcome extends HttpServlet {

    public void doGet(HttpServletRequest req,HttpServletResponse res){
      Connection ct=null;
      PreparedStatement ps=null;
      ResultSet rs=null;

  try {
       //得到session
        HttpSession hs=req.getSession(true);
      String myName=(String)hs.getAttribute("uname");
      String name="";
      String passwd="";
       //判斷非法登錄
     if(myName==null){
     //如果session中沒有用戶信息,再看看有沒有cookie
     //    從客戶端得到所有cookie信息
     Cookie [] allCookies=req.getCookies();

     //如果allCookie不為空
     if(allCookies!=null){
         //從中取出cookie
         for(int i=0;i<allCookies.length;i++){
             //依次取出
             Cookie temp=allCookies[i];
              if(temp.getName().equals("myname")){
                  //得到cookie值
                  name=temp.getValue();
              }else if(temp.getName().equals("mypasswd")){
                  passwd=temp.getValue();
              }
         }
         if(!name.equals("")&&!passwd.equals("")){
             //到logincl去驗證
             res.sendRedirect("logincl?username="+name+"&password="+passwd);
            return;
         }
      }

    }


           //得到從logincl傳遞的用戶名
              String u=req.getParameter("uname");
          //得到logincl傳遞的密碼
             String p=req.getParameter("upass");
          //解決中文亂碼問題
             res.setCharacterEncoding("gbk");

            PrintWriter pw=res.getWriter();
             pw.println("<html>");

            // pw.println("Welcome "+u+" upass="+p);
              pw.println("<body bgcolor=#CDD4FF >");
             pw.println("歡迎您:"+myName+"<img src=images/1.gif width=50px height=30px><center><img src=images/1.jpg width=120px height=150px><hr>");
             pw.println("<h1>管理用戶</h1>");
            pw.println("<br><a href=login>返回重新登錄</a>");


           //===========分頁的功能========================
            int pageSize=5;//一頁顯示幾條記錄
            int pageNow=1; //希望顯示第幾頁

            //動態接收pageNow
            String sPageNow=req.getParameter("pageNow");
            if(sPageNow!=null){
                //用戶不是第一次進入Welcome頁面
                    pageNow=Integer.parseInt(sPageNow);
            }

            //調用UserBeanCl
                UserBeanCl ubc=new UserBeanCl();
                ArrayList al=ubc.getResultByPage(pageNow,pageSize);



            pw.println("<table border=1>");
            pw.println("<tr bgcolor=pink><th>id</th><th>name</th><th>passwd</th><th>email</th><th>grade</th><th>修改用戶</th><th>刪除用戶</th></tr>");
            //定義一個顏色數組
            String [] mycol={"silver","pink"};

            for(int i=0;i<al.size();i++){
                UserBean ub=(UserBean)al.get(i);
                pw.println("<tr bgcolor="+mycol[i%2]+">");
                pw.println("<td>"+ub.getUserId()+"</td>");
                pw.println("<td>"+ub.getUserName()+"</td>");
                pw.println("<td>"+ub.getPasswd()+"</td>");
                pw.println("<td>"+ub.getMail()+"</td>");
                pw.println("<td>"+ub.getGrade()+"</td>");
                pw.println("<td><a href=Update?uId="+ub.getUserId()+"&uName="+ub.getUserName()+"&uPasswd="+ub.getPasswd()+"&uEmail="+ub.getMail()+"&uGrade="+ub.getGrade()+">修改用戶</td>");
                pw.println("<td><a href=DelUserCl?userid="+ub.getUserId()+" onclick=\"return window.confirm('你確定要刪除用戶嗎?')\">刪除用戶</td>");
                pw.println("</tr>");

            }
        pw.println("</table>");
        //顯示上頁
        if(pageNow!=1)
        pw.println("<a href=Welcome?pageNow="+(pageNow-1)+">"+"上一頁"+"</a>");
        //顯示超鏈接
        for(int i=pageNow;i<=pageNow+4;i++){
            pw.println("<a href=Welcome?pageNow="+i+">"+i+"</a>");
        }
        //顯示下頁
        int pageCount=ubc.getPageCount();
        if(pageNow!=pageCount)
        pw.println("<a href=Welcome?pageNow="+(pageNow+1)+">"+"下一頁"+"</a>");
        pw.println("該網頁被訪問了"+this.getServletContext().getAttribute("visitTimes").toString()+"次"+"<br>");

        //指定跳轉到某夜
        //這里實際是一個表單
        //你需要考慮的問題:輸入的頁數過大?,輸入的不是數字?
        pw.println("<form action=Welcome>");
        pw.println("<input type=text name=pageNow> ");
        pw.println("<input type=submit name=go> ");
        pw.println("</form>");

        pw.println("您的ip="+req.getRemoteAddr()+"<br>");
        pw.println("您的機器名="+req.getRemoteHost()+"<br>");

        pw.println("</center><hr><img src=images/3.jpg width=200px height=80px>");
        pw.println("</html>");

  }



    catch(Exception ex){
        ex.printStackTrace();
    }


}
   public void doPost(HttpServletRequest req,HttpServletResponse res){

   this.doGet(req,res);
    }

}
View Code

 5.DelUserCl.java.

/**
 處理刪除某個用戶
 */
package com.xidian;
import javax.servlet.http.*;
import java.io.*;

public class DelUserCl extends HttpServlet {

    public void doGet(HttpServletRequest req,HttpServletResponse res){
      try{
          //中文亂碼
          res.setContentType("text/html;charset=gbk");
        //調用userBeanCl的刪除用戶的方法,完成刪除
        UserBeanCl ubc=new UserBeanCl();
        //接收從Welcome.java中傳遞的id
        String id=req.getParameter("userid");
        if(ubc.delUser(id)){
        //刪除成功
        res.sendRedirect("Ok");
        }else{
        //刪除失敗
        res.sendRedirect("Err");
        }

      }
    catch(Exception ex){

        ex.printStackTrace();
    }
    }

   public void doPost(HttpServletRequest req,HttpServletResponse res){

   this.doGet(req,res);
    }

}
View Code

6.Update.java

/**
 * @(#)Login.java
 *
 *修改用戶界面
 * @author
 * @version 1.00 2016/7/14
 */
package com.xidian;
import javax.servlet.http.*;
import java.io.*;

public class Update extends HttpServlet {

    public void doGet(HttpServletRequest req,HttpServletResponse res){
      try{
          //中文亂碼
          res.setContentType("text/html;charset=gbk");
         PrintWriter pw=res.getWriter();
         //返回登錄界面
         pw.println("<html>");
         pw.println("<body bgcolor=#CDD4FF >");
         pw.println("<center><img src=images/1.jpg width=120px height=150px><hr>");
         pw.println("<h1>修改用戶界面</h1>");
         pw.println("<form action=UpdateCl>");
         pw.println("<table border=1>");
         pw.println("<tr><td>id</td><td><input readonly type=text name=uId value="+req.getParameter("uId")+"></td></tr>");
         pw.println("<tr><td>name</td><td><input readonly type=text value="+req.getParameter("uName")+"></td></tr>");
         pw.println("<tr><td>passwd</td><td><input type=text name=newPasswd value="+req.getParameter("uPasswd")+"></td></tr>");
         pw.println("<tr><td>email</td><td><input type=text name=newEmail value="+req.getParameter("uEmail")+"></td></tr>");
         pw.println("<tr><td>grade</td><td><input type=text name=newGrade value="+req.getParameter("uGrade")+"></td></tr>");
         pw.println("<tr><td colspan=2><input type=submit value=修改用戶></td></tr>");
         pw.println("</table></form>");
         pw.println("</center><hr><img src=images/3.jpg width=120px height=150px>");
         pw.println("<body>");
         pw.println("<html>");
      }
    catch(Exception ex){

        ex.printStackTrace();
    }
    }

   public void doPost(HttpServletRequest req,HttpServletResponse res){

   this.doGet(req,res);
    }

}
View Code

7.UpdateCl.java

/**
 處理修改某個用戶
 */
package com.xidian;
import javax.servlet.http.*;
import java.io.*;

public class UpdateCl extends HttpServlet {

    public void doGet(HttpServletRequest req,HttpServletResponse res){
      try{
          //中文亂碼
          res.setContentType("text/html;charset=gbk");
        UserBeanCl ubc=new UserBeanCl();
        if(ubc.updateUser(req.getParameter("uId"),req.getParameter("newEmail"),req.getParameter("newPasswd"),req.getParameter("newGrade"))){
        //刪除成功
        res.sendRedirect("Ok");
        }else{
        //刪除失敗
        res.sendRedirect("Err");
        }

      }
    catch(Exception ex){

        ex.printStackTrace();
    }
    }

   public void doPost(HttpServletRequest req,HttpServletResponse res){

   this.doGet(req,res);
    }

}
View Code

8. Ok.java

/**
操作成功界面
 */
package com.xidian;
import javax.servlet.http.*;
import java.io.*;

public class Ok extends HttpServlet {

    public void doGet(HttpServletRequest req,HttpServletResponse res){
      try{
          //中文亂碼
          res.setContentType("text/html;charset=gbk");
         PrintWriter pw=res.getWriter();
         //返回登錄界面
         pw.println("<html>");
         pw.println("<body bgcolor=#CDD4FF >");
         pw.println("<center><img src=images/1.jpg width=120px height=150px><hr>");

         pw.println("<h1>恭喜你,操作成功!</h1>");
         pw.println("<a href=Main>返回主界面</a>&nbsp;&nbsp;&nbsp;<a href=Welcome>返回管理用戶</a>");
         pw.println("</center><hr><img src=images/3.jpg width=120px height=150px>");
         pw.println("<body>");
         pw.println("<html>");
      }
    catch(Exception ex){

        ex.printStackTrace();
    }
    }

   public void doPost(HttpServletRequest req,HttpServletResponse res){

   this.doGet(req,res);
    }

}
View Code

9.Err.java

/**
 操作失敗界面
 */
package com.xidian;
import javax.servlet.http.*;
import java.io.*;

public class Err extends HttpServlet {

    public void doGet(HttpServletRequest req,HttpServletResponse res){
      try{
          //中文亂碼
          res.setContentType("text/html;charset=gbk");
         PrintWriter pw=res.getWriter();
         //返回登錄界面
         pw.println("<html>");
         pw.println("<body bgcolor=#CDD4FF >");
         pw.println("<center><img src=images/1.jpg width=120px height=150px><hr>");

         pw.println("<h1>很遺憾,操作失敗!</h1>");
         pw.println("</center><hr><img src=images/3.jpg width=120px height=150px>");
         pw.println("<body>");
         pw.println("<html>");
      }
    catch(Exception ex){

        ex.printStackTrace();
    }
    }

   public void doPost(HttpServletRequest req,HttpServletResponse res){

   this.doGet(req,res);
    }

}
View Code

10.ConnDB.java

//從數據庫中得到連接
package com.xidian;
import java.sql.*;

import javax.sql.*;
import javax.naming.*;

public class ConnDB{

    private  Connection ct=null;
    public Connection getConn(){
        /*try {
        //連接數據庫
         Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
          //得到連接
         ct=DriverManager.getConnection("jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=test","sa","dba");
        }
        catch (Exception ex) {
          ex.printStackTrace();
        }
            */

        try {

            //創建一個上下文環境
             Context ctt=new javax.naming.InitialContext();
             //通過con得到數據源
            DataSource ds=(DataSource)ctt.lookup("java:comp/env/mydb");
            ct=ds.getConnection();
            System.out.println("使用連接池的方式");


            }
            catch (Exception ex) {
                 ex.printStackTrace();
            }
        return ct;
    }

}
View Code

11.UserBean.java

//這是一個UserBean<----->users表映射
//它的一個對象<----->users表的一條記錄對應
//數據

package com.xidian;

public class UserBean{

    private int userId;
    private String userName;
    private String passwd;
    private String email;
    private int grade;

    public void setUserId(int userId){
        this.userId=userId;
    }
    public int getUserId(){
        return this.userId;
    }

    public void setUserName(String userName){
        this.userName=userName;
    }
    public String getUserName(){
        return this.userName;
    }

    public void setPasswd(String passwd){
        this.passwd=passwd;
    }
    public String getPasswd(){
        return this.passwd;
    }

    public void setMail(String email){
        this.email=email;
    }
    public String getMail(){
        return this.email;
    }

    public void setGrade(int grade){
        this.grade=grade;
    }
    public int getGrade(){
        return this.grade;
    }



}
View Code

12.UserBeanCl.java

  1 //這是一個處理類(處理users表)操作UserBean
  2 //業務邏輯
  3 
  4 package com.xidian;
  5 import java.sql.*;
  6 import java.util.*;
  7 
  8 public class UserBeanCl {
  9 
 10     private    Connection ct=null;
 11     private PreparedStatement ps=null;
 12     private ResultSet rs=null;
 13     private int pageCount=0; //共有幾頁(計算)
 14 
 15     //修改用戶
 16         public boolean updateUser(String id,String email,String passwd,String grade){
 17         boolean b=false;
 18         try{
 19              ConnDB cd=new ConnDB();
 20              ct=cd.getConn();
 21              String sql="update users set passwd='"+passwd+"',email='"+email+"',grade='"+grade+"' where userId='"+id+"'";
 22              ps=ct.prepareStatement(sql);
 23              int num=ps.executeUpdate();
 24             if(num==1){
 25                 //修改成功!
 26                 b=true;
 27             }else{
 28                 //修改失敗!
 29 
 30             }
 31         }
 32         catch(Exception ex){
 33         ex.printStackTrace();
 34         }finally{
 35         this.close();
 36 
 37         }
 38         return  b;
 39     }
 40 
 41 
 42 
 43 
 44     //刪除用戶
 45     public boolean delUser(String id){
 46         boolean b=false;
 47         try{
 48              ConnDB cd=new ConnDB();
 49              ct=cd.getConn();
 50              String sql="delete from users where userId='"+id+"'";
 51              ps=ct.prepareStatement(sql);
 52              int num=ps.executeUpdate();
 53             if(num==1){
 54                 //刪除成功!
 55                 b=true;
 56             }else{
 57                 //刪除失敗!
 58 
 59             }
 60         }
 61         catch(Exception ex){
 62         ex.printStackTrace();
 63         }finally{
 64         this.close();
 65 
 66         }
 67         return  b;
 68     }
 69 
 70 
 71 
 72     //返回pageCount
 73     public int getPageCount(){
 74         return this.pageCount;
 75     }
 76 
 77 
 78 
 79 
 80     //分頁顯示
 81     public ArrayList getResultByPage(int pageNow,int pageSize){
 82          ArrayList al=new ArrayList();
 83 
 84         try{
 85           int rowCount=0; //共有幾條記錄(查表)
 86 
 87           //得到rowCount
 88          ConnDB cd=new ConnDB();
 89          ct=cd.getConn();
 90             ps=ct.prepareStatement("select count(*) from users");
 91             rs=ps.executeQuery();
 92             if(rs.next()){
 93                 rowCount=rs.getInt(1);
 94             }
 95             //計算pageCount
 96             if(rowCount%pageSize==0){
 97             pageCount=rowCount/pageSize;
 98             }else{
 99             pageCount=rowCount/pageSize+1;
100             }
101             ps=ct.prepareStatement("select top "+pageSize+" * from users where userId not in (select top "+pageSize*(pageNow-1)+" userId from users)");
102             //給?號賦值
103            // ps.setInt(1,pageSize);
104            // ps.setInt(2,pageSize*(pageNow-1));
105 
106             rs=ps.executeQuery();
107             while(rs.next()){
108                 //將rs中的每條記錄封裝到UserBean ub
109                 UserBean ub=new UserBean();
110                 ub.setUserId(rs.getInt(1));
111                 ub.setUserName(rs.getString(2));
112                 ub.setPasswd(rs.getString(3));
113                 ub.setMail(rs.getString(4));
114                 ub.setGrade(rs.getInt(5));
115                 //將ub放入到集合ArrayList中
116                 al.add(ub);
117 
118             }
119 
120         }
121       catch(Exception ex){
122         ex.printStackTrace();
123     }finally{
124         this.close();
125     }
126 
127     return al;
128 
129     }
130 
131 
132 //驗證用戶
133 
134     public boolean checkUser(String u,String p){
135 
136         boolean b=false;
137         try{
138             ConnDB cd=new ConnDB();
139             ct=cd.getConn();
140             ps=ct.prepareStatement("select top 1 passwd from users where username= '"+u+"'and passwd='"+p+"'");
141             rs=ps.executeQuery();
142             if(rs.next()){
143             String dbPasswd=rs.getString(1);
144             if(dbPasswd.equals(p)){
145                 b=true;
146               }
147             }
148         }
149        catch(Exception ex){
150         ex.printStackTrace();
151     }finally{
152         this.close();
153     }
154 
155      return b;
156 }
157 
158     //關閉資源
159     public void close(){
160 
161         try {
162             if(rs!=null){
163             rs.close();
164             }
165             if(ps!=null){
166             ps.close();
167             }
168             if(ct!=null){
169             ct.close();
170             }
171 
172           }
173     catch (Exception ex) {
174         ex.printStackTrace();
175         }
176     }
177 
178 
179 }
View Code

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM