リクエスト・オブジェクトとレスポンス・オブジェクト
一.応答オブジェクト
1.原理
2.レスポンスラインの設定
3.応答ヘッダの設定
(1)HTMLへの応答
(2)JSON応答
4.応答体の設定
二.検証コード
1.サーブレットに書く
上記のように検証コード機能を完成させることができ、コード付き多重性が高すぎる.
2.クラス別の方法でカプセル化
ツールクラス:
Servlet:
三.リクエストオブジェクトRequest
1.要求ラインの取得
2.URIとURIの違い
まとめ:URIはネットワークリソースをマークしています.それだけです.URLにはWWWインターネットリソース(アドレスでマーク)がマークされており、彼のアクセスアドレスが与えられている.(URIはUniform Resource Identifierであり、リソースであることを示している.URLはUniform Resource Locatorであり、アドレスであることを示しており、英語の略語を読むだけでは確かに分かりにくい)
URLはURIのサブセットであり、すべてのURLはURIであるが、各URIがURLであるわけではなく、URNである可能性もある
3.取得要求ヘッダ
4.取得要求体
5.要求パラメータを取得するための一般的な方法
index.jsp
servlet
6.中国語の文字化けし問題の処理
四.リクエスト転送
1.内部転送の特徴
2.内部転送の原理
3.リダイレクトの原理
4.内部転送とリダイレクトの違い
五.ドメインオブジェクト
servlet1
servlet2
六.パスの書き方
1.原理
request response , , .
.
:
ServletRequest( )
2.レスポンスラインの設定
: HTTP/1.1 200 ok
setStatus(int code);
302
:1. ,
2.
3. ,
:
// 302
response.setStatus(302);
// location
response.setHeader("location","http://127.0.0.1:8080/MyServlet/index.jsp");
//
response.sendRedirect("http://www.baidu.com");
package org.westos.demo;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet(name = "ServletDemo1", value = "/demo")
public class ServletDemo1 extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// , , 。
// , 。
// , 。
// 302: ,location: 。
// :1. 。
//2. 。
//3. 。
response.setStatus(302);
response.setHeader("location","http://www.baidu.com");
//
//response.sendRedirect("http://www.baidu.com");
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(request, response);
}
}
3.応答ヘッダの設定
: :content-type:text/html;charset=utf-8
setHeader(String headName,String headValue);
setDateHeader(String name,long date);
setIntHeader(String name,int count);
(1)HTMLへの応答
package org.westos.demo;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
@WebServlet(name = "ServletDemo2", value = "/demo2")
public class ServletDemo2 extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// Tomcat ISO-8859-1, , Tomcat
// 。HTML JSON
// ? 。
//Tomcat: ISO-8859-1
// 。
response.setCharacterEncoding("utf-8");
// , utf-8 html
response.setHeader("content-type","text/html;charset=utf-8");
// ,
//response.setContentType("text/html;charset=utf-8");
PrintWriter writer = response.getWriter();
writer.write(" feike");
writer.write(" "
);
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(request, response);
}
}
(2)JSON応答
package org.westos.demo;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
@WebServlet(name = "ServletDemo3", value = "/demo3")
public class ServletDemo3 extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// JSON Content-Type
//response.setContentType("application/json;charset=utf-8");
response.setContentType("text/json;charset=utf-8");
//{"usrname":" ","password":"123456"}
PrintWriter writer = response.getWriter();
writer.write("{\"usrname\":\" \",\"password\":\"123456\"}");
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(request, response);
}
}
4.応答体の設定
**PrintWriter getWriter();
// , ISO-8859-1
//
response.setCharacterEncoding("utf-8");
// ,
response.setHeader("content-type","text/html;charset=utf-8");
//
response.setContentType("text/html;charset=utf-8");// : ,
**ServletOutputStream getOutputStream();
//
ServletOutputStream sos = response.getOutputStream();
//
String realPath = this.getServletContext().getRealPath("WEB-INF/302.png");
//
FileInputStream fis = new FileInputStream(new File(realPath));
byte[] by = new byte[1024];
int len = 0;
while ((len = fis.read(by)) != -1) {
sos.write(by, 0, len);
}
package org.westos.demo;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
@WebServlet(name = "ServletDemo4", value = "/demo4")
public class ServletDemo4 extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//
// /WEB-INF/
ServletOutputStream out = response.getOutputStream();
String realPath = this.getServletContext().getRealPath("/WEB-INF/anli.png");
FileInputStream in = new FileInputStream(new File(realPath));
// , ,
byte[] bytes = new byte[1024 * 8];
int len=0;
while ((len=in.read(bytes))!=-1){
out.write(bytes);
}
in.close();
out.close();
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(request, response);
}
}
二.検証コード
1.サーブレットに書く
package org.westos.demo2;
import javax.imageio.ImageIO;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.util.Random;
@WebServlet(name = "CheckCodeServlet", value = "/code")
public class CheckCodeServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//
int width = 200;
int height = 100;
BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
//
//
Graphics graphics = image.getGraphics();
//
graphics.setColor(Color.PINK);
//
graphics.fillRect(0, 0, width, height);
//
graphics.setColor(Color.BLUE);
//
graphics.drawRect(0, 0, width - 1, height - 1);
//
String str = "abdefaghJKLABCEDFEIOBBHF 0123456789";
graphics.setColor(Color.GREEN);
graphics.setFont(new Font(" ", Font.PLAIN, 30));
Random random = new Random();
for (int i = 1; i <= 4; i++) {
int index = random.nextInt(str.length());
char ch = str.charAt(index);
graphics.drawString(String.valueOf(ch), width / 5 * i, height / 2);
}
//
graphics.setColor(Color.BLACK);
for (int i = 0; i < 10; i++) {
int x1 = random.nextInt(width);
int x2 = random.nextInt(width);
int y1 = random.nextInt(height);
int y2 = random.nextInt(height);
graphics.drawLine(x1,y1,x2,y2);
}
//
ImageIO.write(image, "png", response.getOutputStream());
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(request, response);
}
}
上記のように検証コード機能を完成させることができ、コード付き多重性が高すぎる.
2.クラス別の方法でカプセル化
ツールクラス:
package org.westos.demo3;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.util.Random;
public class VerifyCode {
// https://blog.csdn.net/piaoyinluo2316/article/details/83754145
public static String drawRandomText(int width, int height, BufferedImage verifyImg) {
Graphics2D graphics = (Graphics2D) verifyImg.getGraphics();
graphics.setColor(Color.WHITE);// -
graphics.fillRect(0, 0, width, height);//
graphics.setFont(new Font(" ", Font.BOLD, 40));
//
String baseNumLetter = "123456789abcdefghijklmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ";
StringBuffer sBuffer = new StringBuffer();
int x = 10; // x
String ch = "";
Random random = new Random();
for (int i = 0; i < 4; i++) {
graphics.setColor(getRandomColor());
//
int degree = random.nextInt() % 30; // 30
int dot = random.nextInt(baseNumLetter.length());
ch = baseNumLetter.charAt(dot) + "";
sBuffer.append(ch);
//
graphics.rotate(degree * Math.PI / 180, x, 45);
graphics.drawString(ch, x, 45);
//
graphics.rotate(-degree * Math.PI / 180, x, 45);
x += 48;
}
//
for (int i = 0; i < 6; i++) {
//
graphics.setColor(getRandomColor());
//
graphics.drawLine(random.nextInt(width), random.nextInt(height),
random.nextInt(width), random.nextInt(height));
}
//
for (int i = 0; i < 30; i++) {
int x1 = random.nextInt(width);
int y1 = random.nextInt(height);
graphics.setColor(getRandomColor());
graphics.fillRect(x1, y1, 2, 2);
}
return sBuffer.toString();
}
/**
*
*/
private static Color getRandomColor() {
Random ran = new Random();
Color color = new Color(ran.nextInt(256),
ran.nextInt(256), ran.nextInt(256));
return color;
}
}
Servlet:
package org.westos.demo3;
import javax.imageio.ImageIO;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.io.OutputStream;
@WebServlet(name = "ServletCode", value = "/code2")
public class ServletCode extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//
int width = 200;
int height = 100;
BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
//
// String randomText = VerifyCode.drawRandomText(width, height, verifyImg);
//
String randomText = VerifyCode.drawRandomText(width, height, image);
// , , 。
// , ,
request.getSession().setAttribute("verifyCode", randomText);
response.setContentType("image/png");// ,
OutputStream os = response.getOutputStream(); //
ImageIO.write(image, "png", os);//
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(request, response);
}
}
三.リクエストオブジェクトRequest
1.要求ラインの取得
1. : GET /MyServlet/index.jsp?name=zhangsan&age=23 HTTP/1.1
request.getMethod();//
request.getContextPath();//
request.getRequestURI();// URI
request.getRequestURL();// URL
request.getRemoteAddr();// IP
request.getQueryString();//
request.getProtocol();//
package org.westos.demo4;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.net.URLDecoder;
@WebServlet(name = "ServletDemo5", value = "/demo5")
public class ServletDemo5 extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//
String method = request.getMethod();
System.out.println(" :"+method);// :GET
//
String path = request.getContextPath();
System.out.println(" "+path);// /20200819___war_exploded
//
String uri = request.getRequestURI();
System.out.println(" "+uri);// /20200819___war_exploded/demo5
//
StringBuffer url = request.getRequestURL();
System.out.println(" :"+url); // :http://localhost:8080/20200819___war_exploded/demo5
// ip
String ip = request.getRemoteAddr();
System.out.println("ip :"+ip);// ip :0:0:0:0:0:0:0:1
//
String string = request.getQueryString();
System.out.println(" :"+string);// :username=%22%E5%BC%A0%E4%B8%89%22&password=%22123456%22
/*
* GET ,POST
URL
* */
System.out.println("==============================");
// URL
String s = URLDecoder.decode("%22%E5%BC%A0%E4%B8%89%22", "utf-8");
System.out.println(s);//" "
//
String protocol = request.getProtocol();
System.out.println(protocol);//HTTP/1.1
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(request, response);
}
}
2.URIとURIの違い
java, , url uri , , , , , , , , , , , , ? , , , !
, , , , , XXX , , 35 XXX , , , XXX , XXX , , , , , , URI, URI, , ,http://www.sina.com.cn ,[email protected] qq , qq URI( QQ ),URI , URI 。
, , XXX ,“ XXX ” URI, , , ? , , URI , , , , , “ 35 XXX ” , 。 , , , , , , , , URL。
, ,URI ,URL , ,URL URI , URL , , , , , ,URL WWW URI , URI , , 。 URL, , URI , URL URI。
まとめ:URIはネットワークリソースをマークしています.それだけです.URLにはWWWインターネットリソース(アドレスでマーク)がマークされており、彼のアクセスアドレスが与えられている.(URIはUniform Resource Identifierであり、リソースであることを示している.URLはUniform Resource Locatorであり、アドレスであることを示しており、英語の略語を読むだけでは確かに分かりにくい)
URLはURIのサブセットであり、すべてのURLはURIであるが、各URIがURLであるわけではなく、URNである可能性もある
3.取得要求ヘッダ
2. :
request.getHeader("user-agent");//
request.getDateHeader(name);//
request.getIntHeader(name)//
package org.westos.demo4;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet(name = "ServletDemo7", value = "/demo7")
public class ServletDemo7 extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//
String header = request.getHeader("user-agent");
String referer = request.getHeader("Referer");
System.out.println(header);
/*
* Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.125 Safari/537.36
* */
System.out.println(referer);
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(request, response);
}
}
4.取得要求体
3. : : Post
: getReader();
:getInputStream();
package org.westos.demo4;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.BufferedReader;
import java.io.IOException;
@WebServlet(name = "ServletDemo8", value = "/demo8")
public class ServletDemo8 extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
BufferedReader reader = request.getReader();
System.out.println(reader.readLine());
//username=%E5%BC%A0%E4%B8%89&password=123456
String line = reader.readLine();
String[] split = line.split("&");
String[] split1 = split[0].split("=");
System.out.println(split1[0] + "=" + split1[1]);
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(request, response);
}
}
5.要求パラメータを取得するための一般的な方法
4.
request.getParameter(name);
request.getParameterValues("hobby"); ,
request.getParameterMap(); map
request.getParameterNames();
index.jsp
<html>
<head>
<title>Titletitle>
head>
<body>
<div align="center">
<form action="/20200819___war_exploded/demo9" method="get">
:
<input type="text" name="username" id="" value="" placeholder=" " maxlength="5" />
<br>
:
<input type="password" name="password" placeholder=" " />
<br>
:
<input type="radio" name="sex" value="1" checked="checked" />
<input type="radio" name="sex" value="0" />
<input type="radio" name="sex" id="y" value="2" />
<label for="y"> label>
<br>
:
<input type="checkbox" name="hobby" value="lanqiu" checked="checked" />
<input type="checkbox" name="hobby" value="zuqiu" checked="checked" />
<input type="checkbox" name="hobby" id="pp" value="pingpang" />
<label for="pp"> label>
<br>
:
<select name="xueli">
<option value="babySchool"> option>
<option value="xiaoxue"> option>
<option value="zhongxue"> option>
<option value="daxue" selected="selected"> option>
select>
<br>
:
<input type="email" name="user_email" />
<br>
:
<input type="number" name="points" min="1" max="10" value="1" />
<br>
:
<input type="date" name="birthday" />
<br>
:
<textarea rows="10" cols="20" name="desc">
textarea>
<br>
<input type="submit" value=" " />
<input type="reset" value=" " />
form>
div>
body>
html>
servlet
package org.westos.demo4;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Arrays;
import java.util.Enumeration;
@WebServlet(name = "ServletDemo9", value = "/demo9")
public class ServletDemo9 extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//
String username = request.getParameter("username");
String password = request.getParameter("password");
String sex = request.getParameter("sex");
// getParameterValues()
String[] hobbies = request.getParameterValues("hobby");
Arrays.toString(hobbies);
//
Enumeration<String> parameterNames = request.getParameterNames();
while (parameterNames.hasMoreElements()){
String key = parameterNames.nextElement();
String value = request.getParameter(key);
System.out.println(key+"=="+value);
/*
* username=======
password=======123456
sex=======1
hobby=======lanqiu
xueli=======daxue
[email protected]
points=======1
birthday=======2020-08-12
desc=======aaaaa
* */
}
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(request, response);
}
}
6.中国語の文字化けし問題の処理
// : get post
tomcat 8.0 GET tomcat
post
request.setCharacterEncoding("utf-8");
package org.westos.demo;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet(name = "MyServlet3", value = "/myServlet3")
public class MyServlet3 extends HttpServlet {
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
String username = request.getParameter("username");
System.out.println(username);
String password = request.getParameter("password");
System.out.println(password);
//
//123456
}
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String username = request.getParameter("username");
System.out.println(username);
String password = request.getParameter("password");
System.out.println(password);
//
//123456
}
}
四.リクエスト転送
1.内部転送の特徴
:
1.
2.
3.
:
request.getRequestDispatcher("/myservlet2").forward(request, response);
package org.westos.demo5;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet(name = "MyServlet1", value = "/myServlet1")
public class MyServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// ( )
System.out.println(" myServlet1");
System.out.println(" ");
System.out.println(" MyServlet2");
request.getRequestDispatcher("/myServlet2").forward(request,response);
System.out.println(" myServlet1");
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(request, response);
}
}
package org.westos.demo5;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet(name = "MyServlet2", value = "/myServlet2")
public class MyServlet2 extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println(" myServlet2");
System.out.println(" ");
System.out.println(" MyServlet3");
request.getRequestDispatcher("/myServlet3").forward(request,response);
System.out.println(" myServlet2");
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(request, response);
}
}
package org.westos.demo5;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet(name = "MyServlet3", value = "/myServlet3")
public class MyServlet3 extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("myServlet3");
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(request, response);
}
}
2.内部転送の原理
3.リダイレクトの原理
4.内部転送とリダイレクトの違い
1、 url , WEB-INF ; WEB-INF ;
:
1.
2.
3.
:
1. ,
2.
3. ,
五.ドメインオブジェクト
request.setAttribute("name","zhangsan");
request.getAttribute("name");
request.removeAttribute("name");
? ?
1. ,
2. , , 。
3. , , , 。
servlet1
package org.westos.demo5;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet(name = "Servlet1", value = "/servlet1")
public class Servlet1 extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//req , , , 。
// : 。
System.out.println("servlet1 , , servlet2");
/* servlet2*/
/* request.setAttribute("username"," ");
request.getRequestDispatcher("/servlet2").forward(request,response);
*/
/* servlet2*/
this.getServletContext().setAttribute("username", " ");
response.sendRedirect(request.getContextPath()+"/servlet2");
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(request, response);
}
}
servlet2
package org.westos.demo5;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet(name = "Servlet2", value = "/servlet2")
public class Servlet2 extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("servlet2 , ");
/* String username = (String) request.getAttribute("username");
System.out.println(username);// */
Object username = this.getServletContext().getAttribute("username");
System.out.println(username);
//
this.getServletContext().removeAttribute("username");
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(request, response);
}
}
六.パスの書き方
// : / 。
//1. , 。
//2.html,jsp , , 。
/
request.getRequestDispatcher("/myservlet2").forward(request, response);