📖
[JSP]MVCモデルで作る!
作成
サーブレット作成でServlet1をつくる!
かきかえる
-
response.getWriter().append("Served at: ").append(request.getContextPath());
をコメントアウト -
getServletContext().getRequestDispatcher("/jsp31.jsp").forward(request, response);
を追記
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
// response.getWriter().append("Served at: ").append(request.getContextPath());
getServletContext().getRequestDispatcher("/jsp31.jsp").forward(request, response);
}
解説
getRequestDispatcher("/jsp31.jsp")
は直下という意味だから、WebContentフォルダの下
jsp31.jspつくる
WebContentフォルダの直下に__jsp31.jsp__を作成
編集
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>サーブレットから呼ばれたJSPです。</h1>
</body>
</html>
実行
Servlet1を右クリック->実行->サーバーで実行
改めてwebシステム
①URLによるリクエスト発行
②サーブレットがリクエスト受け付け
③サーブレットがJSPを呼び出し
④JSPが生成するHTMLをブラウザへレスポンス
⑤ブラウザに画面が表示される
ログイン画面をMVCモデルで
Loginサーブレットを作成
以下の部分を書き換え
login.java
login.java
package servlet;
import java.io.IOException;
import jakarta.servlet.ServletException;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
/**
* Servlet implementation class Login
*/
//urlになる部分
//@WebServlet("/login")
public class Login extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public Login() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
//response.getWriter().append("Served at: ").append(request.getContextPath());
getServletContext().getRequestDispatcher("/login.jsp").forward(request, response);
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
//doGet(request, response);
response.getWriter().append("call doPost Success");
String id =request.getParameter("id");
String pass = request.getParameter("pass");
//バリデーション処理
if(id == "") {
String msg = "IDは必須入力です。";
System.out.println("msg=" + msg);
request.setAttribute("msg", msg);
getServletContext().getRequestDispatcher("/login.jsp").forward(request, response);
}
// System.out.println("id=" + id);
// System.out.println("pass" + pass);
}
}
login.jsp作成
WebContentの直下に作成
login.jsp
login.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h2>ログイン画面</h2>
<form actoin="login" method="post">
<table>
<tr>
<th>ID</th>
<td>
<input type="text" name="id">
</td>
</tr>
<tr>
<th>パスワード</th>
<td>
<input type="password" name="pass">
</td>
</tr>
<tr>
<td colspan="2" style="text-align:center">
<button type="submit">ログイン</button>
</td>
</tr>
</table>
</form>
</body>
</html>
実行
- IDを入力せずにログインを押すと__IDは必須入力です。__ が表示される
- IDとパスワード入力してログインを押すと、call doPost Successが表示される
殴り書きメモ
getServletContext().getRequestDispatcher("/login.jsp").forward(request, response);
について
Discussion