【问题标题】:how to use condition statements in jsp?jsp中如何使用条件语句?
【发布时间】:2025-12-28 17:40:17
【问题描述】:

我有一个用于登录过程的servlet类,如果用户名或密码不正确我想为请求设置两个属性,一个属性是布尔authentication_error,第二个是字符串authentication_error_message

如果authentication_error 为真,我想做一个条件语句来打印authentication_error_message

req.setAttribute("authentication_error", false);

if(!query.list().isEmpty()){
    List<?> list = query.list();
    Admin student = (Admin)list.get(0);
    req.setAttribute("username", student.getUsername());
}
else{

    req.setAttribute("authentication_error_message", "username or password is incorrect!");
    req.setAttribute("authentication_error", true);
}

req.getRequestDispatcher("/views/login.jsp").forward(req, res);

如何在jsp中写这个语句?

注意:最好不要使用 jstl。

【问题讨论】:

  • 为什么不使用 JSTL ?它比混合 Java、HTML 和 JS 好得多
  • 你可以转发到两个不同的jsps,因为有不同的属性,否则jstl &lt;c:if test="..."&gt;仍然是最紧凑的方式。
  • @Dici 因为我已经知道如何使用 jstl 了,所以我只是要求另一种方法,谢谢!
  • @Mohammad 但没有更好的替代方案,仅供您了解

标签: java jsp servlets


【解决方案1】:

不推荐使用 Scriptlet,JSTL 是解决这些场景的方法。 话虽如此,另一种方式可能是 scriptlet。

Scriptlet 语法示例:

<%
 String userName="";

if(statement){
 userName=request.getParameter("userName");
  }
%>

在此处查看源代码Java code inside JSP page

如何避免使用脚本How to avoid using scriptlets in my JSP page?

【讨论】:

    【解决方案2】:

    如果您不喜欢使用 JSTL,可以使用 scriplet。

    下面的代码 sn-p 演示了我们如何在 JSP 中使用条件语句。

    <% if("true".equals      (request.getParameter ("authentication_error"))) {
    %>
      authentication_error_message
    <% }
    else {
    %>      
       Other Message
    <%  } %>
    

    【讨论】: