这里写目录标题
ServletRequest对象
·javax.servlet.ServletRequest对象主要用于向servlet提供客户端请求信息,可以从中获取到任何请求信息 ;
·Servlet容器创建一个ServletRequest对象,并将其作为参数传递给Servlet的service方法
HttpServletRequest对象
基本概念
·javax.servlet.http.HttpServletRequest对象是ServletRequest接口的子接口,主要用于提供HTTP 请求信息的功能
·发送HTTP请求时,HTTP请求头直接由浏览器设置
·可直接通过HttpServletRequest对象提供的一系列get方法获取请求头数据
HttpServletRequest对象的生命周期
当有请求到达Tomcat时,Tomcat会创建HttpServletRequest对象,并将该对象通过参数的方式传递到我们Servlet的方法中,当处理请求处理完毕并产生响应后该对象生命周期结束
常用方法
获取请求信息(如: 请求的项目名, 请求方式, 请求协议类型等)
·获取请求头信息
·获取请求数据(发送请求携带的参数)
获取请求信息
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String contextPath = req.getContextPath();//请求的项目名
String method = req.getMethod();//请求方式
String scheme = req.getScheme();//请求协议类型
String protocol = req.getProtocol();//请求协议类型/版本号
StringBuffer requestURL = req.getRequestURL();//请求的完整URL
String requestURI = req.getRequestURI();//请求行中指定资源部分
String remoteAddr = req.getRemoteAddr();//请求客户机的IP地址
String localAddr = req.getLocalAddr();//请求WEB服务器的IP地址
int localPort = req.getLocalPort();//请求WEB服务器的端口
}
获取请求头信息
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//根据请求头中的 key 获取 value
String header = req.getHeader("Connection");
System.out.println(header);
System.out.println("----------");
//获取所有请求头中的key
Enumeration<String> headerNames = req.getHeaderNames();
while (headerNames.hasMoreElements()){
//获取每一个key
String key = headerNames.nextElement();
// 根据key 或取 values
String value = req.getHeader(key);
System.out.println(key + ": "+ value);
}
}
获取请求数据
1)获取的参数值只有一个(如: 用户名, 密码, 生日, 单选框, 下拉列表, 大文本框)
String p = req.getParameter("参数名");
获取的参数值大于一个(如: 复选框)
String[] ps = req.getParameterValues("参数名");
获取所有的参数名
Enumeration<String> parameterNames = req.getParameterNames();
<form action="servlet1" method="get">
姓名:<input type="text" name="username" value="aaa"/><br/>
爱好:
<input type="checkbox" name="hobby" value="1"/>篮球
<input type="checkbox" name="hobby" value="2"/>足球
<input type="checkbox" name="hobby" value="3"/>音乐
<input type="checkbox" name="hobby" value="4"/>看书
<input type="checkbox" name="hobby" value="5"/>看报纸
<br/>
星期
<input type="radio" name="week" value="1"/>一
<input type="radio" name="week" value="2"/>二
<input type="radio" name="week" value="3"/>三
<input type="radio" name="week" value="4"/>四
<input type="radio" name="week" value="5"/>五
<input type="radio" name="week" value="6"/>六
<input type="radio" name="week" value="7"/>日
<br/>
籍贯:
<select name="pro">
<option value="1">吉林</option>
<option value="2">黑龙江</option>
<option value="3">辽宁</option>
<option value="4">内蒙古</option>
</select>
<br/>
介绍
<textarea name="introduce" >aaa</textarea>
<input type="submit" value="提交数据">
</form>
Servlet
public class TestServlet extends HttpServlet {
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { //设置请求编码 req.setCharacterEncoding("utf-8");
//获取用户名
String username = req.getParameter("username");
//获取爱好
String[] hobbies = req.getParameterValues("hobby");
//获取星期
String week = req.getParameter("week");
//获取省份
String pro = req.getParameter("pro");
//获取自我介绍
String introduce = req.getParameter("introduce");
//获取所有的参数名
Enumeration<String> parameterNames = req.getParameterNames();
while (parameterNames.hasMoreElements()){
String key = parameterNames.nextElement();
String value = req.getParameter(key);
System.out.println(key+": "+value);
}
}
}
ServletResponse对象
基本概念
javax.servlet.ServletResponse对象用于定义一个对象 向客户端发送响应
· Servlet容器创建ServletResponse对象,并将其作为参数传递给servlet的service方法, 在service方法中借助该对象完成向客户端的响应
常用方法
使用示例
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//设置响应的编码格式
resp.setCharacterEncoding("utf-8");
resp.setContentType("text/html;charset=utf-8");
//获取响应输出流
PrintWriter writer = resp.getWriter();
//输出html页面
writer.println("<html>");
writer.println("<head>");
writer.println("<title>我的页面</title>");
writer.println("</head>");
writer.println("<body>");
writer.println("<h1>你好啊!</h1>");
writer.println("</body>");
writer.println("</html>");
}
ServletConfig对象
javax.servlet.ServletConfig对象用于描述Servlet本身的相关配置信息,在初始化期间用于将信息传递给Servlet配置对象
· 在Servlet中通过this.getServletConfig()方法可以父类中获得ServletConfig对象
使用示例
web.xml
servlet>
<servlet-name>servlet4</servlet-name>
<servlet-class>com.bjsxt.servlet.TestServlet</servlet-class>
<init-param>
<param-name>username</param-name>
<param-value>zs</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>servlet4</servlet-name>
<url-pattern>/testServlet</url-pattern>
</servlet-mapping>
servlet
public class TestServlet extends HttpServlet {
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//从父类中获取ServletConfig对象
ServletConfig servletConfig = this.getServletConfig();
//获取当前servlet的初始化参数
String username= servletConfig.getInitParameter("username");
//设置响应的编码格式
resp.setCharacterEncoding("utf-8");
resp.setContentType("text/html;charset=utf-8");
//获取响应输出流
PrintWriter writer = resp.getWriter();
//输出
writer.println("获取当前servlet的初始化参数 username: "+ username);
}
}
ServletContext对象
基本概念
javax.servlet.ServletContext对象主要用于定义一组方法,Servlet使用这些方法与它的Servlet容器通信
· 服务器容器在启动时会为每个项目创建唯一的一个ServletContext对象,用于实现多个Servlet之间的信息共享和通信
· 在Servlet中通过this.getServletContext()方法可以父类中获得ServletContext对象
ServletContext对象生命周期
当容器启动时会创建ServletContext对象并一直缓存该对象,直到容器关闭后该对象生命周期结束。ServletContext对象的生命周期非常长,所以在使用全局容器时不建议存放业务数据, 存放的数据为整个项目需要共享的数据
web.xml
<context-param>
<param-name>charset</param-name>
<param-value>utf-8</param-value>
</context-param>
servlet(当前项目中所有的servlet共享)
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//从父类中获取ServletContext对象
ServletContext servletContext = this.getServletContext();
//获取全局初始化参数
String charset = servletContext.getInitParameter("charset");
//设置响应编码格式
resp.setCharacterEncoding(charset);
resp.setContentType("text/html;charset="+charset);
//获取响应输出流
PrintWriter writer = resp.getWriter();
//输出
writer.println("获取当前项目共享的初始化参数 charset: "+ charset);
}
常见对象总结
HttpServletRequest对象:
作用:
专门处理Http的请求
- 可以获取请求相关参数(请求数据[参数], 请求信息, 请求头信息)
2.可以存储数据, 获取存储的数据(一次请求有效)
发送请求开始, 响应结束 一次请求
setAttribute(key,value) getAttribute(key) - 可以完成请求的转发
生命周期: 当有请求到达Tomcat时,Tomcat会创建HttpServletRequest对象,并将该对象通过参数的方式传递到我们Servlet的方法中,当处理请求处理完毕并产生响应后该对象生命周期结束
HttpServletResponse对象:
作用:
向客户端发送响应
- 可以向页面响应内容
- 可以完成请求的重定向
- ServletContext对象:
作用:
实现多个Servlet之间的信息共享和通信, 一个项目只有一个ServletContext对象, 所有servlet都共享该对象
1.可以获取全局初始化参数(当前项目共享) getInitParameter(key)
2.可以存储数据, 获取数据(当前项目共享)
setAttribute(key,value) getgetAttribute(key)
4) ServletConfig对象:
作用: 描述Servlet本身的相关配置信息
- 可以获取当前Servlet的初始化参数(当前Servlet有效)