前提・実現したいこと
サーブレットを用いて、one.htmlに移動、
その次に、one.htmlで入力し、次ページを押すと
one.htmlからtwo.htnlに切り替わり
また次ページを押すとthree.htmlに切り替わり
最後はone.htmlに戻るプログラムを作りたいです
mvcなのでjavaコードは2つあって
HTMLは3つか4つ使いたい感じです
発生している問題・エラーメッセージ
one.htmlの次ページを押すと、404エラーになります。
エラーメッセージ ```404エラー ### 該当のソースコード ```サーブレット ソースコード package emp; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; //import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * Servlet implementation class XServlet */ //@WebServlet("/XServlet") public class XServlet extends HttpServlet { private static final long serialVersionUID = 1L; /** * @see HttpServlet#HttpServlet() */ public XServlet() { super(); // TODO Auto-generated constructor stub } /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void doGet(HttpServletRequest req, HttpServletResponse res) throws IOException, ServletException { String contents = ContentsFactory.getContents(); contents = contents.replace("%oldName",""); out( res, contents ); } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest req, HttpServletResponse res) throws IOException, ServletException { String contents = ContentsFactory.getContents(); String name = req.getParameter("name"); contents = contents.replace("%oldName",name); out( res, contents ); } private void out(HttpServletResponse res, String contents) throws IOException,ServletException { res.setContentType("text/html; charset=UTF-8"); PrintWriter out = res.getWriter(); out.println(contents); } }
ここに言語を
ここに言語を入力
javabeans?
package emp;
import java.util.Scanner;
public class ContentsFact{
private static String baseContents = null; public static String getContents() { if(baseContents == null) { Scanner scanner = new Scanner(ContentsFact.class.getResourceAsStream("one.html"),"UTF-8");
StringBuilder result = new StringBuilder("");
while(scanner.hasNextLine()) { String line = scanner.nextLine();
result.append(line).append("\n");
}
baseContents = result.toString();
scanner.close();
}
return new String(baseContents);
} public static void main(String[]args) { String text = ContentsFact.getContents(); System.out.println(text); }
}
one.html
1コードpackage emp; 2 3<!DOCTYPE html> 4<html> 5<head> 6<meta charset="UTF-8"> 7<title>Servlet</title> 8</head> 9<body> 10servlet 11<p/> 12 13<form action="two.html" method="post"> 14氏名: 15<input type="text" name="name" required value="%oldName%"> 16<br/> 17<input type="submit" value="次ページ"> 18</form> 19 20</body> 21</html> 22
コード```web.xml
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1"> <display-name>PracticeMVC</display-name> <servlet> <servlet-name>XServlet</servlet-name> <servlet-class>emp.XServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>XServlet</servlet-name> <url-pattern>/xServlet</url-pattern> </servlet-mapping> </web-app>試したこと
<form action="two.html">にしてみたりしましたがいまいちわかりません また、two.htmlは、one.htmlと同じくformに入力する感じにしたいです。 two.htmlからブラウザーで戻るとone.htmlに戻るといった内容です補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。