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
结果是: