Discuss / Java / 页面渲染的结果不正确,不知道是什么原因

页面渲染的结果不正确,不知道是什么原因

Topic source

访问 /noon 的结果是

Hello null

@WebServlet(urlPatterns = "/hi")
public class Hi extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        String name = req.getParameter("name");
        resp.sendRedirect("/hello?name="+name);        
    }
    
}
@WebServlet(urlPatterns = "/hello")
public class Hello extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        resp.setContentType("text/html");
        resp.setCharacterEncoding("utf-8");
        
        String name = req.getParameter("name");
        if (name == null) name = "world";  //这里我对null的情况进行了处理,好像没什么效果

        PrintWriter writer = resp.getWriter();
        writer.write("Hello "+name);
        writer.flush();
    }
    
}

但是,如果是 forward 跳转就不会有这种问题

@WebServlet(urlPatterns = "/noon")
public class Forward extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        req.getRequestDispatcher("/hello").forward(req, resp);
    }
    
}

访问的结果是

Hello world

首行写错,现在进行纠正

访问 /hi 的结果是

Hello null

访问 /noon 的结果是

Hello world

建议想一下  下面这行代码

if (name == null) name = "world"; 

也可以写个普通的方法去测试下就知道了

百里枫花A

#4 Created at ... [Delete] [Delete and Lock User]

应该是重定向的时候,你把name的值变成了“null”,所以"null"并不等于null


  • 1

Reply