第十二次課:Servlet實現用戶管理

一、Servlet使用

1、新建servlet包

2、新建FirstServlet類(new-Servlet),父類爲HttpServlet

    public void destroy() {
        super.destroy();
    }

    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        response.setContentType("text/html");
        PrintWriter out = response.getWriter();
        out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
        out.println("<HTML>");
        out.println("  <HEAD><TITLE>A Servlet</TITLE></HEAD>");
        out.println("  <BODY>");
        out.println("<h1>hello</h1>");
    
        out.println("  </BODY>");
        out.println("</HTML>");
        out.flush();
        out.close();
    }


    public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        doGet(request, response);
        
    }

3、查看部署文件(Web.xml)

<servlet>
    <servlet-name>FirstSevlet</servlet-name>
    <servlet-class>servlet.FirstSevlet</servlet-class>
  </servlet>

<servlet-mapping>
    <servlet-name>FirstSevlet</servlet-name>
    <url-pattern>/user/FirstSevlet</url-pattern>
  </servlet-mapping>

4、地址欄訪問http://localhost:8080/test/user/FirstSevlet

頁面顯示hello

二、實現用戶登錄處理

1、登陸頁內容

<FORM METHOD=POST ACTION="user/UserServlet?type=login">
      <table  border="0" style="margin:10px 0 0 10px;">
            <tbody><tr>
                    <td width="50%" valign="top">用戶名:</td>
                    <td><input type="text" name="name" class="txt" size="10"></td>
                </tr>
                <tr>
                    <td>密&nbsp;&nbsp;碼:</td>
                    <td>
                    <INPUT TYPE="password" NAME="password" size="10" class="txt">
                </td>
                </tr>
                <tr>
                    <td align="center"><INPUT  class="txt" TYPE="submit" value="登錄"></td>
                    <td><INPUT class="txt"TYPE="button" onclick="location.href='register.jsp'" value="註冊"></td>
            </tr>
         </tbody>
        </table>
    </form>

2、新建UserServlet類(url:user/UserServlet)

doPost方法代碼:

    public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
    
        String  type=request.getParameter("type");
        if("login".equals(type)){
            
            String name = request.getParameter("name");
            String pwd = request.getParameter("password");
            UserDAO dao=new UserDAO();
            User u=dao.login(name, pwd);
        
            
            
            if(u!=null){
                //request.getRequestDispatcher("index.php").forward(request, response);
                
                request.getSession().setAttribute("user",u);    //session實現保存用戶信息
                response.sendRedirect("../index.jsp");
            }else{
                response.sendRedirect("../index.jsp");
            }
        }
        
    
    }

其中UserDAO中login()方法代碼

public class UserDAO {
    
    public User login(String name,String pwd)
    {  
        User u=null; //添加
        
        
        Connection conn=null;
        PreparedStatement ps=null;
        ResultSet  rs=null;
        
        String sql="select * from users where name=? and password=?";
        
    
        
        try {
            Class.forName(Const.DRIVER);
            conn=DriverManager.getConnection(Const.URL, Const.USER, Const.PASSWORD);
            ps=conn.prepareStatement(sql);
            
            ps.setString(1, name);
            ps.setString(2, pwd);
            rs=ps.executeQuery();
            if(rs.next()){
                u=new User();
                u.setUid(rs.getInt("uid"));
                u.setName(rs.getString("name"));
                u.setPassword(rs.getString("password"));

            }
            
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        
        try {
            if(rs!=null)
                rs.close();
            
            if(ps!=null)
                ps.close();
            
            if(conn!=null)
                conn.close();
            
            } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }    
        return u;
    }
 3、web.xml部署

 <servlet>

    <servlet-name>UserServlet</servlet-name>
    <servlet-class>servlet.UserServlet</servlet-class>
  </servlet>

 <servlet-mapping>
    <servlet-name>UserServlet</servlet-name>
    <url-pattern>/user/UserServlet</url-pattern>
  </servlet-mapping>  

4、實現顯示登錄用戶名等信息

left部分判斷是否登錄過用戶,如果登錄顯示相關信息

<div class="person">
 <img src="p_w_picpaths/personal.gif">

<%
 User user=(User)session.getAttribute("user");
 if(user==null)
 {
 %>

 <FORM METHOD=POST ACTION="user/UserServlet?type=login">
      <table  border="0" style="margin:10px 0 0 10px;">
            <tbody><tr>
                 <td width="50%" valign="top">用戶名:</td>
                    <td><input type="text" name="name" class="txt" size="10"></td>
                </tr>
                <tr>
                 <td>密&nbsp;&nbsp;碼:</td>
                    <td>
     <INPUT TYPE="password" NAME="password" size="10" class="txt">
    </td>
                </tr>
                <tr>
                 <td align="center"><INPUT  class="txt" TYPE="submit" value="登錄"></td>
     <td><INPUT class="txt"TYPE="button" onclick="location.href='register.jsp'" value="註冊"></td>
            </tr>
         </tbody>
  </table>
 </form>
 <%}else{%>
 <ul>
 <li>您好:</li>
 <li><%=user.getName() %></li>
 <li><a href="person.jsp">個人信息:</a></li>
 <li><a href="user/UserServlet?type=exit">退出</a></li>
 </ul>
 <%} %>
 
</div>

三、Servlet實現用戶註銷

1、left頁

<a href="/user/UserServlet?type=exit">註銷</a>

2、UserServlet的doGet方法實現用戶註銷,返回首頁


protected void doGet(HttpServletRequest request, HttpServletResponse response)
  throws ServletException, IOException {

 String  type=request.getParameter("type");
 if("exit".equals(type)){
  request.getSession().invalidate();
  response.sendRedirect("../index.jsp");
 } 

}

四、Servlet實現刪除用戶功能

1、user_view.jsp實現顯示用戶信息(admin/user_view.jsp)

  <tr>
    <td><%=u.getUid()%></td>
    <td><%=u.getName()%></td>
    <td><%=u.getEmail()%></td>
    <td><a href="../user/UserSevlet?type=delete&uid=<%=u.getUid()%>">刪除</a></td>
    <td><a href="#">修改</a></td>
    <td>詳細</td>
  </tr>

2、UserServlet的doGet方法實現刪除用戶

protected void doGet(HttpServletRequest request, HttpServletResponse response)
  throws ServletException, IOException {
 // TODO Auto-generated method stub
 String  type=request.getParameter("type");
 if("exit".equals(type)){
  request.getSession().invalidate();
  response.sendRedirect("../index.jsp");
 }else if("delete".equals(type)){
  String uid=request.getParameter("uid");
  UserDAO dao=new UserDAO();
  dao.delete(Integer.parseInt(uid));
  response.sendRedirect("../admin/index.jsp");

  
 }

路徑關係

---admin/index.jsp(後臺主頁)①

---admin/user_view.jsp(後臺查看用戶信息頁)②

---user/UserServlet③

---index.jsp(前臺主頁)④

③-->④response.sendRedirect("../index.jsp");

③-->① response.sendRedirect("../admin/index.jsp");

④-->③  user/UserServlet

①或②-->③ ../user/UserServlet

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章