如何在jsp中以更简单的方式检查请求参数不为null?

时间:2016-04-09 02:44:52

标签: java jsp

我想检查请求参数不是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();
}
%>

2 个答案:

答案 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"));