HttpServletRequest和ServletRequest的区别以及HttpServletRequest对象方法的用法
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对象方法的用法的更多相关文章
- HttpServletRequest和ServletRequest的区别.RP
问题: 请问HttpServletRequest和ServletRequest的区别? 回答: servlet理论上可以处理多种形式的请求响应形式 http只是其中之一 所以HttpServletRe ...
- HttpServletRequest和ServletRequest的区别
servlet理论上可以处理多种形式的请求响应形式,http只是其中之一所以HttpServletRequest HttpServletResponse分别是ServletRequest和Servle ...
- HttpServletRequest对象方法的用法(转)
原文地址:http://blog.csdn.net/xh16319/article/details/8450715 原文作者:ITSTAR 文章太赞,忍不住就想转..... 1. 获得客户机信息 ...
- HttpServletRequest对象方法的用法
1. 获得客户机信息 getRequestURL方法返回客户端发出请求时的完整URL. getRequestURI方法返回请求行中的资源名部分. getQueryString 方法返 ...
- 几种String对象方法的区别
1.在String对象方法中,发现.slice()方法和.substring()方法的作用几乎相同,都是根据起始索引返回截取得到的字符串.经过查阅资料和实测得到区别: 正常情况下索引都为正值,返回值为 ...
- 二.OC基础--1,对象的存储细节,2,#pragma mark指令,3,函数和对象方法的区别,4,对象和方法之间的关系 ,5.课堂习题
1,对象的存储细节, 1. 当创建一个对象的时候:Person *p1 = [Person new],做了三件事情: 1,申请堆内存空间: 2,给实例变量初始化: 3,返回所申请空间的首地址; 2. ...
- 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 ...
- iOS对象方法和类方法的区别与调用方式
作为一个iOS程序员初学者,会搞不清楚对象方法和类方法的区别 -(void)duixiangfangfa ; +(void)leifangfa; - 代表实例方法,它在类的一个具体实例范围内执行,也就 ...
- js 对象方法、类方法、原型方法的区别;私有属性、公有属性、公有静态属性的区别
<html> <head> <meta http-equiv="Content-Type" content="text/html; char ...
随机推荐
- 为什么大神的UI设计那么高级?答案尽在此文…
对于每个网页设计师而言,在设计过程中总会碰到需要作出设计决策的时候.也许你的公司并没有全职设计师,而需求上则要求设计出全新的UI:又或者你正在制作一个你自己的个人项目,而你希望它比 Bootstrap ...
- MyIocp 测试截图
根据 小猪的网络教程 学习了 IOCP 并且自己写了一个命令行版本的 客户端测试还是使用的小猪的代码 有兴趣学习IOCP的 建议去小猪的空间看看 代码思路都讲解的很清楚 推荐 http://blog. ...
- 通过命令更新git for windows
git update-git-for-windows 参考: https://github.com/PanJiaChen/vue-element-admin/issues/24 https://sta ...
- ubuntu 'yuan' update
# tsinghua university deb http://mirrors.aliyun.com/ubuntu/ trusty main restricted universe multiv ...
- 简单的socket编程
1.socket 服务器搭建 实例化socket服务器,循环获取请求 package com.orange.util; import java.io.IOException; import java. ...
- flac3d自定义变量输出云图
定义单元体能量为微单元体的应变比能,即当应力和应变满足线性关系时,微单元体在三向应力状态下的应变比能为: (3.1) 下面代码为用户自定义云图显示变量. Flac3d Code new gen zon ...
- android Qzone的App热补丁热修复技术
转自:https://mp.weixin.qq.com/s?__biz=MzI1MTA1MzM2Nw==&mid=400118620&idx=1&sn=b4fdd5055731 ...
- knowledge_map 修改笔记
20150110 knowledge_map修改的地方: 1.dialog的调整.把结构图中的dialog(另存,新建知识点)调整到全局中(我的列表,knowledge_map_js_showKnow ...
- 二:nodejs+express+redis+bootstrap table+jquery UI
介绍:做一个量化投资的实时系统. 综合: 添加记录,顺序改变的话,refresh之后,能正常刷新吗?可以正常刷新,只是顺序又变回去. express中用fs readfile 时,需要用path.jo ...
- Fig723.asy
import settings; outformat="pdf"; tex="xelatex"; usepackage("amsmath") ...