初めて半月です。
的確に説明できず申し訳ありませんが
宜しくお願いします。
前提・実現したいこと
A.jspからPOSTを行い、サーブレットでBeanを書き換え、B.jspにBeanの情報を更新したい。
発生している問題・エラーメッセージ
現在は、AからPOSTしてAにフォワード、Bのリロードを行うことでBは更新されてはいますが2回目の更新から再送信ダイアログが常に出てしまうのとAのフォームのユーザー操作が初期化されてしまいます
試したこと
ajaxでAからBの一部を更新する事はできましたが、BeanはActionを使用して更新しているためうまく組み合わせることができませんでした。
考え方自体が間違っているでしょうか。
ご教示いただけますと幸いです。
loin
1<%@page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> 2<!DOCTYPE html> 3<html> 4<head> 5<meta charset="UTF-8"> 6<title>ログインフォーム</title> 7<style> 8 from backgroud-color: red; 9</style> 10</head> 11<body> 12 13<div class="log-form" align="center"> 14 <h5>Login to your account</h5> 15 <form action = "http://localhost:8080/fileConnector/LoginAction" method="post"> 16 <p>user_id : <input type="text" name = "user_id" title="userid" placeholder="userid" /></p> 17 <p>user_comment : <input type="text" name = "user_comment" size="30" maxlength="20" placeholder="comment" /></p> 18 <p><input type="submit" value="Login"></p> 19 </form> 20</div><!--end log form --> 21</body> 22</html>
JAVA
1 2【LoginAction.java】 3 4package application; 5 6import java.io.IOException; 7 8import javax.servlet.ServletException; 9import javax.servlet.annotation.WebServlet; 10import javax.servlet.http.HttpServlet; 11import javax.servlet.http.HttpServletRequest; 12import javax.servlet.http.HttpServletResponse; 13import javax.servlet.http.HttpSession; 14 15import bean.User; 16 17/** 18 * Servlet implementation class TEST 19 */ 20@WebServlet("/LoginAction") 21public class LoginAction extends HttpServlet { 22 private static final long serialVersionUID = 1L; 23 24 /** 25 * @see HttpServlet#HttpServlet() 26 */ 27 public LoginAction() { 28 super(); 29 // TODO Auto-generated constructor stub 30 } 31 32 /** 33 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) 34 */ 35 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 36 // TODO Auto-generated method stub 37 response.getWriter().append("Served at: ").append(request.getContextPath()); 38 } 39 40 /** 41 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) 42 */ 43 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 44 45 // TODO Auto-generated method stub 46 request.setCharacterEncoding("UTF-8"); 47 48 HttpSession session = request.getSession(); 49 50 int user_id = Integer.parseInt(request.getParameter("user_id")); 51 String user_password = request.getParameter("user_password"); 52 String user_comment = request.getParameter("user_comment"); 53 54 User user = new User(); 55 56 user.setUserId(user_id); 57 user.setPassword(user_password); 58 user.setComment(user_comment); 59 60 session.setAttribute("user", user); 61 request.getRequestDispatcher("home.jsp").forward(request, response); 62 63 } 64 65}
JSP
1 2【home.jsp】 3 4<%@ page language="java" contentType="text/html; charset=UTF-8" 5 pageEncoding="UTF-8"%> 6<!DOCTYPE html> 7<html> 8<head> 9<meta charset="UTF-8"> 10<title>Insert title here</title> 11</head> 12 13<frameset cols="500,*"> 14 15<frame src="A.jsp" name="frame1" title="左フレーム"> 16<frame src="B.jsp" name="frame2" title="右フレーム"> 17 18<noframes> 19<body> 20<p>フレームの代替内容</p> 21</body> 22</noframes> 23 24</frameset> 25 26</body> 27</html>
JSP
1 2【A.jsp】 3 4<%@ page language="java" contentType="text/html; charset=UTF-8" 5 pageEncoding="UTF-8"%> 6<!DOCTYPE html> 7<html> 8<head> 9<meta charset="UTF-8"> 10<title>Insert title here</title> 11</head> 12<body> 13 <h3>A.jsp</h3> 14 <br><br> 15 16 <form action="http://localhost:8080/fileConnector/SampleServlet" method="post"> 17 <p>コメントの書き換え<br> 18 <input type="text" name = "user_comment" size="30" maxlength="20" placeholder=${user.comment}></p> 19 <p><input type="submit" value="update"></p> 20 </form> 21 22</body> 23</html>
JSP
1 2【B.jsp】 3 4<%@ page language="java" contentType="text/html; charset=UTF-8" 5 pageEncoding="UTF-8"%> 6<%@page import="bean.User"%> 7 8<!DOCTYPE html> 9<html> 10<head> 11<meta charset="UTF-8"> 12<title>Insert title here</title> 13</head> 14<body> 15 <h3>B.jsp</h3> 16 <br><br> 17 18 <% User user = (User) session.getAttribute("user");%> 19 <p>ユーザーID : <%=user.getUserId() %></p> 20 <p>コメント : <%=user.getComment() %></p> 21 22</body> 23</html>
Servlet
1 2【SampleServlet.java】 3 4package application; 5 6 7import java.io.IOException; 8 9import javax.servlet.RequestDispatcher; 10import javax.servlet.ServletException; 11import javax.servlet.annotation.WebServlet; 12import javax.servlet.http.HttpServlet; 13import javax.servlet.http.HttpServletRequest; 14import javax.servlet.http.HttpServletResponse; 15import javax.servlet.http.HttpSession; 16 17import bean.User; 18 19/** 20 * Servlet implementation class SampleServlet 21 */ 22@WebServlet("/SampleServlet") 23public class SampleServlet extends HttpServlet { 24 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 25 26 request.setCharacterEncoding("UTF-8"); 27 28 HttpSession session = request.getSession(); 29 String user_comment = request.getParameter("user_comment"); 30 31 User user = new User(); 32 user.setComment(user_comment); 33 34 session.setAttribute("user", user); 35 36 RequestDispatcher dispatcher = request.getRequestDispatcher("B.jsp"); 37 dispatcher.forward(request, response); 38 } 39 40} 41
実現したいことの簡易コードを作成しました。
A.jspからコメントをPOSTして、B.jspのコメントを書き換えたいです。
その際には、innerHTMLは使用せずにBeanを書き換えたものを再表示する方法で
B.jspを更新しなければなりません。
作成いただいたコードを実行すると、A.jspがB.jspに(そのようなコーディングであるためなのですが)なります。
A.jspのテキストが「こんにちは」のまま、B.jspのBean再読み込みはできるのでしょうか。
どうかお知恵をお貸しください。
回答3件
あなたの回答
tips
プレビュー