做了个简单权限控制的filter
代码如下:
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain)throws IOException, ServletException {
HttpServletRequest req=(HttpServletRequest)request;
HttpServletResponse rep=(HttpServletResponse)response;
User u=(User)req.getSession(false).getAttribute("user");
if( u.getRole().equals("2")==false){
rep.setCharacterEncoding("utf-8");
rep.setContentType("text/html;charset=utf-8");
rep.getWriter().print("您没有权限访问!");
rep.sendRedirect(req.getContextPath()+"/login.jsp");//转发到登录页面
}
测试的结果是可以转发到登录页面,可是rep.getWriter().print("您没有权限访问!")这段代码去失效了,页面没有弹出相应的对话框,应该怎么弄?
代码如下:
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain)throws IOException, ServletException {
HttpServletRequest req=(HttpServletRequest)request;
HttpServletResponse rep=(HttpServletResponse)response;
User u=(User)req.getSession(false).getAttribute("user");
if( u.getRole().equals("2")==false){
rep.setCharacterEncoding("utf-8");
rep.setContentType("text/html;charset=utf-8");
rep.getWriter().print("您没有权限访问!");
rep.sendRedirect(req.getContextPath()+"/login.jsp");//转发到登录页面
}
测试的结果是可以转发到登录页面,可是rep.getWriter().print("您没有权限访问!")这段代码去失效了,页面没有弹出相应的对话框,应该怎么弄?
解决方案 »
- 一个JSP错误一直困扰着我
- 散分!!!(小问题)用struts,写一个连接sql2000数据库怎么写
- 怎么让弹出的JOptionPane总是显示在最前端?
- jsp頁面打開時跳出另存頁面的對話框,請教高手原因,怎么解決?
- 请各位大哥给解决下,在JBuilder X中建一个Tomcat连接池。
- jsp写映射驱动器写不上,急!
- JSP初学,在线等一个简单问题,谢谢各位大侠
- jsp:forward 与request.sendRedirect的区别是什么?
- JSP中如何实现页面(JSP,HTML)复用?欢迎讨论指教
- struts2如何获取前台页面的list
- 做java web开发遇到的路径问题
- java web jsp中怎么引用dojo.js
是外部跳转,信息应该不会带过去。
用res.getRequestDisp...试试
你应该写个js。然后把你要输出的内容alert出来。
就可以弹出来了。
即使alert出来,不知道会不会还没点击确定就转发了呢
是这段吧!
是不是应该这么写
if((User)req.getSession(false).getAttribute("user")!=null){
/////
}
后面为何还要加个 ==false ?
说你的u怎么这样起名啊,不规范啊
private User user;
public void init(FilterConfig filterConfig) throws ServletException {
}
public void destroy() {
}
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain)throws IOException, ServletException {
HttpServletRequest req=(HttpServletRequest)request;
HttpServletResponse rep=(HttpServletResponse)response;
if(req.getSession(false).getAttribute("user")==null)
rep.sendRedirect(req.getContextPath()+"/rolerror.jsp");
else {
user=(User)req.getSession(false).getAttribute("user");
if("2".equals(user.getRole()))
rep.sendRedirect(req.getContextPath()+"/rolerror.jsp");
else chain.doFilter(request, response);
}
如果有人指出来,我觉得楼主应该高兴才对!我们就是要做专业的程序员!代码编写就要写得严谨点。楼主,说你会出现空指针,是因为那个null不存在equals方法,你在外面加了那段判空代码就对了。不过最最好的写法是把 2 写在前面,“2”.equals(...),因为你不这样写的话,程序可能会出现异常,你前面的还是null,是null的话,程序肯定报错。不知明白没