session.getAttribute 的个小问题

boytomato 2008-05-16 12:47:57
public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2) throws IOException, ServletException {

HttpServletRequest request = (HttpServletRequest)arg0;
HttpServletResponse response = (HttpServletResponse)arg1;
HttpSession session = request.getSession(false);

arg2.doFilter(arg0, arg1);

if(session.getAttribute("logged-in")!=null)
{}
}




2008-5-16 12:38:58 org.apache.catalina.core.StandardWrapperValve invoke
严重: Servlet.service() for servlet jsp threw exception
java.lang.NullPointerException

已经确认是 if(session.getAttribute("logged-in")!=null)的问题,可如何判断这个 session 为空啊。。。
...全文
273 18 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
boytomato 2008-05-16
  • 打赏
  • 举报
回复
变成这样好了
	HttpSession session = request.getSession();


这样就好了。。。
s_liangchao1s 2008-05-16
  • 打赏
  • 举报
回复


HttpSession session = request.getSession(true);
s_liangchao1s 2008-05-16
  • 打赏
  • 举报
回复


HttpSession session = request.getSession(false);
南南北北 2008-05-16
  • 打赏
  • 举报
回复
if(session==null){

}

不可以吗?
awusoft 2008-05-16
  • 打赏
  • 举报
回复
还有顺序问题,是不是应该先判断再进入呢?

if(session.getAttribute("logged-in")!=null)
{
arg2.doFilter(arg0, arg1);
}
awusoft 2008-05-16
  • 打赏
  • 举报
回复
HttpSession session = request.getSession(false);
换成true看看.有可能是session为null了
Kit_LO 2008-05-16
  • 打赏
  • 举报
回复
public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2) throws IOException, ServletException {

HttpServletRequest request = (HttpServletRequest)arg0;
HttpServletResponse response = (HttpServletResponse)arg1;
HttpSession session = request.getSession();

arg2.doFilter(arg0, arg1);
response.sendRedirect("/manage/login.jsp");
realcbb 2008-05-16
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 AWUSOFT 的回复:]
你应该去判断,如果请求的是登录页面,就不验证.否则就要验证.字符的比较应该用equals()而不是用==
[/Quote]

如果attribute已经不存在,那取出来就不是字符串,而是null了。



如果楼主想要实现如果session过期,发送请求时自动跳到登录页面,可以这样:
在登录页面上用jsp给session写入一个attribute,再写个过滤器每次请求都要取这个attribute,看是不是null来判断。
zhuyl_wind 2008-05-16
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 realcbb 的回复:]
楼主想干什么?是不是希望如果session过期,发送请求时自动跳到登录页面?

Java code
public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2) throws IOException, ServletException {

HttpServletRequest request = (HttpServletRequest)arg0;
HttpServletResponse response = (HttpServletResponse)arg1;
HttpSession session = request.getSession()…
[/Quote]
awusoft 2008-05-16
  • 打赏
  • 举报
回复
你应该去判断,如果请求的是登录页面,就不验证.否则就要验证.字符的比较应该用equals()而不是用==
realcbb 2008-05-16
  • 打赏
  • 举报
回复
doFilter应该在最后一句
realcbb 2008-05-16
  • 打赏
  • 举报
回复
楼主想干什么?是不是希望如果session过期,发送请求时自动跳到登录页面?

public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2) throws IOException, ServletException {

HttpServletRequest request = (HttpServletRequest)arg0;
HttpServletResponse response = (HttpServletResponse)arg1;
HttpSession session = request.getSession();
if(session.getAttribute("logged-in")==null)
response.sendRedirect("manage/login.jsp");
arg2.doFilter(arg0, arg1);


不过这样在登录时又会跳到登录页面的,如果想要实现这个功能,不应该这样做。
boytomato 2008-05-16
  • 打赏
  • 举报
回复
public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2) throws IOException, ServletException {

HttpServletRequest request = (HttpServletRequest)arg0;
HttpServletResponse response = (HttpServletResponse)arg1;
////HttpSession session = request.getSession();
arg2.doFilter(arg0, arg1);

if(request.getRequestURI()!="/HTJavaPortal/manage/login.jsp")
{
response.sendRedirect("/HTJavaPortal/manage/login.jsp");
}

出错继续啊。。。
和原来一样。。
awusoft 2008-05-16
  • 打赏
  • 举报
回复
response.sendRedirect("/HTJavaPortal/manage/login.jsp");
huxinyu929 2008-05-16
  • 打赏
  • 举报
回复
先判断是否是空
再负值
boytomato 2008-05-16
  • 打赏
  • 举报
回复
public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2) throws IOException, ServletException {

HttpServletRequest request = (HttpServletRequest)arg0;
HttpServletResponse response = (HttpServletResponse)arg1;
HttpSession session = request.getSession();

arg2.doFilter(arg0, arg1);
response.sendRedirect("http://localhost:8080/HTJavaPortal/manage/login.jsp");



报的错
Servlet.service() for servlet default threw exception
java.lang.IllegalStateException
at org.apache.catalina.connector.ResponseFacade.sendRedirect(ResponseFacade.java:433)
kui1015 2008-05-16
  • 打赏
  • 举报
回复
String login=(String)session.getAttribute("login");
if(login!=null && login.equals("login"))

xiaoqiangcn 2008-05-16
  • 打赏
  • 举报
回复
HttpSession session = request.getSession();不用参数了

81,122

社区成员

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

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