Javaweb 判断是否登陆,否则则调回登陆界面,也就是session管理
2016-10-28 20:14
204 查看
为了实现Javaweb 判断是否登陆,否则则调回登陆界面,也就是session管理这样的功能,防止用户直接输入网址访问,需要提醒他登陆,可以在struct2的web.xml添加一个自定义的过滤器,如下web.xml配置:
<filter>
<filter-name>access filter</filter-name>
<filter-class>rms.filter.unlogin.AccessFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>access filter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
上面要注意的是自定义的写在系统的过滤器前面,否则不会有效果,自定义的过滤器代码如下:
package rms.filter.unlogin;
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.HttpServletResponse;
import javax.servlet.http.HttpSession;
import rms.Parameters;
public class AccessFilter implements Filter {
@Override
public void destroy() {
// TODO Auto-generated method stub
}
@Override
public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain)
throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) req;
HttpServletResponse response = (HttpServletResponse) resp;
HttpSession session = request.getSession();
String userName = (String) session.getAttribute(Parameters.USERNAME);
String uri = request.getRequestURI();
// 除了登录页面以外的页面和登录action以外,检查登录情况,未登录的需要重定向并且不通过过滤
if (uri.indexOf("index.jsp") == -1 && uri.indexOf("loginProcess.action") == -1) {
if (uri.indexOf("media") < 0) {
if ((userName == null || userName.equals(""))) {
response.sendRedirect("index.jsp");
return;
}
}
}
chain.doFilter(req, resp);
}
@Override
public void init(FilterConfig arg0) throws ServletException {
// TODO Auto-generated method stub
}
}
<filter>
<filter-name>access filter</filter-name>
<filter-class>rms.filter.unlogin.AccessFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>access filter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
上面要注意的是自定义的写在系统的过滤器前面,否则不会有效果,自定义的过滤器代码如下:
package rms.filter.unlogin;
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.HttpServletResponse;
import javax.servlet.http.HttpSession;
import rms.Parameters;
public class AccessFilter implements Filter {
@Override
public void destroy() {
// TODO Auto-generated method stub
}
@Override
public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain)
throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) req;
HttpServletResponse response = (HttpServletResponse) resp;
HttpSession session = request.getSession();
String userName = (String) session.getAttribute(Parameters.USERNAME);
String uri = request.getRequestURI();
// 除了登录页面以外的页面和登录action以外,检查登录情况,未登录的需要重定向并且不通过过滤
if (uri.indexOf("index.jsp") == -1 && uri.indexOf("loginProcess.action") == -1) {
if (uri.indexOf("media") < 0) {
if ((userName == null || userName.equals(""))) {
response.sendRedirect("index.jsp");
return;
}
}
}
chain.doFilter(req, resp);
}
@Override
public void init(FilterConfig arg0) throws ServletException {
// TODO Auto-generated method stub
}
}
相关文章推荐
- 判断用户是否登录,如果登录了放行,否则跳转到登陆页面
- WPF 登陆界面判断输入的用户名和密码是否与数据库中保存的数据相同
- 判断是否登陆的决定tabbar的界面跳转问题
- 初学者jsp中登录界面判断是否登陆成功
- javaWeb项目用过滤器filter实现登陆成功后才能访问主页面,否则直接输入主页面的地址自动跳转到登陆界面
- Android在初始化时弹出popwindow的方法,就是判断界面是否被加载完了
- Android判断网络是否打开,并打开设置网络界面
- 判断year年份是否为闰年(能被4整除是闰年,能被整除100不是,能被400整除是闰年)。闰年leap_year为1,否则为0.
- iOS - 判断用户是否已经登陆
- Android判断网络是否打开,并打开设置网络界面
- Android判断当前界面是否为桌面
- android4.0 中设置网络出错,Android判断网络是否打开,并打开设置网络界面
- [Android]判断当前界面是否是桌面
- Shiro源码分析 -- Subject.isPermitted(permission)已登陆用户判断是否具有某权限
- 点击页面判断是否安装app并打开,否则跳转app store的方法
- 有一个二叉树,现在怀疑它有一个结点有2个父节点,请写出一个函数来判断该二叉树是否存在一个节点含有2个父节点。如果存在,返回true,否则返回false。
- 从控制台输入用户名和密码, 然后 判断输入的用户名是否是@“Frank”, 密码 是否是 @“lanou”, 如果用户名和密码都正确,则输出登录成功, 否则输出登录失败. 提示:
- 如何在keyPressed事件中判断当前是否是SOFT1键以便响应回到上一界面?
- 从键盘上接收一个字母,判断是否是大写字母,如果是则转换成小写字母输出 ,否则直接输出。
- Android Webview 用 WebBackForwardList 来判断是否是返回的界面