访问 /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 的结果是
建议想一下 下面这行代码
if (name == null) name = "world";
也可以写个普通的方法去测试下就知道了
应该是重定向的时候,你把name的值变成了“null”,所以"null"并不等于null
Sign in to make a reply
用户5273497715
访问 /noon 的结果是
Hello null
但是,如果是 forward 跳转就不会有这种问题
访问的结果是
Hello world