请教Java Filtermvc 过滤器跳转中页面的跳转问题

今日有两个微信web项目合并了,但是还有些链接指向废弃的项目,另外不想在服务器上运行两份相同web项目(1、影响性能、2、维护升级容易出错),因此决定写一个简单链接跳转的项目,spring的filter过滤器可以实现,但想想spring干这个有点大材小用,想到java的servlet可以支持通配符,因此用servlet写了一个简单的跳转程序,总共花了不到一小时的时间。废话少说上代码:
* Servlet implementation class Default
4 @WebServlet("/*")
5 public class Default extends HttpServlet {
private static final long serialVersionUID = 1L;
* @see HttpServlet#HttpServlet()
public Default() {
// TODO Auto-generated constructor stub
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
String thisURI = request.getRequestURL().toString();
String queryString = request.getQueryString();
String host = "112.125.121.163";
//String host = "localhost";
String oldURI = "http://" + host + ":8080/travel-core";
if (thisURI.indexOf(oldURI) &= 0) {
String newURI = thisURI.replaceAll(oldURI, "http://" + host
+ ":8080/travel-weixin");
if (queryString != null && queryString.length() & 0)
newURI += "?" + queryS
response.sendRedirect(newURI);
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
this.doGet(request, response);
注意代码第四行是关键@WebServlet("/*"),这里使用了通配符,所有的请求都会送到doGet和doPost方法里,另外要注意&request.getRequestURL()方法不能获取到queryString因此一定要request.getQueryString()获取参数,拼到新地址的后面。
阅读(...) 评论()Filter过滤器,过滤后登陆界面无法正常跳转一直重定向到登录界面【java吧】_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:664,284贴子:
Filter过滤器,过滤后登陆界面无法正常跳转一直重定向到登录界面收藏
这是我Filter的代码public class FilterServlet extends HttpServlet implements Filter {private FilterCpublic void init(FilterConfig config) throws ServletException {// TODO Auto-generated method stub
this.config=
System.out.print(&过滤器已执行&); }
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
// TODO Auto-generated method stub
//获取Filter的配置参数
String loginpage= config.getInitParameter(&loginpage&);
HttpServletRequest req = (HttpServletRequest)
String requestPath = req.getServletPath();
// 存储上下文路径
request.setAttribute(&path&, req.getContextPath());
if(!requestPath.endsWith(loginpage)){
// 跳转到登录页面
request.getRequestDispatcher(loginpage)
.forward(request, response);
chain.doFilter(request, response); } }
/** * Constructor of the object. */ public FilterServlet() {
super(); } /** * Destruction of the servlet. &br& */ public void destroy() {
super.destroy(); // Just puts &destroy& string in log
// Put your code here
this.config = } public void init() throws ServletException {
// TODO Auto-generated method stub } }下面是我再web.xml文件中配置的Filterfilter&
&filter-name&pathfilter&/filter-name&
&filter-class&com.personnel.filter.FilterServlet&/filter-class&
&init-param&
&param-name&loginpage&/param-name&
&param-value&/login.jsp&/param-value&
&/init-param& &/filter& &filter-mapping&
&filter-name&pathfilter&/filter-name&
struts2匹配根路径下的全部请求,拦截所以用户请求 ,在日志中简要记录请求的信息--&
&url-pattern&/*&/url-pattern& &/filter-mapping&我只要把if的内容注释掉就能正常跳转,但是过滤功能无法实现,如上代码的过滤功能能够实现,无法点开除login.jsp以外的界面 ,但是按登录按钮无法进行正常的跳转,一直重定向为登录界面,求大神解答
2017java学习来上市公司博为峰学java,入学即签就业协议,不就业不收费,查看java课程!java好学吗?java课程来博为峰学,java工程师就业年薪十几万!
有木有在上海的帅锅
你的逻辑就是这样的
使用session保存登陆状态,每次拦截时判断是否放行
登陆后放一个user标记到session,每次拦截判断session中是否有该标记
别人跳转到登录页面或者正在发送登录请求,结果你说用户为空就给过滤了?
java来「上元」Java的市场占有量一直领先其他语言,并有着较大的优势,学习Java编程,发现你与高薪一步之遥.java欢迎广大学员前来咨询报名.
User loginUser=userService.checkLogin(user.getUsername(), user.getPassword());if(loginUser!=null){System.out.println(&loginUser!=null&);request.getSession().setAttribute(&login&, loginUser);return &main&;}else{request.setAttribute(&error&, &您输入的用户名或密码错误!&);return &index&;}
我现在把我登录action中的用户信息放在session里面了,我在filter中判断,如果session中的login为空,就跳转回到登录界面,可是我试了一下还是无法正常登录,是我的理解错误了吗if(session.getAttribute(&login&) != null){chain.doFilter(request, response);}else{request.getRequestDispatcher(loginpage).forward(request, response);}
谢谢大家,问题已经解决,我原来是过滤了全部的用户请求,现在过滤的是我主函数界面,然后邓丽请求界面就能直接放行了
如果不是页面,如果用户输入***servlet?method=viewlist,直接访问,楼主这种情况怎么解决啊,只过滤jsp页面貌似不行啊
自己想了下,感觉这种方法也不太好,就是当用户输入地址会直接进入空白页面,虽然不能进入系统,但是感觉体验不好,是我也没有想到比较好的解决方案,还请大神指教。if(requestUri.contains(&index.jsp&)){chain.doFilter(req, resp);}if(req.getSession()==null || req.getSession().getAttribute(&user&)==null){if(requestUri.contains(&/servlet/UserLoginServlet&)){chain.doFilter(req, resp);}System.out.println(&如果用户没有登陆,跳到登陆页面&+req.getSession().getAttribute(&user&));resp.sendRedirect(req.getContextPath()+&/index.jsp&);//resp.setHeader(&Refresh&, &3;URL=/RBAC/index.jsp&);
//等待5秒,自动跳转到我们制定的网址上。
}else{System.out.println(&如果用户已经登陆,则直接进入访问的页面&+req.getSession().getAttribute(&user&));
chain.doFilter(req, resp);
登录百度帐号推荐应用本帖子已过去太久远了,不再提供回复功能。}

我要回帖

更多关于 页面跳转路径问题 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信