文章目錄
- 一,Request物件
- --1,概述
- --2,測驗
- 二,練習Request決議請求引數
- --0,專案結構
- --1,創建HTML網頁
- --2,創建Servlet程式
- 三,改造Servlet程式實作入庫
- --1,匯入jar包
- --2,修改Servlet程式
- --3,測驗
- 四,請求轉發
- --1,概述
- --2,測驗
- 五,Response物件
- --1,概述
- --2,測驗
一,Request物件
–1,概述
1,用來接受請求,并且能夠決議 請求引數.
GET方式: http://localhost:8080/user/userServlet?id=10&name=jack
POST方式: 資料不會在地址欄拼接的
2,常用的有兩種:
ServletRequest 父介面
HttpServletRequest 子介面
–2,測驗
package cn.tedu.cgb2110boot03.request;
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;
@WebServlet
public class RequestServlet01 extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);//和doGet干一樣的活
}
//http://localhost:8080/RequestServlet01?name=jack&pwd=123
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("恭喜您,請求成功~~");
// Servlet決議請求引數HttpServletRequest
//1.getParameter()--根據引數名獲取引數值
String s = request.getParameter("name");
String p = request.getParameter("pwd");
System.out.println(s+p);
//2.getParameterValues()--根據引數名獲取引數值,可以獲取多個值,存入陣列
String[] datas = request.getParameterValues("like");
System.out.println( Arrays.toString(datas) );//[足球, 籃球]
//3.HttpServletRequest的其他API
System.out.println( request.getCharacterEncoding() );//獲取請求使用的字符集UTF-8
System.out.println( request.getMethod() );//獲取請求方式GET
System.out.println( request.getContextPath() );//獲取專案名稱(被預設)
System.out.println( request.getRequestURI() );//要訪問的資源路徑/RequestServlet01
System.out.println( request.getRequestURL() );//包含著http://localhost:8080/RequestServlet01
System.out.println( request.getRemotePort() );//發起請求時的埠號
System.out.println( request.getQueryString() );//獲取請求時攜帶的引數
}
}
二,練習Request決議請求引數
–0,專案結構

–1,創建HTML網頁
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>測驗 Servlet決議請求引數</title>
</head>
<body>
<h1>1.以get方式提交的資料</h1>
<form action="http://localhost:8080/user/addServlet">
部門編號:<input type="number" name="deptno" placeholder="在這里輸入部門編號.."/> <br />
部門名稱:<input type="text" name="deptname" placeholder="在這里輸入部門名稱.."/> <br />
部門地址:<input type="text" name="deptloc" placeholder="在這里輸入部門地址.."/> <br />
<button type="submit">提交</button>
<button type="reset">取消</button>
</form>
<h1>2.以post方式提交的資料</h1>
<form method="post" action="http://localhost:8080/user/addServlet">
賬號:<input type="text" name="user" placeholder="在這里輸入用戶名.."/> <br />
密碼:<input type="password" name="pwd" placeholder="在這里輸入密碼.."/> <br />
年齡:<input type="number" name="age" placeholder="在這里輸入年齡.."/> <br />
<button type="submit">提交</button>
<button type="reset">取消</button>
</form>
</body>
</html>
–2,創建Servlet程式
package cn.tedu.cgb2110boot03.request;
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("/user/addServlet")
public class RequestServlet02 extends HttpServlet {
//處理那些post請求
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("恭喜您,成功的提交了用戶的資料!");
//TODO 決議請求引數
//TODO jdbc入庫
}
//處理那些get請求
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("恭喜您,成功的提交了部門的資料!");
//TODO 決議請求引數
//TODO jdbc入庫
}
}
三,改造Servlet程式實作入庫
–1,匯入jar包
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>cn.tedu</groupId>
<artifactId>cgb2110boot03</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>cgb2110boot03</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<spring-boot.version>2.3.7.RELEASE</spring-boot.version>
</properties>
<dependencies>
<!-- ,,,,,,,,,添加 jdbc的jar包,需要指定坐標 ,,,,,,,,,-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.48</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>${spring-boot.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>2.3.7.RELEASE</version>
<configuration>
<mainClass>cn.tedu.cgb2110boot03.Cgb2110boot03Application</mainClass>
</configuration>
<executions>
<execution>
<id>repackage</id>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
–2,修改Servlet程式
package cn.tedu.cgb2110boot03.request;
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.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
@WebServlet("/user/addServlet")
public class RequestServlet02 extends HttpServlet {
//處理那些post請求
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("恭喜您,成功的提交了用戶的資料!");
//TODO 決議請求引數
String user = request.getParameter("user");
String pwd = request.getParameter("pwd");
String age = request.getParameter("age");
System.out.println(user+pwd+age);
//TODO jdbc入庫
try {
//1,匯入jar包(在pom.xml里添加jar包的坐標依賴)
//注冊驅動
Class.forName("com.mysql.jdbc.Driver");
//獲取連接
String url="jdbc:mysql:///cgb211001?characterEncoding=utf8";
Connection c = DriverManager.getConnection(url, "root", "root");
//獲取傳輸器
String sql = "insert into user values(null,?,?,?)" ;//sql骨架
PreparedStatement ps = c.prepareStatement(sql);
ps.setObject(1,user);
ps.setObject(2,pwd);
ps.setObject(3,age);
//執行SQL
ps.executeUpdate();//執行增刪改的SQL
//釋放資源
ps.close();
c.close();
System.out.println("恭喜您,用戶資訊已經入庫成功!");
} catch (Exception e) {
e.printStackTrace();
}
}
//處理那些get請求
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("恭喜您,成功的提交了部門的資料!");
//TODO 決議請求引數(部門編號,名稱,地址)
String deptno = request.getParameter("deptno");
String deptname = request.getParameter("deptname");
String deptloc = request.getParameter("deptloc");
//TODO jdbc入庫
try {
//1,匯入jar包(在pom.xml里添加jar包的坐標依賴)
//注冊驅動
Class.forName("com.mysql.jdbc.Driver");
//獲取連接
String url="jdbc:mysql:///cgb211001?characterEncoding=utf8";
Connection c = DriverManager.getConnection(url, "root", "root");
//獲取傳輸器
String sql = "insert into dept values(?,?,?)" ;//sql骨架
PreparedStatement ps = c.prepareStatement(sql);
ps.setObject(1,deptno);
ps.setObject(2,deptname);
ps.setObject(3,deptloc);
//執行SQL
ps.executeUpdate();
//釋放資源
ps.close();
c.close();
System.out.println("恭喜您,部門資訊已經入庫成功!");
} catch (Exception e) {
e.printStackTrace();
}
}
}
–3,測驗

