Servlet開發(3)
阿新 • • 發佈:2018-09-24
exce binding @override ack get pack ppi ont destroy
Servlet開發
Servlet過濾器:
主要是對訪問主頁的用戶進行過濾,通過登錄系統進入的用戶可以看到主頁內容,在session中存在currentuser。
可以對此進行判斷:
1 package com.java1234.web; 2 import java.io.IOException; 3 import javax.servlet.Filter; 4 import javax.servlet.FilterChain; 5 import javax.servlet.FilterConfig; 6 import javax.servlet.ServletException;Loginfilter.java7 import javax.servlet.ServletRequest; 8 import javax.servlet.ServletResponse; 9 import javax.servlet.http.HttpServletRequest; 10 import javax.servlet.http.HttpSession; 11 12 public class Loginfilter implements Filter { 13 14 @Override 15 public void destroy() { 16 // TODO Auto-generated method stub17 18 } 19 20 @Override 21 public void doFilter(ServletRequest ServletRequest, ServletResponse ServletResponse, FilterChain FilterChain) 22 throws IOException, ServletException { 23 // TODO Auto-generated method stub 24 HttpServletRequest request=(HttpServletRequest)ServletRequest;//將ServletRequest強制轉化為HttpServetRequest 25 HttpSession session=request.getSession();//獲取sessin(如果用戶登錄就存在session) 26 Object o=session.getAttribute("currentUser");//獲取currentUser對象 27 String path=request.getServletPath();//獲取登錄路徑 28 if(o == null && path.indexOf("login")< 0){ 29 /*服務器內部跳轉 - -> 沒有登錄不能能訪問主頁*/ 30 request.getRequestDispatcher("Login.jsp").forward(ServletRequest, ServletResponse); 31 }else{ 32 FilterChain.doFilter(ServletRequest,ServletResponse); 33 } 34 } 35 36 @Override 37 public void init(FilterConfig arg0) throws ServletException { 38 // TODO Auto-generated method stub 39 40 } 41 42 }
配置類似於 Servlet :
1 </web-app> 2 <filter> 3 <filter-name>Loginfilter</filter-name> 4 <filter-class>com.java1234.web.Loginfilter</filter-class> 5 </filter> 6 <filter-mapping> 7 <filter-name>Loginfilter</filter-name> 8 <url-pattern>/login</url-pattern> 9 </filter-mapping> 10 </web-app>
Servlet監聽器:
監聽web事件;如application,session,request。
寫一個監聽session的例子:
首先當用戶登錄時,設置session值,這時候會添加屬性,監聽到。。。
其次註銷的時候,刪除session值,這時候是刪除屬性,監聽到。。
so
代碼如下:
1 package com.java1234.listener; 2 3 import javax.servlet.http.HttpSessionAttributeListener; 4 import javax.servlet.http.HttpSessionBindingEvent; 5 6 public class SessionAttributeListener implements HttpSessionAttributeListener{ 7 8 @Override 9 public void attributeAdded(HttpSessionBindingEvent HttpSessionBindingEvent) { 10 // TODO Auto-generated method stub 11 System.out.println("添加的屬性名:"+HttpSessionBindingEvent.getName()+"屬性值:"+HttpSessionBindingEvent.getValue()); 12 } 13 14 @Override 15 public void attributeRemoved(HttpSessionBindingEvent HttpSessionBindingEvent) { 16 // TODO Auto-generated method stub 17 System.out.println("刪除的屬性名:"+HttpSessionBindingEvent.getName()+"屬性值 :"+HttpSessionBindingEvent.getValue()); 18 } 19 20 @Override 21 public void attributeReplaced(HttpSessionBindingEvent arg0) { 22 // TODO Auto-generated method stub 23 24 } 25 26 }SessionAttributeListener.java
退出登錄的java代碼:
1 package com.java1234.web; 2 import java.io.IOException; 3 import java.io.PrintWriter; 4 import javax.servlet.ServletException; 5 import javax.servlet.http.HttpServlet; 6 import javax.servlet.http.HttpServletRequest; 7 import javax.servlet.http.HttpServletResponse; 8 public class LogoutServlet extends HttpServlet{ 9 10 /** 11 * 12 */ 13 private static final long serialVersionUID = 1L; 14 @Override 15 protected void doGet(HttpServletRequest request, HttpServletResponse response) 16 throws ServletException, IOException { 17 // TODO Auto-generated method stub 18 this.doPost(request,response); 19 } 20 21 @Override 22 protected void doPost(HttpServletRequest request, HttpServletResponse response) 23 throws ServletException, IOException { 24 // TODO Auto-generated method stub 25 //清除session 26 request.getSession().invalidate(); 27 response.sendRedirect("Login.jsp"); 28 } 29 @Override 30 public void destroy() { 31 // TODO Auto-generated method stub 32 33 } 34 @Override 35 public void init() throws ServletException { 36 // TODO Auto-generated method stub 37 38 } 39 }LogoutServlet.java
配置web.xml
1 <!-- 添加監聽器 --> 2 <listener> 3 <listener-class> 4 com.java1234.listener.SessionAttributeListener 5 </listener-class> 6 </listener> 7 <!-- 設置logout的servlet --> 8 <servlet> 9 <servlet-name>LogoutServlet</servlet-name> 10 <servlet-class>com.java1234.web.LogoutServlet</servlet-class> 11 </servlet> 12 <servlet-mapping> 13 <servlet-name>LogoutServlet</servlet-name> 14 <url-pattern>/logout</url-pattern> 15 </servlet-mapping>web.xml
啟動登錄------>註銷
運行結果
至此ok了。。
Servlet開發(3)