在jsp和mysql上工作时遇到的错误

时间:2012-01-27 15:46:05

标签: jsp jstl scriptlet

创建登录jsp页面时输入用户名和密码并单击提交时出现此错误...

org.apache.jasper.JasperException: /loginbean.jsp (line: 9, column: 57) Attribute value request.getParameter("userName") is quoted with " which must be escaped when used within the value
org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:42)
org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:408)
org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:89)
org.apache.jasper.compiler.Parser.parseAttributeValue(Parser.java:280)
org.apache.jasper.compiler.Parser.parseAttribute(Parser.java:229)
org.apache.jasper.compiler.Parser.parseAttributes(Parser.java:162)
org.apache.jasper.compiler.Parser.parseAttributes(Parser.java:153)
org.apache.jasper.compiler.Parser.parseSetProperty(Parser.java:913)
org.apache.jasper.compiler.Parser.parseStandardAction(Parser.java:1134)
org.apache.jasper.compiler.Parser.parseElements(Parser.java:1451)
org.apache.jasper.compiler.Parser.parseBody(Parser.java:1664)
org.apache.jasper.compiler.Parser.parseOptionalBody(Parser.java:1002)
org.apache.jasper.compiler.Parser.parseUseBean(Parser.java:958)
org.apache.jasper.compiler.Parser.parseStandardAction(Parser.java:1136)
org.apache.jasper.compiler.Parser.parseElements(Parser.java:1451)
org.apache.jasper.compiler.Parser.parse(Parser.java:138)
org.apache.jasper.compiler.ParserController.doParse(ParserController.java:242)
org.apache.jasper.compiler.ParserController.parse(ParserController.java:102)
org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:198)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:373)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:353)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:340)
org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:646)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:357)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)

更新1

使用的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>

1 个答案:

答案 0 :(得分:2)

您的scriptlet标记中缺少大括号:

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

应该是:

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

但是,我建议不要使用一般的scriptlet。您可以绕过使用这样的设置属性,并可以使用带有JSTL的隐式param对象来访问对象。这当然取决于JSP的其余部分,但它被认为是最佳实践。

例如:

User name is: <c:out value="${param.userName}" />