HttpServletRequest和HttpServletResponse实例
先看一下web.xml文件配置:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <servlet>
<servlet-name>RequestDemo</servlet-name>
<servlet-class>cn.test.request.RequestDemo</servlet-class>
</servlet>
<servlet>
<servlet-name>ResponseDemo</servlet-name>
<servlet-class>cn.test.response.ResponseDemo</servlet-class>
</servlet> <servlet-mapping>
<servlet-name>RequestDemo</servlet-name>
<url-pattern>/RequestDemo</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>ResponseDemo</servlet-name>
<url-pattern>/ResponseDemo</url-pattern>
</servlet-mapping> </web-app>
当一个请求发送到tomcat服务器时,服务器会查询web.xml文件,先访问所有的<servlet-mapping>,匹配其中<url-pattern>,找到相应的信息后,提取<servlet-name>,然后分别匹配<servlet>中的<servlet-name>,当匹配到结果时,再根据相对应的<servlet-class>找到后台程序并执行,这就完成了一次访问过程。
requestdemo
public class RequestDemo extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
/**
* 设置参数查询的编码
* 该方法只能对请求实体内容的数据编码起作用。POST提交的数据在实体内容中,所以该方法对POST方法有效!
* GET方法的参数放在URI后面,所以对GET方式无效!!!
*/
request.setCharacterEncoding("utf-8");
/* System.out.println("GET方式");
//接收GET方式提交的参数
String value = request.getQueryString();
System.out.println(value);*/
/**
* 统一方便地获取请求参数的方法
*/
System.out.println(request.getMethod()+"方式");
//getParameter(name): 根据参数名得到参数值(只能获取一个值的参数)
String name = request.getParameter("name");
/**
* 手动重新解码(iso-8859-1 字符串-> utf-8 字符串)
*/
/*if("GET".equals(request.getMethod())){
name = new String(name.getBytes("iso-8859-1"),"utf-8");
}*/
String password = request.getParameter("password");
/*if("GET".equals(request.getMethod())){
password = new String(password.getBytes("iso-8859-1"),"utf-8");
}*/
System.out.println(name+"="+password);
System.out.println("=============================");
Enumeration<String> enums = request.getParameterNames();
while( enums.hasMoreElements() ){
String paramName = enums.nextElement();
//如果参数名是hobit,则调用getParameterValues 获取多个参数值
if("hobit".equals(paramName)){
/**
* getParameterValues(name): 根据参数名获取参数值(可以获取多个值的同名参数)
*/
System.out.println(paramName+":");
String[] hobits = request.getParameterValues("hobit");
for(String h: hobits){
/* if("GET".equals(request.getMethod())){
h = new String(h.getBytes("iso-8859-1"),"utf-8");
}*/
System.out.print(h+",");
}
System.out.println();
//如果不是hobit,则调用getParameter
}else{
String paramValue = request.getParameter(paramName);
/*
if("GET".equals(request.getMethod())){
paramValue = new String(paramValue.getBytes("iso-8859-1"),"utf-8");
}*/
System.out.println(paramName+"="+paramValue);
}
}
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
/*System.out.println("POST方式");
InputStream in = request.getInputStream();
byte[] buf = new byte[1024];
int len = 0;
while( (len=in.read(buf))!=-1 ){
System.out.println(new String(buf,0,len));
}*/
/**
* 统一方便地获取请求参数的方法
*/
/*System.out.println("POST方式");
//根据参数名得到参数值
String name = request.getParameter("name");
String password = request.getParameter("password");
System.out.println(name+"="+password);
System.out.println("=============================");
Enumeration<String> enums = request.getParameterNames();
while( enums.hasMoreElements() ){
String paramName = enums.nextElement();
String paramValue = request.getParameter(paramName);
System.out.println(paramName+"="+paramValue);
}*/
//一定调用doGet方式
this.doGet(request, response);
}
}
responsedemo
public class ResponseDemo extends HttpServlet {
/**
* 1)tomcat服务器把请求信息封装到HttpServletRequest对象,且把响应信息封装到HttpServletResponse
* 2)tomcat服务器调用doGet方法,传入request,和response对象
*/
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
/**
* 3)通过response对象改变响应信息
*/
/**
* 3.1 响应行
*/
//response.setStatus(404);//修改状态码
//response.sendError(404); // 发送404的状态码+404的错误页面
/**
* 3.2 响应头
*/
response.setHeader("server", "JBoss");
/**
* 3.3 实体内容(浏览器直接能够看到的内容就是实体内容)
*/
// response.getWriter().write("01.hello world"); //字符内容。
response.getOutputStream().write("02.hello world".getBytes());//字节内容
}
/**
* 4)tomcat服务器把response对象的内容转换成响应格式内容,再发送给浏览器解析。
*/
}
response重定向:
public class ResponseDemo2 extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
/**
* 需求: 跳转到adv.html
* 使用请求重定向: 发送一个302状态码+location的响应头
*/
/*response.setStatus(302);//发送一个302状态码
response.setHeader("location", "/day09/adv.html"); //location的响应头
*/
//请求重定向简化写法
response.sendRedirect("/day09/adv.html");
}
}
定时刷新:
public class ResponseDemo extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
/**
* 定时刷新
* 原理:浏览器认识refresh头,得到refresh头之后重新请求当前资源
*/
//response.setHeader("refresh", "1"); //每隔1秒刷新次页面
/**
* 隔n秒之后跳转另外的资源
*/
response.setHeader("refresh", "3;url=/day09/adv.html");//隔3秒之后跳转到adv.html
}
}
HttpServletRequest和HttpServletResponse实例的更多相关文章
- HttpServletrequest 与HttpServletResponse总结
如果说DOM是javascript与HTML的桥梁,那么servlet就是前端与后端的桥梁,HttpServletRequest和HttpServletResponse就是之间的信使,好了,废话不多说 ...
- GenericServlet,HttpServletRequest和HttpServletResponse
最基本的是通过实现Servlet接口来编写Servlet类,这需要实现Servlet接口中定义的5个方法. 为了简化Servlet的编写,在javax.servlet包中提供了一个抽象类Generic ...
- 关于Filter中ServletRequest和ServletResponse强转HttpServletRequest和HttpServletResponse安全问题(向下转型一定不安全吗?)
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOE ...
- 关于Filter中ServletRequest和ServletResponse强转HttpServletRequest和HttpServletResponse
---转载自:https://www.cnblogs.com/mei0619/p/8341159.html request对象的生成方式不是ServletRequest request = new S ...
- javaWeb的HttpServletRequest和HttpServletResponse
HttpServletRequest HttpServletRequest对象是封装了用户的请求信息,包括请求参数去,请求头等信息,service()f方法中的两个HttpServletRequest ...
- 如何优雅地读写HttpServletRequest和HttpServletResponse的请求体
最近很多交互要同原生的HttpServletRequest和HttpServletResponse打交道.从HttpServletRequest中读取body数据封装成某种数据结构:向HttpServ ...
- @SuppressWarnings("unchecked")(解决标准的后台HttpServletRequest request, HttpServletResponse response)格式
在springmvc的应用中有些限制会出现必须是 public void save(HttpServletRequest request, HttpServletResponse response) ...
- Java第三阶段学习(十二、HttpServletRequest与HttpServletResponse)
一.HttpServletRequest 1.概述: 我们在创建Servlet时会覆盖service()方法,或doGet()/doPost(),这些方法都有两个参数,一个为代表请求的request和 ...
- java HttpServletRequest和HttpServletResponse詳解
這篇文章主要介紹瞭java HttpServletRequest和HttpServletResponse詳解的相關資料,需要的朋友可以參考下 java HttpServletRequest和HttpS ...
随机推荐
- layui sleect获取value值
<div class="layui-form-item"> <label for="username" class="layui-f ...
- Hive的内置函数
定义: UDF(User-Defined-Function),用户自定义函数对数据进行处理. UDTF(User-Defined Table-Generating Functions) 用来解决 输入 ...
- 3.1 wifi网卡RT3070在S3C2440的移植和使用
学习目标:熟悉RT3070在S3C2440的移植和使用,以及其中的相关工具的安装和使用: 一.配置内核选择WIFI驱动 1. 将usb wifi插到电脑,在ubuntu使用命令:# lsusb 查看w ...
- s3c2440串口详解
一.UART原理说明 通用异步收发器简称UART(Universal Asynchronous Receiver/Transmitter),它用来传输串行数据:发送数据时,CPU将并行数据写入UART ...
- TCP/IP协议族、版本以及编址机制
TCP/IP协议族简称TCP/IP.这么命名是因为该协议家族中的两个核心协议:TCP(传输控制协议)和IP(网际协议),为该家族中最早通过的标准.TCP/IP提供点对点的链接机制,将数据应该如何封装, ...
- eclipse注释任务标记
一.概述 TODO: + 说明: 如果代码中有该标识,说明在标识处有功能代码待编写,待实现的功能在说明中会简略说明. FIXME: + 说明: 如果代码中有该标识,说明标识处代码需要修正,甚至代码是 ...
- POJ3259_Wormholes_KEY
题目传送门 题目大意:有F组数据,N表示有N点,M表示有M条边,走一遍边需要花费Ti个时间,还有W个虫洞,可以向前回溯Ti时间,求能否从1点出发,经过一些路或虫洞回到1点后时间为负. 建图后用SPFA ...
- 4946: [Noi2017]蔬菜
4946: [Noi2017]蔬菜 http://www.lydsy.com/JudgeOnline/upload/Noi2017D2.pdf 分析: 贪心. 首先可以将一个蔬菜拆成两个,一个是有加成 ...
- (转)Ruby On Rails 推荐 Gem 列表
作者:尘缘,QQ:130775,来源:http://www.4wei.cn/archives/1002157 PHP的包管理Composer还在刚刚兴起的阶段,Ruby社区已经有很多成熟的Gem了,R ...
- 创龙DSP6748开发板上电测试-第一篇
1. 创龙DSP6748开发板测试.2980元的售价很高,我估计新的1200元比较合适,当然创龙定价是按照供需关系的.仿真器XDS100V2卖598元,真是狮子大张口. 2. 上电是5V-2A的电源. ...