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 为空啊。。。
...全文
192 18 打赏 收藏 举报
写回复
18 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
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();不用参数了
  • 打赏
  • 举报
回复
相关推荐
最新单片机仿真 独立式键盘调时数码时钟实验 最新单片机仿真 独立式键盘调时数码时钟实验最新单片机仿真 独立式键盘调时数码时钟实验最新单片机仿真 独立式键盘调时数码时钟实验最新单片机仿真 独立式键盘调时数码时钟实验最新单片机仿真 独立式键盘调时数码时钟实验最新单片机仿真 独立式键盘调时数码时钟实验最新单片机仿真 独立式键盘调时数码时钟实验最新单片机仿真 独立式键盘调时数码时钟实验最新单片机仿真 独立式键盘调时数码时钟实验最新单片机仿真 独立式键盘调时数码时钟实验最新单片机仿真 独立式键盘调时数码时钟实验最新单片机仿真 独立式键盘调时数码时钟实验最新单片机仿真 独立式键盘调时数码时钟实验最新单片机仿真 独立式键盘调时数码时钟实验最新单片机仿真 独立式键盘调时数码时钟实验最新单片机仿真 独立式键盘调时数码时钟实验最新单片机仿真 独立式键盘调时数码时钟实验最新单片机仿真 独立式键盘调时数码时钟实验最新单片机仿真 独立式键盘调时数码时钟实验最新单片机仿真 独立式键盘调时数码时钟实验最新单片机仿真 独立式键盘调时数码时钟实验最新单片机仿真 独立式键盘调时数码时钟实验最新单片机仿真 独立式键盘调时
发帖
Web 开发
加入

8.0w+

社区成员

Java Web 开发
申请成为版主
帖子事件
创建了帖子
2008-05-16 12:47
社区公告
暂无公告