关于Request与Response,你所必须掌握的,都在这儿了
本文承接自
在学习Request和Response之前,你最好先学习Servlet
文章目录
doGet与doPost
Request请求可以分为Get与Post(最常见)
可以把 get 和 post 当作两个不同的行为,两者并没有什么本质区别,底层都是 TCP 连接
get请求用来从服务器上获得资源,而post是用来向服务器提交数据
在前端html文件中,Form标签里的method的属性为get时调用doGet(),为post时调用doPost()
相对路径与绝对路径
相对路径访问servlet
这是配置文件中的servlet:
<servlet-mapping>
<servlet-name>HelloWorld</servlet-name>
<url-pattern>/HELLO</url-pattern>
</servlet-mapping>
在html文件中:以相对路径定义跳转路径
<a href="./HELLO">点击访问Servlet</a>
- 超链接设置为 ./HELLO 代表上一级目录下的HELLO 同理,…/代表退两层
启动Tomcat,访问http://localhost:8081/can.html
点击访问该超链接,路径跳转成功
绝对路径访问Servlet
直接跟浏览器地址栏对应,没什么好说的
<a href="http://localhost:8081/HELLO">点击访问Servlet</a>
缺点:
ip与端口写死了,一旦ip与端口改动,超链接失效,该方式不建议使用
Tomcat请求响应流程
Web服务器收到客户端的http请求,会针对每一次请求,分别**创建一个用于代表请求的request对象、和代表响应的response对象
我们要获取客户机提交过来的数据,只需要找request对象就行了。要向客户机输出数据,只需要找response对象就行了
HttpServletRequest基本功能
ttpServletRequest在JavaWeb中非常重要的一个类。它是Servlet的service()方法的参数之一!所以你必须必须要掌握它!
request的功能可以分为以下几种:
-
封装了请求头数据
-
封装了请求正文数据,如果是GET请求,那么就没有正文
-
request是一个域对象,可以把它当成Map来添加获取数据
-
做请求的转发
获取请求头数据:
String value = request.getHeader("请求头名称")
quest对象可以用来获取请求头数据,当然,这些请求数据都是Tomcat封装到request中去的。我们在service()方法中可以直接来获取相关的方法
其他:
request中还提供了与请求相关的其他方法,有些方法是为了我们更加便捷的方法请求头数据而设计,有些是与请求URL相关的方法
int getContentLength():
获取请求正文的字节数,GET请求没有正文,没有正文返回-1
String getContentType():
获取请求类型,如果请求是GET,那么这个方法返回null;如果是POST请求,那么默认为application/x-www-form-urlencoded(理解为字符串类型),其它类型以后再学;
String getMethod():
返回请求方法,例如:GET
Locale getLocale():
返回当前客户端浏览器支持的Locale。java.util.Locale表示国家和言语,这个东西在国际化中很有用
String getCharacterEncoding():
获取请求编码,如果没有setCharacterEncoding(),那么返回null。表示使用ISO-8859-1编码
void setCharacterEncoding(String code):
设置请求编码,只对正文有效!注意,对于GET而言,没有正文!!!所以此方法只能对POST请求中的参数有效
String getContextPath():
返回项目路径,例如:/项目名称
String getQueryString():
返回请求URL中的参数,例如:name=zhangSan
String getRequestURI():
返回要请求URI路径,例如:/hello/oneServlet
String getServletPath():
返回Servlet路径,例如:/oneServlet
String getSchema():
返回请求协议