HttpServletRequest和ServletRequest都是接口

HttpServletRequest继承自ServletRequest

HttpServletRequest比ServletRequest多了一些针对于Http协议的方法。 例如:

getHeader(), getMethod() , getSession()

    @Override
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain filterChain) throws IOException, ServletException {
// 过滤用户请求,判断是否登录
HttpServletRequest httpServletRequest = (HttpServletRequest)request;
HttpServletResponse httpServletResponse = (HttpServletResponse)response;
httpServletResponse .setContentType("text/html;charset=utf-8");
httpServletRequest.setCharacterEncoding("utf-8");
httpServletResponse.setCharacterEncoding("utf-8"); String username = (String)httpServletRequest.getSession().getAttribute("username");
if (username == null) {
String path = httpServletRequest.getContextPath();
httpServletResponse.sendRedirect(path+"/index.jsp");
}
filterChain.doFilter(httpServletRequest, httpServletResponse);
}

1. 获得客户机信息
    getRequestURL方法返回客户端发出请求时的完整URL。
    getRequestURI方法返回请求行中的资源名部分。
    getQueryString 方法返回请求行中的参数部分。
    getRemoteAddr方法返回发出请求的客户机的IP地址 
    getRemoteHost方法返回发出请求的客户机的完整主机名
    getRemotePort方法返回客户机所使用的网络端口号
    getLocalAddr方法返回WEB服务器的IP地址。
    getLocalName方法返回WEB服务器的主机名 
    getMethod得到客户机请求方式
 2.获得客户机请求头

getHeader(string name)方法 
    getHeaders(String name)方法 
    getHeaderNames方法

3. 获得客户机请求参数(客户端提交的数据)
    getParameter(name)方法
    getParameterValues(String name)方法
    getParameterNames方法 
    getParameterMap方法

例子程序:

    public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
System.out.println("getRequestURL: "+request.getRequestURL());
System.out.println("getRequestURI: "+request.getRequestURI());
System.out.println("getQueryString: "+request.getQueryString());
System.out.println("getRemoteAddr: "+request.getRemoteAddr());
System.out.println("getRemoteHost: "+request.getRemoteHost());
System.out.println("getRemotePort: "+request.getRemotePort());
System.out.println("getRemoteUser: "+request.getRemoteUser());
System.out.println("getLocalAddr: "+request.getLocalAddr());
System.out.println("getLocalName: "+request.getLocalName());
System.out.println("getLocalPort: "+request.getLocalPort());
System.out.println("getMethod: "+request.getMethod());
System.out.println("-------request.getParamterMap()-------");
//得到请求的参数Map,注意map的value是String数组类型
Map map = request.getParameterMap();
Set<String> keySet = map.keySet();
for (String key : keySet) {
String[] values = (String[]) map.get(key);
for (String value : values) {
System.out.println(key+"="+value);
}
}
System.out.println("--------request.getHeader()--------");
//得到请求头的name集合
Enumeration<String> em = request.getHeaderNames();
while (em.hasMoreElements()) {
String name = (String) em.nextElement();
String value = request.getHeader(name);
System.out.println(name+"="+value);
} }

浏览器上地址栏:http://localhost:8080/RequestAndResponse/requestmethod?name=sunjob&password=123456&password=haha

控制台输出:

    getRequestURL: http://localhost:8080/RequestAndResponse/requestmethod
getRequestURI: /RequestAndResponse/requestmethod
getQueryString: name=sunjob&password=123456&password=haha
getRemoteAddr: 127.0.0.1
getRemoteHost: 127.0.0.1
getRemotePort: 2374
getRemoteUser: null
getLocalAddr: 127.0.0.1
getLocalName: localhost
getLocalPort: 8080
getMethod: GET
-------request.getParamterMap()-------
name=sunjob
password=123456
password=haha
--------request.getHeader()--------
host=localhost:8080
user-agent=Mozilla/5.0 (Windows NT 5.1; rv:17.0) Gecko/20100101 Firefox/17.0
accept=text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
accept-language=zh-cn,en-us;q=0.8,zh;q=0.5,en;q=0.3
accept-encoding=gzip, deflate
connection=keep-alive
cache-control=max-age=0

