1、請求 HttpServletRequest 響應 HttpServletResponse
請求頭、請求行、請求體(請求參數)。
package net.pp.servlet;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.swing.*;
import java.io.IOException;
import java.util.Enumeration;
public class HelloService extends HttpServlet{
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse resp) throws ServletException, IOException{
//請求 HttpServletRequest
//獲取請求行
System.out.println("接收到get請求");
System.out.println("請求方式:" +request.getMethod());
System.out.println("URL:" +request.getRequestURL());
System.out.println("發出請求客戶端IP地址:" +request.getRemoteAddr());
System.out.println("服務點接收請求的IP地址:" +request.getLocalAddr());
System.out.println("訪問客戶端的端口號:" +request.getRemotePort());
System.out.println("WEB應用路徑:" +request.getContextPath());
System.out.println("HTTP協議和版本" +request.getProtocol());
//獲取請求頭
Enumeration<String> headerNames = request.getHeaderNames();
while (headerNames.hasMoreElements()){
String element = headerNames.nextElement();
System.out.println(element+":"+request.getHeader(element));
}
//獲取請求參數
String name = request.getParameter("name");
String passWord = request.getParameter("passWord");
System.out.println("用戶名:" + name);
System.out.println("密碼:" + passWord);
//響應 HttpServletResponse
String result = "恭喜您登陸成功";
//法一:
ServletOutputStream outputStream = response.getOutputStream();
outputStream.write(result.getBytes());
//法二:
response.setContentType("text/html;charset=utf-8");//將iso轉化爲utf-8,否則會出現碼
PrintWriter writer = response.getWriter();
writer.write(result);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException{
System.out.println("接收到post請求");
}
}
get.html
<center>
<h2>發起HTTP get請求</h2>
<form action="hi" method="get">
<p>賬號:<input type="text" name="name" /></p>
<p>密碼:<input type="text" name="passWord" /></p>
<input type="submit" value="提交" />
</form>
</center>
結果如下:
2、ServletContext對象
ServletContext對象是它對應的Web應用環境的相關配置信息
應用:
1)獲取整個Web項目初始化參數;
2)在多個Servlet中共享數據;
3)讀取Web項目中的資源文件。
1.獲取整個Web項目初始化參數;
ServletTest2.java
package net.pp.servlet;
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 = "ServletTest2", urlPatterns = "/test2")
public class ServletTest2 extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//利用getServletContext()獲取全局變量
String encoding = this.getServletContext().getInitParameter("encoding");
this.getServletContext().getInitParameterNames();
System.out.println(encoding);
}
}
結果是:
2.在多個Servlet中共享數據
ServleTest3.java
package net.pp.servlet;
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 = "ServletTest3", urlPatterns = "/test3")
public class ServletTest3 extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String data = "pengpeng";
this.getServletContext().setAttribute("name", data);
}
}
ServleTest4.java
package net.pp.servlet;
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 = "ServletTest4", urlPatterns = "/test4")
public class ServletTest4 extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String name = (String) this.getServletContext().getAttribute("name");
System.out.println(name);
}
}
結果是:
3)讀取Web項目中的資源文件
ServletTest5.java
package net.pp.servlet;
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.InputStream;
import java.util.Properties;
@WebServlet(name = "ServletTest5", urlPatterns = "/test5")
public class ServletTest5 extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
InputStream resourceAsStream = this.getServletContext().getResourceAsStream("/db.properties");
Properties properties = new Properties();
properties.load(resourceAsStream);
String name = properties.getProperty("name");
String password = properties.getProperty("passWord");
String url = properties.getProperty("url");
System.out.println(url);
System.out.println(name);
System.out.println(password);
}
}
db,properties
url=jdbc:mysql://localhost:3306
name = mysql of pengpeng
passWord = 888888
結果是: