在使用jsp的内置对象进行页面跳转的时候,想传递参数,使用如下的语句:
%>
<jsp:forward page="../view/RuZhuPage.jsp?roomNum=<%=roomNum%>&mNum=<%=mNum%>"></jsp:forward>
<%
结果运行时一直提示有如下异常:
exception
org.apache.jasper.JasperException: An exception occurred processing JSP page /control/RuZhuControl.jsp at line 25 22: while (res.next()) { 23: if (res.getInt(4) == 0) { 24: %> 25: <jsp:forward page="../view/RuZhuPage.jsp?roomnum=<%=roomNum%>&mnum=<%=mNum%>"></jsp:forward> 26: <% 27: } else { 28: %> Stacktrace: org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:568) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:455) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:395) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:339) javax.servlet.http.HttpServlet.service(HttpServlet.java:731) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
root cause
org.apache.jasper.JasperException: An exception occurred processing JSP page /view/RuZhuPage.jsp at line 150 147: </style> 148: <% 149: //在这里将上一个页面的url参数接受,并且结合本页面的数据将nNum,roomNum,comNum/vipNum传递到servlet里面 150: String roomNum = request.getParameter("roomnum"); 151: String mNum = request.getParameter("mmum"); 152: %> 153: <body> Stacktrace: org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:568) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:470) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:395) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:339) javax.servlet.http.HttpServlet.service(HttpServlet.java:731) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) org.apache.jasper.runtime.PageContextImpl.doForward(PageContextImpl.java:750) org.apache.jasper.runtime.PageContextImpl.forward(PageContextImpl.java:720) org.apache.jsp.control.RuZhuControl_jsp._jspService(RuZhuControl_jsp.java:93) org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) javax.servlet.http.HttpServlet.service(HttpServlet.java:731) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:395) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:339) javax.servlet.http.HttpServlet.service(HttpServlet.java:731) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
root cause
java.lang.IllegalArgumentException: [=] is not a hexadecimal digit org.apache.catalina.util.RequestUtil.convertHexDigit(RequestUtil.java:315) org.apache.catalina.util.RequestUtil.parseParameters(RequestUtil.java:399) org.apache.catalina.util.RequestUtil.parseParameters(RequestUtil.java:152) org.apache.jsp.view.RuZhuPage_jsp._jspService(RuZhuPage_jsp.java:211) org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) javax.servlet.http.HttpServlet.service(HttpServlet.java:731) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:395) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:339) javax.servlet.http.HttpServlet.service(HttpServlet.java:731) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) org.apache.jasper.runtime.PageContextImpl.doForward(PageContextImpl.java:750) org.apache.jasper.runtime.PageContextImpl.forward(PageContextImpl.java:720) org.apache.jsp.control.RuZhuControl_jsp._jspService(RuZhuControl_jsp.java:93) org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) javax.servlet.http.HttpServlet.service(HttpServlet.java:731) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:395) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:339) javax.servlet.http.HttpServlet.service(HttpServlet.java:731) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
然后在网上百度各种有关url传参数的问题,发现无论怎样都解决不了,后来仔细检查,终于发现问题所在了,jsp的forward动作指令是不能直接通过这样传参数的,page里面应该是文件的路径名,而不是url,后来恍然大悟,jsp的forward传参数有专门的param动作指令。于是改为如下就好了:
%>
<jsp:forward page="../view/RuZhuPage.jsp">
<jsp:param value="<%=roomNum%>" name="roomNum" />
<jsp:param value="<%=mNum%>" name="mNum" />
</jsp:forward>
<%
问题就解决了!