jsp页面登陆后返回原来的页面

jsp页面登陆后返回原来的页面,第1张

这种涉及到权限过滤的问题最好是用Filter过滤器

public class AuthFilter implements Filter {

public void destroy() {

}

public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse,

FilterChain filterChain) throws IOException, ServletException {

HttpServletRequest request = (HttpServletRequest)servletRequest

HttpServletResponse response = (HttpServletResponse)servletResponse

String currentURL = request.getRequestURI()

String targetURL = currentURL.substring(currentURL.indexOf("/", 1),

currentURL.length())//截取到当前文件名用于比较

HttpSession session = request.getSession(false)

if (!"/a.jsp".equals(targetURL)) {

if (session == null || session.getAttribute("user") == null) {

//*用户登录以旁弯后需手动添加session

System.out.println("request.getContextPath()=" + request.getContextPath())

response.sendRedirect(request.getContextPath() + "/a.jsp")

//如果session为空表示用户没有登录就重定向到login.jsp页面

return

}

}

filterChain.doFilter(request, response)

}

public void init(FilterConfig filterConfig) throws ServletException {

}

}

大闭中体上差不多是这运态闷么写的,然后在web.xml中做配置让Filter运行起来,并且规定对那些页面做登陆的控制,具体配置和Servlet差不多,看看例子就晓得了

request.getParameter("method") 行吗

jsp中我没见过判脊迅断重定向,也没在需求中看到过。

如果逗消要写,可以再目的页面的顶部山野知加上js代码 location.href 判断下吧

在你登陆时一定要将用户信息( 例如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以外的页面,

我回答的已经很明白了,希望给分


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11979377.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-20
下一篇 2023-05-20

发表评论

登录后才能评论

评论列表(0条)

保存