課題
- JPSコードを変更した場合にJSPのコンパイルが実施される条件はなにか?
検証)
ブラウザの第一画面を立ち上げた状態で第二画面のJSPファイルに変更を行う。
1.クラスのパッケージを変更してコンパイル
2.JSPファイルのuserBeanアクションのclassを1.で変更したパッケージを指定
3.第二画面を呼び出し
→以下のようなエラーが発生
例外
org.apache.jasper.JasperException: Exception in JSP: /Login/LoginProcess.jsp:2
1: <%@ page contentType="text/html; charset=Windows-31J"%>
2: <jsp:useBean class="test.produst.golf.User" id="user" scope="session"/>
3: <%
4: String strUserName=request.getParameter("user_name");
5: String strPassword=request.getParameter("password");
Stacktrace:
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:504)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:393)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
原因
java.lang.ClassCastException: produst.golf.User cannot be cast to test.produst.golf.User
org.apache.jsp.Login.LoginProcess_jsp._jspService(org.apache.jsp.Login.LoginProcess_jsp:46)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:332)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
4.ブラウザを立ち上げなおすと正しく第二画面が表示される
- JSPコードのコンパイルのトリガーはなに?タイミングはいつ?
- そもそもJSPコードのコンパイルってどういうこと?何かが作られてる?
ちなみにJSPコード中に単に改行を入れてファイルを更新してみたけど、このときは問題なく第二画面が表示された。