页面的跳转问题

zhaozheng821018 2010-12-04 02:12:55
我新建的web工程附加有struts和hibernate支持,同时配置好一个Fliter,命名为CheckFliter.java,代码如下:

package sys;

import java.io.IOException;
import java.util.Date;
import java.util.Iterator;
import java.util.List;

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 Data.sys.user.SysUser;
import Data.sys.user.SysUserDAO;

import common.GlobleVariables;
import common.PowerCheck;

public class CheckFliter implements Filter {

public void destroy() {
// TODO Auto-generated method stub

}

public void doFilter(ServletRequest request, ServletResponse response,
FilterChain next) throws IOException, ServletException {
// TODO Auto-generated method stub
// 获取请求路径
String url = ((HttpServletRequest) request).getRequestURI().toLowerCase();
SysUser sysuser = new SysUser();
SysUserDAO sysuserdao = new SysUserDAO();
HttpSession session = ((HttpServletRequest) request).getSession();
// 登录请求
if (url.indexOf(GlobleVariables.login) == 0 || url.substring(GlobleVariables.rootdirectory.length()).endsWith("/") || url.equals(GlobleVariables.loginpage)) {
String userid = ((HttpServletRequest) request).getParameter("userid");
String password = ((HttpServletRequest) request).getParameter("password");
if(userid == null){
System.out.println("V_V");
request.getRequestDispatcher(GlobleVariables.loginpage.substring(GlobleVariables.rootdirectory.length())).forward(request, response);
}
try {
List list = sysuserdao.findByProperty("userid",userid);
Iterator it = list.iterator();
if (it.hasNext()) {
String pw = ((SysUser)it.next()).getPassword();
if (pw.equals(password)) {
// 登录成功
session.setAttribute("USERID", userid);
System.out.println(userid + "登录成功! " + (new Date()));
((HttpServletResponse) response).sendRedirect(GlobleVariables.mainpage);
} else {
// 登录失败
((HttpServletResponse) response).sendRedirect(GlobleVariables.loginpage);
}
}
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
System.out.println("登录失败!");
((HttpServletResponse) response).sendRedirect(GlobleVariables.loginpage);
return;
} finally {
try {
sysuserdao.getSession().close();
} catch (Exception e) {
// TODO: handle exception
System.out.println("session无法关闭!");
}
}
return;
}
// 登出请求
if (url.indexOf(GlobleVariables.logout) >= 0) {
session.removeAttribute("USERID");
((HttpServletResponse) response).sendRedirect(GlobleVariables.loginpage);
return;
}
// 其他请求
if (true) {
if ((session.getAttribute("USERID") != null) ) {
// 已经登录成功
if (PowerCheck.check((HttpServletRequest) request)) {
// 具有访问权限
((HttpServletRequest) request).getRequestDispatcher(url.substring(GlobleVariables.rootdirectory.length())).forward(request, response);
} else {
// 不具有访问权限
((HttpServletResponse)response).sendRedirect(GlobleVariables.errorpage);
}
return;
}else{
// 未登录
((HttpServletResponse) response).sendRedirect(GlobleVariables.loginpage);
}
}
next.doFilter(request, response);
}

public void init(FilterConfig arg0) throws ServletException {
// TODO Auto-generated method stub

}

}


其中的globlevariables的代码如下:

package common;

public class GlobleVariables {
public final static String login = "/oa/u_login";
public final static String loginpage = "/oa/log_in.jsp";
public final static String logout = "/oa/u_logout";
public final static String logoutpage = "/pa/log_out.jsp";
public final static String mainpage = "/oa/index.jsp";
public final static String rootdirectory = "/oa";
public final static String errorpage = "/oa/common/error.jsp";
public final static String[] filetofilter = {".html",".htm"};
public final static String pagetext = "text/html; charset=GBK";
}

在这样的模式下,我能正常的登录到首页index.jsp,但是在新建servlet以后,要submit到新建的servlet就会提示错误,如下:

type Status report

message /oa/servlet/packcontrol

description The requested resource (/oa/servlet/packcontrol) is not available.

...全文
74 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
magong 2010-12-04
  • 打赏
  • 举报
回复
[Quote=引用楼主 zhaozheng821018 的回复:]
The requested resource (/oa/servlet/packcontrol) is not available.

[/Quote]
你前面列出来的那些代码中没有任何/oa/servlet/packcontrol这样的相关代码啊。

通常这个错是提交的目标不对,
如果该URL其实是对的,
那么就是过滤器中将对该Servlet的访问禁止了。
  • 打赏
  • 举报
回复
/oa/servlet/packcontrol时不可用的,好好检查一下你的servlet名字

81,091

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