在一个JSP页面需要传递过来的参数 username
刚才没有传参数,直接敲地址进去.发现地址栏显示的是 username=null
我赶紧去看看我页面上对用户名的判断request.setCharacterEncoding("GBK");
String username = request.getParameter("username");
if(username == null || username.trim().equals("")){
    response.sendRedirect("error.jsp?errorid=5");
    return;
}
//这是我之前写的判断
//我又加了一句输出username的值
System.out.println(username);
System.out.println(username.length());
// 打印结果 null 4
//不解,就又做实验,接收一个不存在的参数
String test = request.getParameter("test");
System.out.println(test);
//System.out.println(test.length());
//这时候打印结果还是 null ,但是不能调用 length()方法了.报空指针异常
//我又做了如下判断
if(username==null||username.equals(null)){
System.out.println("111处成功");
}
if(username.equals("null")){
System.out.println("222处成功");
}打印结果是 222处成功.这里的null为什么被转义了?
谁帮忙解释下

解决方案 »

  1.   

    应该是 "null"吧传回来的username如果是null就进你那个错误页面了传回来的是"null"字符串吧 = =  至于为什么俺也不知道 = =
      

  2.   

    地址栏出现username=null肯定是jsp页面里的username给赋值了null字符串。
    如果jsp页面不赋值的话地址栏会显示成username=所以不满足以下条件
    if(username == null || username.trim().equals("")){
        response.sendRedirect("error.jsp?errorid=5");
        return;
    }所以username的值为“null”,username.length()的值为4。
      

  3.   

    出现这种情况一般都是null+""="null",string类型的加法运算与其他类型的运算不同,详情请看jdk帮助文档
      

  4.   

    一般是这样的<a href="xx.jsp?a=<%=request.getParameter("tt")%>">afdsfa</a>如果当前的请求中没有tt这个参数,那么去到xx.jsp中的时候,这个参数a的值就是"null"
      

  5.   

    地址栏 传参 一般以字符串形式
    username=null 这个username 的值应该 是“null”
      

  6.   


    应该是因为从Action并没有给页面传递username但是由于jsp页面中不恰当的书写(比如6楼所举例子),在jsp中username被赋值了"null",之后再出口返内销传回Action
      

  7.   

    String username = request.getParameter("username");
    1、System.out.println("------ " + username) ;2、看看页面中的input 的name是不是username ;
      

  8.   

    给username传过来的值肯定为“null”,估计是jsp写错了。
      

  9.   

    你的username值是null 但是传输中被解释成“null” 所以不会出现异常啦