我想检查请求参数不是null,但在我的代码中,我认为它可能会检查两次,所以每个人都可以给我一些改进。我通过地址栏传递参数。 这是我的代码:
<%
request.setCharacterEncoding("UTF-8");
String name,password;
try {
name = (request.getParameter("name") != null) ? request.getParameter("name") : "null";
password = (request.getParameter("password") != null)? request.getParameter("password") : "null";
%>
<h3>name:<%=name%></h3>
<h3>password:<%=password%></h3>
<%
}catch (NullPointerException ex){
ex.printStackTrace();
}
%>
答案 0 :(得分:4)
简单地为String赋值空值不会产生Java抛出的NullPointerException,如果这是你通过检查两次的意思。
在你的代码片段中,你已经实现了一个逻辑来检查名称和密码的空值,通过为它们分配字符串文字“null”,从而在加载Jsp时有一些视觉反馈。 / p>
name = (request.getParameter("name") != null) ? request.getParameter("name") : "null";
password = (request.getParameter("password") != null)? request.getParameter("password") : "null";
<h3>name:<%=name%></h3>
<h3>password:<%=password%></h3>
那就说我建议在Servlet中检查这些参数是否为null,因为你要求建议让我添加一些东西:
首先:你不想通过GET方法传递密码。
第二:广泛认为scriplets是可维护性和可重用性的不良做法 原因。 (MVC模式是要走的路,但这是另一个话题。)
了解它们是什么然后继续:不要尝试在Jsp中实现一些复杂的Java逻辑,因为您将看到有更强大,更清晰和更有用的技术来制作JST动态,如JSTL,自定义标记和EL。
例如,假设您的最终目标是为用户提供某种反馈
<h3>name: ${name != null && name != "" ? name : 'not assigned' }</h3>
如上所述,您可能希望检查Servlet中的空值并从那里控制应用程序的流程(例如,如果没有输入值,您可以重新显示表单)。 这样就可以在Jsp上简单地使用它了
<h3>name: ${name}</h3>
希望有所帮助。
答案 1 :(得分:1)
当您需要为"null"
个对象设置null
字符串时,可以使用String.valueOf()方法:
name = String.valueOf(request.getParameter("name"));