前提・実現したいこと
forwardを実行させたい
現在、eclipse,tomcatを使用して、投稿アプリ(webアプリ)を作っています。しかしながら、forward文を実行している際、catch文が実行されてしまします。
発生している問題・エラーメッセージ
### 該当のソースコード
servletのserv1.javaのソースコード(問題のコード)
1 2import java.io.IOException; 3import java.io.PrintWriter; 4import java.sql.Connection; 5import java.sql.DriverManager; 6import java.sql.PreparedStatement; 7import java.sql.ResultSet; 8import java.sql.SQLException; 9import java.util.ArrayList; 10 11import javax.servlet.RequestDispatcher; 12import javax.servlet.ServletException; 13import javax.servlet.annotation.WebServlet; 14import javax.servlet.http.HttpServlet; 15import javax.servlet.http.HttpServletRequest; 16import javax.servlet.http.HttpServletResponse; 17 18 19@WebServlet( 20 name = "serv1", 21 urlPatterns = {"/"} 22) 23public class serv1 extends HttpServlet { 24 25 @Override 26 public void doGet(HttpServletRequest request, HttpServletResponse response) 27 throws IOException { 28 29 javabeans names = new javabeans(); 30 String[] k = cone(); 31 names.setName(k); 32 request.setAttribute("names",names); 33 RequestDispatcher dispatcher = request.getRequestDispatcher("/WEB-INF/index2.jsp"); 34 try { 35 dispatcher.forward(request, response); 36 } catch (ServletException | IOException e) { 37 // TODO 自動生成された catch ブロック 38 e.printStackTrace(); 39 PrintWriter out; 40 response.setContentType("text/html; charset=Shift_JIS"); 41 out = response.getWriter(); 42 out.println("<html><body>"); 43 out.println("<h1>error</h1>"); 44 out.println("<p></p>"); 45 out.println("</body></html>"); 46 47 } 48 49 } 50中略
以下はforward先のスクリプト。index2.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <% javabeans n = (javabeans) request.getAttribute("names");%> <%String[] na = n.getName();%> <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml" lang="en"> <head> <meta http-equiv="content-type" content="application/xhtml+xml; charset=UTF-8" /> <title>Hello App Engine</title> </head> <body> <h1>掲示板</h1> <form action="/serv2" method="get"> 文<input type = "text" name = "name"> <input type="submit" value = "投稿"> </form> <table> <% for(int i = na.length-1; i > -1; i--) { %> <tr> ---------<br><br> <%=na[i]%><br><br> ----------<br> </tr> <%} %> </table> </body> </html>
試したこと
実行しても真っ白だったため、ためしにcatch文に処理を書いてみると、反映された。request.getRequestDispatcher("/WEB-INF/index2.jsp");の部分を変えてみたが、404エラーがでるので、おそらく合っていると思われる。
補足情報(FW/ツールのバージョンなど)
localhostのtomcatサーバーv8.0を使用しています。
これがファイル構成になっています。jspファイルとjavaファイル意外は触っていません。
何かしらの助言を頂けると幸いです。
あなたの回答
tips
プレビュー