1.リクエストデータを取得するための4つの一般的な方法:getParameter
1.1 getParamter(キー名)を介してパラメーター値を取得します。getおよびpostリクエストは一般的です。
package cn.sc;
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.Enumeration;
import java.util.Map;
import java.util.Set;
@WebServlet( "/test3")
public class test3 extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//通过getParamter(键名)来获取参数值 get和post请求通用
String username = request.getParameter("username");
String hobby = request.getParameter("hobby");
System.out.println("爱好是:"+hobby);
System.out.println(username);
}
JavaWebコード
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<form action="test3" method="post">
用户名<input type="text" placeholder="请输入用户名" name="username"/><br/>
密码<input type="password" placeholder="请输入密码" name="pwd">
<input type="checkbox" value="cll" name="hobby">123456
<input type="checkbox" value="ckl" name="hobby">123457
<input type="submit" value="登陆"/>
</form>
</body>
</html>
結果は
1.2です。キー名ですべてのパラメータを取得します
System.out.println("-------------通过键名获取所有的参数--------------");
// request.getParameterValues 适用于 一个键名 有多个参数
String[] hobies = request.getParameterValues("hoby");
for (String hoby1 : hobies) {
System.out.println(hoby1);
}
結果は
1.3request.getParamyterNames()サーブレットにアクセスするためのすべてのキーを取得します
Enumeration<String> parameterNames = request.getParameterNames();
while (parameterNames.hasMoreElements()){
String name = parameterNames.nextElement();
// System.out.println(name);
String value = request.getParameter(name);
System.out.println(name+"+++"+value);
}
結果は
1.4であり、マップコレクションを通じてすべてのキー名と値を列挙します
Map<String, String[]> pm = request.getParameterMap();
Set<String> keySet = pm.keySet();
for (String key : keySet) {
String[] values = pm.get(key);
for (String value : values) {
System.out.println(key+"----"+value);
}
}
結果は
2パラメータを取得する要求の中国語の文字化けした問題を解決します
1.1の方法では、ユーザー名のテキストボックスに中国語を入力すると、文字化けした文字が表示されます。たとえば、
下の位置にある赤いボックスにコードを追加することで、これらの中国語の文字化けしたコードを解決することもできます。
3.転送をリクエストします
これはサーバー内のリソースをジャンプする方法です。たとえば、Centuryの開発では、いくつかの異なるサーブレットが必要です。各人が異なる機能を実行します。いくつかの機能を実現するためにサーブレットにアクセスするときは、新しいサーブレットにジャンプする必要があります。これはリソースジャンプです。
例えば
package cn.sc;
import javax.servlet.RequestDispatcher;
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("/test1")
public class test1 extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("我的貂,蝉在哪里");
//1.获取request的请求转发器,内部参数为转发的路径
RequestDispatcher requestDispatcher = request.getRequestDispatcher("/test2");
//2.调用转发器对象,传入参数request和response
requestDispatcher.forward(request,response);
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(request,response);
}
}
test2にジャンプ
package cn.sc;
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("/test2")
public class test2 extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("千军万马一将在,探囊取物有何难");
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(request,response);
}
}
結果は