67,550
社区成员




<servlet-mapping>
<servlet-name>HostelServlet</servlet-name>
<url-pattern>/HostelServlet</url-pattern>
</servlet-mapping>
<filter>
<!-- <display-name>LoginFilter</display-name> -->
<filter-name>LoginFilter</filter-name>
<filter-class>com.student.web.filter.LoginFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>LoginFilter</filter-name>
<url-pattern>/jsps/main.jsp</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>LoginFilter</filter-name>
<servlet-name>HosteServlet</servlet-name>
</filter-mapping>
<filter-mapping>
<filter-name>LoginFilter</filter-name>
<servlet-name>UserInfoServlet</servlet-name>
</filter-mapping>
package com.student.web.filter;
import java.io.IOException;
import java.lang.reflect.InvocationTargetException;
import java.util.LinkedHashMap;
import java.util.Map;
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.annotation.WebFilter;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.beanutils.BeanUtils;
import com.student.user.domain.User;
import com.student.user.service.UserService;
@WebFilter(
urlPatterns = { "/jsps/main.jsp" },
servletNames = {
"HostelServlet",
"UserInfoServlet",
})
public class LoginFilter implements Filter {
public void destroy() {
}
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
chain.doFilter(request, response);
/*
* 1、取得 session 中数据判断用户有没有登录
* 如果 session 中有数据说明用户已经登录,如果为 null 说明没有登录
* 2、如果没登录,取得 cookie 中数据,如果 cookie 为 null 转到登录页面,
* 如果不为空,用 cookie 中的用户名和密码查询数据库,把查询出的数
* 据保存到 session 中,
* 3、 session 中有数据后放行
*/
//把 ServletRequest 对象转成 HttpServletRequest 对象
HttpServletRequest req = (HttpServletRequest) request;
HttpServletResponse resp = (HttpServletResponse) response;
User user = (User) req.getSession().getAttribute("sessionUser");
if(user == null){
Cookie[] cookie = req.getCookies();
if(cookie == null){
req.getRequestDispatcher("/jsps/user/login.jsp").forward(req, resp);
}else{
UserService userService = new UserService();
Map<String, String> map = new LinkedHashMap<String, String>();
for(Cookie c : cookie){
if(c.getName() == "cookieUsername" || c.getName() == "cookiePassword"){
map.put(c.getName(), c.getValue());
}
}
try {
BeanUtils.populate(user, map); //封装数据
} catch (IllegalAccessException e) {
throw new RuntimeException();
} catch (InvocationTargetException e) {
throw new RuntimeException();
}
req.getSession().setAttribute("sessionUser", userService.userLoginService(user));
}
}else{
chain.doFilter(request, response); //放行
}
}
public void init(FilterConfig fConfig) throws ServletException {
}
}
六月 13, 2014 2:00:10 下午 com.sun.faces.spi.InjectionProviderFactory createInstance
信息: JSF1048:有 PostConstruct/PreDestroy 注释。标有这些注释的 ManagedBeans 方法将表示注释已处理。
六月 13, 2014 2:00:10 下午 org.apache.catalina.core.StandardContext filterStart
严重: Exception starting filter LoginFilter
java.lang.ClassNotFoundException: com.student.web.filter.LoginFilter
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1714)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1559)
at org.apache.catalina.core.DefaultInstanceManager.loadClass(DefaultInstanceManager.java:527)
at org.apache.catalina.core.DefaultInstanceManager.loadClassMaybePrivileged(DefaultInstanceManager.java:509)
at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:137)
at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:260)
at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:107)
at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4656)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5312)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
at org.apache.catalina.core.StandardContext.reload(StandardContext.java:3926)
at org.apache.catalina.startup.HostConfig.checkResources(HostConfig.java:1271)
at org.apache.catalina.startup.HostConfig.check(HostConfig.java:1440)
at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:301)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90)
at org.apache.catalina.core.ContainerBase.backgroundProcess(ContainerBase.java:1374)
at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1530)
at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1540)
at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run(ContainerBase.java:1519)
at java.lang.Thread.run(Thread.java:744)
六月 13, 2014 2:00:10 下午 org.apache.catalina.core.StandardContext startInternal
严重: Error filterStart
六月 13, 2014 2:00:10 下午 org.apache.catalina.core.StandardContext startInternal
严重: Context [/students] startup failed due to previous errors
六月 13, 2014 2:00:10 下午 org.apache.catalina.loader.WebappClassLoader checkThreadLocalMapForLeaks
严重: The web application [/students] created a ThreadLocal with key of type [com.sun.faces.util.Util$1] (value [com.sun.faces.util.Util$1@64d5eca6]) and a value of type [java.util.HashMap] (value [{com.sun.faces.patternCache={ = }}]) but failed to remove it when the web application was stopped. Threads are going to be renewed over time to try and avoid a probable memory leak.
六月 13, 2014 2:00:10 下午 org.apache.catalina.core.StandardContext reload