问题解决:<jsp:include>出错

出错提示如下:
org.apache.jasper.JasperException: /jsp_include.jsp (line: 29, column: 35) Attribute value request.getParameter("name")  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:443)
	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.parseParam(Parser.java:827)
	org.apache.jasper.compiler.Parser.parseBody(Parser.java:1672)
	org.apache.jasper.compiler.Parser.parseOptionalBody(Parser.java:1002)
	org.apache.jasper.compiler.Parser.parseInclude(Parser.java:854)
	org.apache.jasper.compiler.Parser.parseStandardAction(Parser.java:1116)
	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:728)


上网查找后发现 将代码中的<jsp:param name="a1" value="<%=request.getParameter("name") %>" />
                         <jsp:param name="a2" value="<%=request.getParameter("password") %>" />
              改为
                <jsp:param name="a1" value="<%=request.getParameter(\"name\") %>" />
                <jsp:param name="a2" value="<%=request.getParameter(\"password\") %>" />
	或者改为
		<jsp:param name="a1" value='<%=request.getParameter("name") %>' />
    		<jsp:param name="a2" value='<%=request.getParameter("password") %>' />
就不会出错。
具体原因不清楚。
或许是因为 <jsp:param name="a1" value="<%=request.getParameter("name") %>" />中有四个",编译时无法识别。
首先,我们需要创建一个Web项目,并在项目中创建以下JSP页面: 1. main.jsp:包含其他几个页面,同时处理错误页面。 2. register.jsp:用于用户注册,包含访问量统计的功能。 3. register_handle.jsp:处理用户注册信息,验证学号、密码和邮件地址。 以下是代码示例: main.jsp: ``` <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>主页面</title> </head> <body> <jsp:include page="register.jsp" /> <%-- 这里可以包含其他页面 --%> <%-- 处理错误页面 --%> <% String errorMessage = (String)request.getAttribute("javax.servlet.error.message"); if(errorMessage != null) { out.println("<h3>出错啦,错误信息:"+errorMessage+"</h3>"); } %> </body> </html> ``` register.jsp: ``` <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>注册页面</title> </head> <body> <jsp:include page="header.jsp" /> <h3>用户注册</h3> <form action="register_handle.jsp" method="post"> <label>学号:</label><input type="text" name="studentId" /><br /> <label>用户名:</label><input type="text" name="username" /><br /> <label>密码:</label><input type="password" name="password" /><br /> <label>确认密码:</label><input type="password" name="confirmPassword" /><br /> <label>邮件:</label><input type="text" name="email" /><br /> <input type="submit" value="提交" /> </form> <%-- 访问量统计 --%> <% int count = 0; if(application.getAttribute("count") != null) { count = (int)application.getAttribute("count"); } count++; application.setAttribute("count", count); out.println("本站访问量:"+count); %> <jsp:include page="footer.jsp" /> </body> </html> ``` register_handle.jsp: ``` <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>注册处理页面</title> </head> <body> <jsp:include page="header.jsp" /> <% String studentId = request.getParameter("studentId"); String username = request.getParameter("username"); String password = request.getParameter("password"); String confirmPassword = request.getParameter("confirmPassword"); String email = request.getParameter("email"); boolean isError = false; String errorMessage = ""; // 验证学号是否为10位 if(studentId.length() != 10) { isError = true; errorMessage += "学号必须为10位;"; } // 验证密码是否与确认密码相同 if(!password.equals(confirmPassword)) { isError = true; errorMessage += "密码与确认密码不一致;"; } // 验证邮件地址是否正确 if(!email.matches("\\w+@\\w+\\.\\w+")) { isError = true; errorMessage += "邮件地址格式不正确;"; } if(isError) { // 跳回注册页面 request.setAttribute("errorMessage", errorMessage); request.getRequestDispatcher("register.jsp").forward(request, response); } else { // 处理成功,跳转到注册成功页面 session.setAttribute("username", username); session.setAttribute("password", password); response.sendRedirect("register_success.jsp"); } %> <jsp:include page="footer.jsp" /> </body> </html> ``` 我们还需要创建以下公共页面: header.jsp: ``` <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>头部</title> </head> <body> <header> <h1>Web项目</h1> <nav> <ul> <li><a href="#">首页</a></li> <li><a href="#">关于我们</a></li> <li><a href="#">联系我们</a></li> </ul> </nav> </header> </body> </html> ``` footer.jsp: ``` <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>底部</title> </head> <body> <footer> <p>版权所有 © 2019 Web项目</p> </footer> </body> </html> ``` register_success.jsp: ``` <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>注册成功页面</title> </head> <body> <jsp:include page="header.jsp" /> <h3>恭喜您,注册成功!</h3> <p>用户名:${sessionScope.username}</p> <p>密码:${sessionScope.password}</p> <jsp:include page="footer.jsp" /> </body> </html> ``` 注意: 1. 在main.jsp中使用<%-- comments --%>隐藏注释,以避免在包含其他页面时出现问题。 2. 在register.jsp中使用<jsp:include>包含header.jsp和footer.jsp,以实现页面的复用。 3. 在register.jsp中使用<jsp:include>包含访问量统计的功能。 4. 在register_handle.jsp中使用request.getRequestDispatcher()和request.getRequestDispatcher().forward()实现跳回注册页面。 5. 在register_handle.jsp中使用response.sendRedirect()实现跳转到注册成功页面。 6. 在register_success.jsp中使用EL表达式${sessionScope.username}和${sessionScope.password}获取session中的值。 7. 在register_handle.jsp中使用正则表达式验证邮件地址格式。 8. 在main.jsp中使用request.getAttribute("javax.servlet.error.message")获取错误信息,并输出到页面中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值