四,請求轉發
–1,概述
是服務器內部的程序,客戶端感受不到.
程序: 瀏覽器 -> A----B
特點: 一次請求一次回應. 地址欄不會改變. 全程使用同一個Request物件.
實作: request.getRequestDispatcher(“B的訪問規則”).forward(request,response);
–2,測驗

ServletA
package cn.tedu.cgb2110boot03.request;
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("/testa")
public class ServletA extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("ServletA...doGet()被觸發!");
//請求轉發: 實作 訪問A時,A背后呼叫B 的效果
//特點: 地址欄不變 + 同一個request物件(在A里存,在B里取)
request.setAttribute("name","jack");
//引數是 目標資源的訪問規則.目標資源必須是在同一個專案里才能請求轉發
request.getRequestDispatcher("/testb").forward(request,response);
}
}
ServletB
package cn.tedu.cgb2110boot03.request;
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("/testb")
public class ServletB extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("ServletB...doGet()被觸發!");
//獲取A中存好的資料
Object o = request.getAttribute("name");
System.out.println(o);//jack
}
}
五,Response物件
–1,概述
專門用來給瀏覽器做出回應.
本質上就是獲取一個輸出流,利用輸出流寫出資料
常用物件:
ServletResponse – 父介面
HttpServletResponse – 子介面
常用方法:
1, getWriter() – 獲取字符流(只能寫出字符資料)
2, getOutputStream() – 獲取位元組流(寫出任意格式的資料)
3, setContentType() – 寫出資料中,如果包含中文,解決中文亂碼
4, sendRedirect() – 完成重定向
–2,測驗
package cn.tedu.cgb2110boot03.response;
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;
//Servlet充當服務器:接受請求Request + 做出回應Response
// http://localhost:8080/resp/servlet01?id=10&name=張三
@WebServlet("/resp/servlet01")
public class ResponseServlet01 extends HttpServlet {
//如果是get請求,Servlet會自動呼叫doGet()
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//TODO 決議請求引數
String id = request.getParameter("id");
String name = request.getParameter("name");
//回應時使用的默認的字符集iso-8859-1,為了防止回應時的中文亂碼問題,加以下代碼
response.setContentType("text/html;charset=utf8");
//回應決議到的資料
PrintWriter out = response.getWriter();
out.println(id);//提供了一個換行寫出的功能
out.write(name);
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/382864.html
標籤:java
下一篇:MySQL MVCC底層原理決議
