<span style="font-family: Arial, Helvetica, sans-serif;">package com.ruanku.filter;</span>
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
public class LoginFilter implements Filter{
public void destroy() {
// TODO Auto-generated method stub
}
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse,
FilterChain filterChain) throws IOException, ServletException {
HttpServletRequest request=(HttpServletRequest)servletRequest;
HttpSession session=request.getSession();
Object o=session.getAttribute("currentUser");
String path=request.getServletPath();
if(o==null&&path.indexOf("login")<0){
request.getRequestDispatcher("login.jsp").forward(servletRequest, servletResponse);
}else{
filterChain.doFilter(servletRequest, servletResponse);
}
}
public void init(FilterConfig arg0) throws ServletException {
// TODO Auto-generated method stub
}
}
过滤器 LoginFilter
package com.ruanku.listener;
import javax.servlet.http.HttpSessionAttributeListener;
import javax.servlet.http.HttpSessionBindingEvent;
public class SessionAttributeListener implements HttpSessionAttributeListener{
public void attributeAdded(HttpSessionBindingEvent httpSessionBindingEvent) {
System.out.println("添加属性名:"+httpSessionBindingEvent.getName()+",属性值"+httpSessionBindingEvent.getValue());
}
public void attributeRemoved(HttpSessionBindingEvent httpSessionBindingEvent) {
// TODO Auto-generated method stub
System.out.println("删除属性名:"+httpSessionBindingEvent.getName()+",属性值"+httpSessionBindingEvent.getValue());
}
public void attributeReplaced(HttpSessionBindingEvent httpSessionBindingEvent) {
// TODO Auto-generated method stub
}
}
listener监听器
SessionAttributeListener.java
main.jsp改动
<body>
主页!当前登录用户:${currentUser.userName } <a href="logout">注销</a>
</body>
Logout.java
package com.ruanku.web;
import java.io.IOException;
import java.sql.Connection;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import com.ruanku.dao.UserDao;
import com.ruanku.model.User;
import com.ruanku.util.DbUtil;
public class LogoutServlet extends HttpServlet{
/**
*
*/
private static final long serialVersionUID = 1L;
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
this.doPost(request, response);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.getSession().invalidate();
response.sendRedirect("login.jsp");
}
}
xml配置
<listener>
<listener-class>
com.ruanku.listener.SessionAttributeListener
</listener-class>
</listener>
<filter>
<filter-name>loginFilter</filter-name>
<filter-class>com.ruanku.filter.LoginFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>loginFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<servlet>
<servlet-name>logoutServlet</servlet-name>
<servlet-class>com.ruanku.web.LogoutServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>logoutServlet</servlet-name>
<url-pattern>/logout</url-pattern>
</servlet-mapping>
信息: Server startup in 700 ms
添加属性名:currentUser,属性值com.ruanku.model.User@3ac11b
删除属性名:currentUser,属性值com.ruanku.model.User@3ac11b
success!!!!!