javaEE页面跳转问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了javaEE页面跳转问题相关的知识,希望对你有一定的参考价值。

我使用的是struts2 hibernate spring ,比如我在登录页面a.jsp登录成功后,跳转b.jsp,如果我把这个b.jsp复制到别的浏览器,就要自动跳转a.jsp叫他登录,求思路。详细点,谢谢。回答好追加分.

在你登陆时一定要将用户信息( 例如user),或者一个变量存储到session中

然后你在web.xml中加入过滤器
<filter>
<filter-name>AuthFilter</filter-name>
<filter-class>处理过滤的类,例如AuthFilter</filter-class>
<init-param>
<param-name>noAuthList</param-name>
<param-value>不许要过滤的页面</param-value>
</init-param>
</filter>
处理过滤的类

public class AuthFilter implements Filter

/**
* filter 配置.
*/
private FilterConfig filterConfig;
/**
* 不验证登录
*/
private String[] noFilteList;
/**
* 不验证权限.
*/
private String[] noAuthList;
/**
* 日志类.
*/
private Logger logger = Logger.getLogger(AuthFilter.class);
public void destroy()


/**
* 1,doFilter方法的第一个参数为ServletRequest对象。此对象给过滤器提供了对进入的信息(包括
* 表单数据、cookie和HTTP请求头)的完全访问。第二个参数为ServletResponse,通常在简单的过
* 滤器中忽略此参数。最后一个参数为FilterChain,此参数用来调用servlet或JSP页。
*/
public void doFilter(ServletRequest servletRequest,
ServletResponse servletResponse, FilterChain filterChain)
throws IOException, ServletException

HttpServletRequest request = (HttpServletRequest) servletRequest;
/**
* 如果处理HTTP请求,并且需要访问诸如getHeader或getCookies等在ServletRequest中
* 无法得到的方法,就要把此request对象构造成HttpServletRequest
*/
HttpServletResponse response = (HttpServletResponse) servletResponse;
String currentURL = request.getRequestURI(); // 取得根目录所对应的绝对路径:
String targetURL = currentURL.substring(currentURL.lastIndexOf("/")+1); // 截取到当前文件名用于比较
HttpSession session = request.getSession(false);
if (equalsUrl(targetURL,noFilteList))

// 判断当前页是否是重定向以后的登录页面,如果是就不做session的判断,防止出现死循环
if (session == null || session.getAttribute("user") == null)

// *用户登录以后需手动添加session
logger.info("被隔离:" + targetURL);
response.sendRedirect(request.getContextPath() + "/a.jsp");
// 如果session为空表示用户没有登录就重定向到login.jsp页面
return;


// 加入filter链继续向下执行
/**
* 调用FilterChain对象的doFilter方法。Filter接口的doFilter方法取一个FilterChain对象作 为它
* 的一个参数。在调用此对象的doFilter方法时,激活下一个相关的过滤器。如果没有另
* 一个过滤器与servlet或JSP页面关联,则servlet或JSP页面被激活。
*/
filterChain.doFilter(request, response);

/**
* filter初始化.
*/
public void init(FilterConfig filterConfig) throws ServletException

this.filterConfig = filterConfig;
// 以下从配置文件获取配置信
String nofilterPages = filterConfig.getInitParameter("noFilteList");
String noAuthPages =filterConfig.getInitParameter("noAuthList");
logger.info("不需要过滤登录页面为:" + nofilterPages);
logger.info("不需要过滤权限为:"+noAuthPages);
noFilteList = nofilterPages.split(";");
noAuthList = noAuthPages.split(";");

/**
* 比较URL 是否在需要验证的范围内.
*
* @param url
* URL;
* @param nofilterList 不过滤菜单.
* @return 是否需要验证 需要验证 true 不需要验证 false;
*/
private Boolean equalsUrl(String url ,String[] nofilterList)

if(url.length() == 0)
return false;

String suffName=url.substring(url.lastIndexOf(".")+1);
//不过滤png.jpg
if(suffName.equalsIgnoreCase("png")||suffName.equalsIgnoreCase("jpg")||suffName.equalsIgnoreCase("gif"))
return false;

if(url.equalsIgnoreCase("jquery-1.4.1.js")||url.equalsIgnoreCase("popup_layer.js")||url.equalsIgnoreCase("jquery.json-2.2.min.js"))

return false;


// logger.info("过滤页面:" + url);
// 判断是否在
for (String nofilterPage : nofilterList)

if (nofilterPage.equals(url))

return false;


return true;

这样,如果不登陆,在任何浏览器都无法打开除了a.jsp以外的页面,
我回答的已经很明白了,希望给分追问

能给我例子吗? 我邮箱

429351247@qq.com 能让我跑起来的例子,给了加分20

追答

例子已经发给你了,记得加分哦

参考技术A 在b.jsp中判断用户是否已登录
if(session.getAttribute("userid")==null)
<jsp:forward page="a.jsp" />
else
显示b.jsp
参考技术B 你首先要判断是否已登录如果没有登录你可以设置链接自动跳至登录页面.追问

这是肯定的。登录成功后 才能进入B。

参考技术C Session机制

javaweb网站首次运行不能跳转到主页面

参考技术A 是。JavaWeb:是用Java技术来解决相关web互联网领域的技术栈。javaweb网站首次运行不能跳转到主页面。Web:全球广域网,也称为万维网(www),能够通过浏览器访问的网站。

以上是关于javaEE页面跳转问题的主要内容,如果未能解决你的问题,请参考以下文章

在javaee中如何使界面登录成功后直接跳转到另外一个页面

JavaEE:登录页面中,用户输入用户名和密码,如果两者相等,则登录成功,跳转到欢迎页面,

javaweb 页面跳转传递参数

javaweb 页面跳转传递参数

java web怎么实现页面定时跳转

javaweb网站首次运行不能跳转到主页面