为了账号安全,请及时绑定邮箱和手机立即绑定

关于空指针错误的问题

public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		request.setCharacterEncoding("utf-8");
		
		Users u = new Users();
		String username,mypassword,gender,email,introduce;
		boolean isAccept;
		Date birthday;
		String[] favorites;
		
		
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
		try
		{
			username = request.getParameter("username");
			mypassword = request.getParameter("mypassword");
			gender = request.getParameter("gender");
			email = request.getParameter("email");
			introduce = request.getParameter("introduce");
			birthday = sdf.parse(request.getParameter("birthday"));

			isAccept=request.getParameter("isAccept")!=null?true:false;
			//用来获取多个复选按钮的值
			favorites = request.getParameterValues("favorite");
			u.setUsername(username);
			u.setMypassword(mypassword);
			u.setGender(gender);
			u.setEmail(email);
			u.setFavorites(favorites);
			u.setIntroduce(introduce);
			u.setFlag(isAccept);
			u.setBirthday(birthday);
			
			//把注册成功的用户对象保存在session中
			request.getSession().setAttribute("regUser", u);
			//跳转到注册成功页面
			request.getRequestDispatcher("../userinfo.jsp").forward(request,response);
		}
		catch(Exception ex)
		{
			ex.printStackTrace();
		}
		
		
	}

一下两行代码 为什么使用第二行代码时不勾选复选框就会报空指针异常 而用第一行代码就能够正常返回false呢?  我的理解: 当不勾选时request.getParameter("isAccept").equals("true")该表达式的值为假那么则返回false  

 isAccept=request.getParameter("isAccept")!=null?true:false;

isAccept=request.getParameter("isAccept").equals("true")?true:false;

正在回答

2 回答

一般这种情况这样写比较合理isAccept="true".equals(request.getParameter("isAccept"))?true:false; 这样既符合你的写法,也不会报空指针

0 回复 有任何疑惑可以回复我~
#1

一只土豆 提问者

哦哦 知道了 谢谢
2015-12-31 回复 有任何疑惑可以回复我~

isAccept这个复选框你不勾选的时候是不会传任何数据过来的。所以服务器用request.getParameter("isAccept")取得的是null。这是个经验,记得就行了

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
JAVA遇见HTML——Servlet篇
  • 参与学习       160616    人
  • 解答问题       1029    个

本门课程在JSP课程的基础上,深入介绍Servlet的基础知识

进入课程

关于空指针错误的问题

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信