在使用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>
<%
問題就解決了!