我每次刷新server.jsp网页都会被拦截,这个怎么处理?

我每次刷新server.jsp网页都会被拦截,这个怎么处理?

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

3回答
提问者 qq_空_239 2019-04-01 23:24:35

    我修改了一下代码,所以没有那种情况出现了

http://img1.sycdn.imooc.com//climg/5ca2285e0001780d05370092.jpg

http://img1.sycdn.imooc.com//climg/5ca2288a0001d57502180272.jpg我项目中明明有啊,还看了压缩包也有的,老师那里没有吗?

http://img1.sycdn.imooc.com//climg/5ca229090001652c06000146.jpg

没看懂老师这里说的取一次是什么?是存入session的属性吗?

但是浏览器关闭,代表这个session销毁,只剩下cookie了啊。。。

  • 压缩包不是指fastjson,指的是taglibs-standard。因为同学不仅使用了FastJson还使用了JSTL的c标签。“取一次”是指的session没错,我们的这次作业不涉及用户的持久化,关闭浏览器之后,不用再保存用户,再次打开还是要重新登录的。
    2019-04-02 09:39:52
  • 提问者 qq_空_239 回复 芝芝兰兰 #2
    老师说的,都已经实现了,请老师查看,看还能优化吗?
    2019-04-02 14:46:25
  • 芝芝兰兰 回复 提问者 qq_空_239 #3
    同学的代码已经很好的完成了功能,已经批改。棒棒的!祝学习愉快~
    2019-04-02 15:20:18
提问者 qq_空_239 2019-03-29 15:20:48

package com.imooc.filter;


import java.io.IOException;

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 com.imooc.entity.User;

import com.imooc.utility.LibServiceImpl;


public class LoginFilter implements Filter {


@Override

public void destroy() {

// TODO Auto-generated method stub

}


@Override

public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)

throws IOException, ServletException {

HttpServletRequest hrequest=(HttpServletRequest)request;

HttpServletResponse hresponse=(HttpServletResponse)response;

//获取参数

String username=hrequest.getParameter("username");

String password=hrequest.getParameter("password");

// System.out.println("username:"+username+"\tpassword:"+password);

LibServiceImpl serviceImpl=new LibServiceImpl();

int flag=serviceImpl.login(username, password);

System.out.println("flag:"+flag);

if(flag==1) {

//登录成功,获取用户信息并存入session

HttpSession session=hrequest.getSession();

List<User> list =serviceImpl.getDaoImpl().getUserdb();

for (User u : list) {

if(u.getUsername().equals(username)){

session.setAttribute("User", u);

}

}

chain.doFilter(request, response);

return;

}else if (username.equals("")&&password.equals("")) {

hresponse.sendRedirect(hrequest.getContextPath()+"/index.jsp?flag=4");

return;

}

else {

hresponse.sendRedirect(hrequest.getContextPath()+"/index.jsp?flag=3");

return;

}

}


@Override

public void init(FilterConfig filterConfig) throws ServletException {

// TODO Auto-generated method stub

}


}


  • 看了同学的代码。虽然​不知道同学的LibServiceImpl的login方法是怎么实现的。但是大致猜出了同学纠结的点。这里的过滤器的目的是检验用户是否已经登录,登录以后需要将用户存入session中,是为了在下次拦截的时候可以从session中取出。靠从session中取出的是不是null来判断是否登录。如果还有疑问,可以先提交一下作业,我们会根据完整的项目给你详尽的批复。并且每个作业都有两次提交机会。同学不用担心,可以在拿到批复以后再次修改,然后再提交一遍的。
    2019-03-29 19:49:32
  • 提问者 qq_空_239 回复 芝芝兰兰 #2
    项目已经上传了,麻烦老师看下
    2019-03-30 16:06:38
  • 好帮手慕珊 回复 提问者 qq_空_239 #3
    收到,我们会转达给作业批复的老师,对作业尽快进行批复。祝学习愉快!
    2019-03-31 14:14:44
芝芝兰兰 2019-03-29 10:56:17

同学你好。


如果同学想对server.jsp进行过滤器编写的一系列处理操作,那么每次刷新都会被拦截到过滤器内,进行完对应操作后才会继续。


根据作业要求,server.jsp 要求必须登录后才可以访问这个server.jsp,同学说的每次刷新server.jsp 都会被拦截是说每次刷新都需要重新登录吗? 那样同学可以看一下user是不是存到request中了?这次作业应该将它存到session中。


如果同学只是想让过滤器“放过”这个某个页面。可以将需要拦截的和不需要拦截的页面存在不同文件夹下,这个文件夹需要在WebContent下,如:

http://img1.sycdn.imooc.com//climg/5c9d84eb000131a104060289.jpg

这样的目录结构情况下,只需要设置web.xml中<url-pattern>为 page/* 就可以避免index.jsp被那个过滤器拦截。


祝学习愉快~

  • 提问者 qq_空_239 #1
    我存进session中的,每次刷新都会被拦截,且弹出账号密码错误,但是我加一个判断用户密码为空的判断就没有了,老师这是为什么?
    2019-03-29 12:42:14
  • 芝芝兰兰 回复 提问者 qq_空_239 #2
    请同学贴一下过滤器的代码。注意不要贴在回复里,会失去代码的格式。可以用回答这个问题的方式,将代码贴入。
    2019-03-29 14:38:49
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
从网页搭建入门Java Web2018版
  • 参与学习           人
  • 提交作业       1088    份
  • 解答问题       10204    个

如果你有Java语言基础,又想以后从事Java Web开发,那么本路径是你的不二选择!本路径从网页搭建开始入手,通过大量案例来学习Java Web基础。定能助你完成Java Web小白的蜕变!

了解课程
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师