HttpServletRequest
HttpServletRequest代表客戶端的請求,用戶通過Http協議訪問服務器,Http請求中的所有信息都會被封裝到HttpServletRequest,通過這個HttpServletRequest的方法,獲取客戶的信息。
小例子:
RequestServlet
package com.edwin.servlet;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
/**
* @author Edwin D
* @date 2020.6.4 上午 9:16
*/
public class RequestServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// 請求處理
System.out.println("請求成功!");
String Un = req.getParameter("Username");
String Pwd = req.getParameter("Password");
System.out.println(Un + ":" + Pwd);
// 重定向的時候一定要注意路徑問題,否則極其容易出現404。
// 404代表路徑問題,代碼正常。而500則代表代碼問題。
resp.sendRedirect("/response_war/JumpSuccess.jsp");
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doGet(req, resp);
}
}
初始化的Jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<body>
<h2>Hello World!</h2>
<%--這裏提價的路徑,需要尋找到項目的路徑--%>
<%--這裏的${pageContext.request.contextPath}代表當前的項目 --%>
<form action="${pageContext.request.contextPath}/Request" method="get">
用戶名:<input type="text" name="Username"> <br>
密碼:<input type="password" name="Password"> <br>
<input type="submit">
</form>
</body>
</html>
跳轉的Jsp
<%--
Created by IntelliJ IDEA.
User: 元
Date: 2020.6.4
Time: 上午 9:33
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Success</title>
</head>
<body>
<h1>Success Jump!</h1>
</body>
</html>
xml:
<servlet>
<servlet-name>Request</servlet-name>
<servlet-class>com.edwin.servlet.RequestServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Request</servlet-name>
<url-pattern>/Request</url-pattern>
</servlet-mapping>
輸出效果:
跳轉:
獲取參數,請求轉發
getParameter()//適用於String
getParameterValues()//適用於數組
代碼舉例:
LoginServlet:
package com.edwin.servlet;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Arrays;
/**
* @author Edwin D
* @date 2020.6.4 下午 12:50
*/
public class LoginServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// 控制檯,網頁接受到中午亂碼問題。
req.setCharacterEncoding("UTF-8");
resp.setCharacterEncoding("UTF-8");
String Un = req.getParameter("Username");
String Pwd = req.getParameter("Password");
String[] hobbys = req.getParameterValues("hobbys");
System.out.println("++++++++++++++++++++++++++++++++++");
System.out.println(Un);
System.out.println(Pwd);
System.out.println(Arrays.toString(hobbys));
System.out.println("++++++++++++++++++++++++++++++++++");
System.out.println(req.getContextPath());
// 通過請求轉發
// 這裏的“/”代表了當前Web應用。
req.getRequestDispatcher("/Success.jsp").forward(req,resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doGet(req, resp);
}
}
Jsp1:
<%--
Created by IntelliJ IDEA.
User: 元
Date: 2020.6.4
Time: 上午 12:48
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>登錄</title>
</head>
<body>
<h1>登錄</h1>
<form action="${pageContext.request.contextPath}/Login" method="post">
用戶名:<input type="text" name="Username"> <br>
密碼:<input type="password" name="Password"> <br>
愛好:
<input type="checkbox" name="hobbys" value="跑步">跑步
<input type="checkbox" name="hobbys" value="游泳">游泳
<input type="checkbox" name="hobbys" value="籃球">籃球
<input type="checkbox" name="hobbys" value="約會">約會
<br>
<input type="submit">
</form>
</body>
</html>
Jsp2:
<%--
Created by IntelliJ IDEA.
User: 元
Date: 2020.6.4
Time: 下午 3:26
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Success</title>
</head>
<body>
<h1>登錄成功</h1>
</body>
</html>
Xml:
<servlet>
<servlet-name>Login</servlet-name>
<servlet-class>com.edwin.servlet.LoginServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Login</servlet-name>
<url-pattern>/Login</url-pattern>
</servlet-mapping>
效果:
點擊“登錄”:
後臺輸出:
參考文獻
《【狂神說Java】JavaWeb入門到實戰》
2020.06.04