HttpServletRequest和ServletRequest的区别以及HttpServletRequest对象方法的用法的更多相关文章

  1. HttpServletRequest和ServletRequest的区别.RP

    问题: 请问HttpServletRequest和ServletRequest的区别? 回答: servlet理论上可以处理多种形式的请求响应形式 http只是其中之一 所以HttpServletRe ...

  2. HttpServletRequest和ServletRequest的区别

    servlet理论上可以处理多种形式的请求响应形式,http只是其中之一所以HttpServletRequest HttpServletResponse分别是ServletRequest和Servle ...

  3. HttpServletRequest对象方法的用法(转)

    原文地址:http://blog.csdn.net/xh16319/article/details/8450715 原文作者:ITSTAR 文章太赞,忍不住就想转..... 1. 获得客户机信息    ...

  4. HttpServletRequest对象方法的用法

    1. 获得客户机信息    getRequestURL方法返回客户端发出请求时的完整URL.    getRequestURI方法返回请求行中的资源名部分.    getQueryString 方法返 ...

  5. 几种String对象方法的区别

    1.在String对象方法中,发现.slice()方法和.substring()方法的作用几乎相同,都是根据起始索引返回截取得到的字符串.经过查阅资料和实测得到区别: 正常情况下索引都为正值,返回值为 ...

  6. 二.OC基础--1,对象的存储细节,2,#pragma mark指令,3,函数和对象方法的区别,4,对象和方法之间的关系 ,5.课堂习题

    1,对象的存储细节, 1. 当创建一个对象的时候:Person *p1 = [Person new],做了三件事情: 1,申请堆内存空间: 2,给实例变量初始化: 3,返回所申请空间的首地址; 2. ...

  7. 1.import和include区别 2.NSLog 和printf区别 3.创建对象做的事情 4. 类和对象方法比较 5 匿名对象优缺点 6. 封装 7.作用域范围 8.id和instancetype 9.自定义构造方法规范 10.nil和Nil及NULL、NSNull区别

    1.import和include的区别: import可以防止头文件的重复包含 2.NSLog 和printf的区别: 1,NSLog可以自动换行, 输出调试信息, printf不能. 2,NSLog ...

  8. iOS对象方法和类方法的区别与调用方式

    作为一个iOS程序员初学者,会搞不清楚对象方法和类方法的区别 -(void)duixiangfangfa ; +(void)leifangfa; - 代表实例方法,它在类的一个具体实例范围内执行,也就 ...

  9. js 对象方法、类方法、原型方法的区别;私有属性、公有属性、公有静态属性的区别

    <html> <head> <meta http-equiv="Content-Type" content="text/html; char ...

随机推荐

  1. 深入应用c++11 随书代码

    代码并未在作者github上提供 将书中代码敲至vc 并调试运行 依赖BOOST库 编译环境vs2015 boost1.59 // Client.cpp : 定义控制台应用程序的入口点. // #in ...

  2. const stirng* 类型的指针cp,当cout<<*cp<<endl:会提示没有与之匹配的“<<”运算符

    #include<iostream> #include<cstring> #include<cstdio> #include<cstdlib> usin ...

  3. Java代码实现依赖注入

    http://zhangjunhd.blog.51cto.com/113473/126545 这里将模仿Spring实现一种基于xml配置文件的依赖注入机制.文件中将实现3中注入,一是单值注入,包括i ...

  4. 2018.08.09 bzoj4719: [Noip2016]天天爱跑步(树链剖分)

    传送门 话说开始上文化课之后写题时间好少啊. 这道题将一个人的跑步路线拆成s->lca,lca->t,然后对于第一段上坡路径要经过的点,当前这个人能对它产生贡献当且仅当dep[s]-dep ...

  5. 2018.07.17 洛谷P1368 工艺(最小表示法)

    传送门 好的一道最小表示法的裸板,感觉跑起来贼快(写博客时评测速度洛谷第二),这里简单讲讲最小表示法的实现. 首先我们将数组复制一遍接到原数组队尾,然后维护左右指针分别表示两个即将进行比较的字符串的头 ...

  6. 2018.07.10NOIP模拟 Knapsack(单调队列优化dp)

    Knapsack 题目背景 SOURCE:NOIP2016-RZZ-4 T2 题目描述 有 n 个物品,第 i 个物品的重量为 ai . 设 f(i,j,k,l,m) 为满足以下约束的物品集合数量: ...

  7. arduino一些内容

    arduino 套件使用说明书V1.0.pdf, 步进电机 DHT11 传感器另外一脚要接A0 /* Web client This sketch connects to a website (htt ...

  8. 对于Serializable id类型的数据的测试

    今天编写了一个这样的例子,然后进行了Junit测试,但是发现类型总是不匹配,最后测出如下 public <T> void deleteEntry(Class<T> t, Ser ...

  9. Spring组件扫描 <context:component-scan/>

    目录(?)[-] 总结 使用方式 扫描controller下所以类 扫描符合条件Controller的类推荐 我们在SpringMVC开发项目中,有的用注解和XML配置Bean,这两种都各有自己的优势 ...

  10. ZOJ2478 Encoding 2017-04-18 23:02 43人阅读 评论(0) 收藏

    Encoding Time Limit: 2 Seconds      Memory Limit: 65536 KB Given a string containing only 'A' - 'Z', ...