JavaWeb-HttpServletRequest舉例解析

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章