jsp中,不登陆就不能直接进入下个页面。

2024-12-23 09:26:16
推荐回答(2个)
回答1:

这有很多方法。。。比如用session
登录成功后在session中存入某些可以确定身份的内容如username
一般用servlet处理如在servlet加入下列代码
HttpSession session = request.getSession();
session.setAttribute("username", user.getUsername());

在每个需要身份认定的jsp页面的body中加入下列代码

<%
Object o = request.getSession().getAttribute("username");
if ( o == null) {
%>

<%
}else {
%>
html内容

<%
}
%>
方法2 用filter
自定义一个类实现Filter接口
然后在在doFilter方法中重写你所需要的所有过滤条件
可以用来过滤也可以用来监控用户的权限
建议用每个页面的后缀名来过滤用户权限
如所以管理员的页面后缀都加上admin
如xxxAdmin.jsp 每次在doFilter方法前都更新当前页面的URI
然后检验用户是否有权限登录当前页面最后在web-xml中配置
filter还有过滤条件
下列代码是一个有学生,教师和管理员权限的doFilter的重写可以用作参考
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest r = (HttpServletRequest) request;
String uri = r.getRequestURI();
String context = r.getContextPath();
uri = uri.substring(context.length());
if (r.getSession().getAttribute("username") == null && (!uri.startsWith("/new"))) {
r.setAttribute("error", "login first!!!");
r.getRequestDispatcher("login.jsp").forward(request, response);
return;

} else if (uri.startsWith("/admin")) {
if (!r.getSession().getAttribute("realm").equals("3")) {
this.sendError(r, request, response);
return;
}
} else if (uri.startsWith("/lecturer")) {
if (!r.getSession().getAttribute("realm").equals("2")) {
this.sendError(r, request, response);
return;
}
} else if (uri.startsWith("/student")) {
if (!r.getSession().getAttribute("realm").equals("1")) {
this.sendError(r, request, response);
return;
}
}
chain.doFilter(request, response);
}

回答2:

在Admincheck.jsp页面 设置
session.setAttribute("a","a");
然后在A页面下写入如下代码

if(session.getAttribute("a")==null) //如果Admincheck.jsp页面获取的数据为空
{
response.sendRedirect("Adminlogin.jsp") //跳转到Adminlogin.jsp页面
}