我使用 beans/form 处理在登录屏幕上获取输入参数,然后使用这些参数尝试将用户登录到应用程序中。

但是我收到错误 -

org.apache.jasper.JasperException: /loginbean.jsp(6,59) Attribute value request.getParameter("userName") is quoted with " which must be escaped when used within the val

出现此错误的代码行是下面给出的代码块中的第二行 - (即 name='userName' 属性的代码行)

loginbean.jsp

<jsp:useBean id="db" scope="request" class="logbean.LoginBean" > 
  <jsp:setProperty name="db" property="userName" value="<%=request.getParameter("userName")%>"/> 
  <jsp:setProperty name="db" property="password" value="<%=request.getParameter("password")%>"/> 
 </jsp:useBean> 

LoginBean.java

package logbean; 
public class LoginBean { 
  String userName=""; 
  String password=""; 
  public String getUserName() { 
  return userName; 
  } 
  public void setUsername(String username) { 
  this.userName = userName; 
  } 
  public String getPassword() { 
  return password; 
  } 
  public void setPassword(String password) { 
 this.password = password; 
  } 
  } 

请您参考如下方法:

这里,

<jsp:setProperty name="db" property="userName" value="<%=request.getParameter("userName")%>"/> 
<jsp:setProperty name="db" property="password" value="<%=request.getParameter("password")%>"/> 

您正在尝试混合scriptlet和标签库。这是无效的。使用其中之一。当 userName将包含一个双引号,如 foo"bar那么JSP标签的值基本上会像value="foo"bar"一样结束。这在语法上是无效的。

因为 scriptletdead技术,我建议完全摆脱它。正确的方法是使用 EL 。在 EL 中,所有请求参数均以 Map<String, String> 形式提供。通过隐式变量${param} 。利用它。

<jsp:setProperty name="db" property="userName" value="${param.userName}"/> 
<jsp:setProperty name="db" property="password" value="${param.password}"/> 

或者,当所有参数名称与属性名称相同时,您也可以让 JSP 自动设置所有属性,如下所示:

<jsp:setProperty name="db" property="*"/> 


评论关闭
IT干货网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!