javaEE http协议
来源:互联网 发布:软件成熟度模型下载 编辑:程序博客网 时间:2024/06/05 04:34
1、http协议
1.1. 概述
- HTTP(hypertext transport protocol),即超文本传输协议。这个协议详细规定了浏览器和万维网服务器之间互相通信的规则。
- 客户端与服务端通信时传输的内容我们称之为报文。
- 客户端发送给服务器的称为”请求报文 request“,服务器发送给客户端的称为”响应报文 response“
1.2. 请求方法
GET 向特定的资源发出请求。注意:GET方法不应当被用于产生“副作用”的操作中。 POST 向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改。 PUT 向指定资源位置上传其最新内容。 DELETE 请求服务器删除Request-URI所标识的资源。 OPTIONS 返回服务器针对特定资源所支持的HTTP请求方法。也可以利用向Web服务器发送'*'的请求来测试服务器的功能性。 HEAD 向服务器索要与GET请求相一致的响应,只不过响应体将不会被返回。这一方法可以在不必传输整个响应内容的情况下,就可以获取包含在响应消息头中的元信息。 TRACE 回显服务器收到的请求,主要用于测试或诊断。 CONNECT HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。
1.3 响应码
- 200:请求成功,浏览器会把响应体内容(通常是html)显示在浏览器中;
- 404:请求的资源没有找到,说明客户端错误的请求了不存在的资源;
- 500:请求资源找到了,但服务器内部出现了错误;
- 302:重定向,当响应码为302时,表示服务器要求浏览器重新再发一个请求,服务器会发送一个响应头Location,它指定了新请求的URL地址;
1.4 协议内容
POST提交的报文
POST /Hello/target.html HTTP/1.1Accept: application/x-ms-application, image/jpeg, application/xaml+xml, image/gif, image/pjpeg, application/x-ms-xbap, */*Referer: http://localhost:8080/Hello/Accept-Language: zh-CNUser-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E)Content-Type: application/x-www-form-urlencodedAccept-Encoding: gzip, deflateHost: localhost:8080Content-Length: 14Connection: Keep-AliveCache-Control: no-cacheCookie: JSESSIONID=774DA38C1B78AE288610D77621590345username=admin
- POST请求是可以有体的,而GET请求不能有请求体。
- Referer: http://localhost:8080/hello/index.jsp:请求来自哪个页面,例如你在百度上点击链接到了这里,那么Referer:http://www.baidu.com;如果你是在浏览器的地址栏中直接输入的地址,那么就没有Referer这个请求头了;
- Content-Type: application/x-www-form-urlencoded:表单的数据类型,说明会使用url格式编码数据;url编码的数据都是以“%”为前缀,后面跟随两位的16进制,例如“传智”这两个字使用UTF-8的url编码用为“%E4%BC%A0%E6%99%BA”;
- Content-Length:13:请求体的长度,这里表示13个字节。
- keyword=hello:请求体内容!hello是在表单中输入的数据,keyword是表单字段的名字。
2、web服务器
2.1. 概述
能够通过该应用发布网络服务的服务器,例如网站发布
2.2. 常用web服务器
- Tomcat(Apache):当前应用最广的JavaWeb服务器;
- JBoss(Redhat红帽):支持JavaEE,应用比较广;
- GlassFish(Orcale):Oracle开发JavaWeb服务器,应用不是很广;
- Resin(Caucho):支持JavaEE,应用越来越广;
- Weblogic(Orcale):要钱的!支持JavaEE,适合大型项目;
- Websphere(IBM):要钱的!支持JavaEE,适合大型项目;
2.3. 下载安装
http://tomcat.apache.org/download-80.cgi
根据你的操作系统的版本来下载对应安装文件,其实就是压缩包,解压到某个目录,就完成安装
2.4. tomcat目录
2.5. tomcat启动,停止
window :
启动startup.bat停止shutdown.bat
linux :
启动startup.sh停止shutdown.sh
2.5. tomcat监听的端口
服务器启动时,默认监听8080,这个端口是可配置的,文件路径在:
conf/server.xml
2.6. tomcat默认访问的应用
例如:http://localhost:8080/后台对应的程序包就是ROOT,如果没有ROOT,就需要使用http://localhost:8080/+具体的应用名称
2.7. 创建和发布动态网页
创建动态网页必要条件
hello (动态网页服务名称) WEB-INF(必须这个名字的目录) web.xml (必须有这个名字的配置文件) index.html
发布
把hello目录copy到webapps目下
一个完整的动态web服务的目录
webapps |- hello |-WEB-INF |-web.xml |-classes |-lib |- index.html
欢迎页面(配置在web.xml)
<welcome-file-list> <welcome-file>hello.html</welcome-file> </welcome-file-list>
3. Servlet
3.1. 编写方式
1.实现Servlet接口
2.继承HttpServlet类
3.2. 编写步骤(实现Servlet接口)
1、实现Servlet接口 需要重写很多方法,最重要的是方法是service方法,是处理我们请求和响应的方法 service方法两个重要的参数ServletRequest req,ServletResponse resp2、实现Servlet所有的方法3、在web.xml配置servlet <servlet> <servlet-name>helloServlet</servlet-name> <servlet-class>servlet.HelloServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>helloServlet</servlet-name> <url-pattern>/helloworld</url-pattern> </servlet-mapping>4、发布工程
3.3. 编写步骤(HttpServlet类)
1、继承HttpServlet类(专门处理http协议的请求和响应) 需要重写两个重要的方法:doGet和doPost doGet和doPost方法两个重要的参数HttpServletRequest req,HttpServletResponse resp2、实现Servlet所有的方法3、在web.xml配置servlet <servlet> <servlet-name>helloServlet</servlet-name> <servlet-class>servlet.HelloServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>helloServlet</servlet-name> <url-pattern>/helloworld</url-pattern> </servlet-mapping>4、发布工程
一般都使用继承HttpServlet的方式。
3.2. ServletConfig和ServletContext
3.2.1. ServletConfig
能够得到servlet的名字以及初始化的参数
能够得到ServletContext
3.2.2. ServletContext
每个应用对应一个ServletContext对象,所有的Servlet实例共享该对象
主要方法:
获取全局初始化参数
getInitParameter
获取服务器真实路径
getRealPath
3.3 HttpServletRequest和HttpServletResponse
3.3.1. HttpServletRequest
request获取和设置参数
1、根据参数名获取值(POST和GET):String 参数值 = request.getParameter("参数名");2、可以向request域设置参数reqeuset.setAttribute("user", user);3、可以从request与获取参数User user = (User)request.getAttribute("user");
问:reqeust.getParameger()和request.getAttribute()的
reqeust.getParameger()返回的stringrequest.getAttribute()返回是Object
服务器转发
request.getRequestDispather(“/转发的地址”).forward(req,resp);
3.3.1. HttpServletResponse
向浏览器输出内容
//通过PrintWriter对象向浏览器端发送响应信息PrintWriter writer = res.getWriter();writer.write("Servlet response");writer.close();//通过OutputStream对象向浏览器端发送响应信息OutputStream out = res.getOutputStream();out.write("html内容".getBytes());out.close();
重定向:
response.sendRedirect("/重定向的地址");
问:服务器转发和重定向的区别:
3.4 请求和响应乱码
3.4.1 请求乱码
1、可以在servlet里设置请求的编码格式(针对POST)req.setCharacterEncoding("utf-8");2、如果GET方式乱码GET请求:GET请求参数是在地址后面的。不能使用上述方法。我们需要修改tomcat的配置文件。需要在Server.xml文件修改Connector标签,添加URIEncoding="utf-8"属性。
3.4.2 响应乱码
解决方法:response.setContentType("text/html;charset=utf-8");或者使用这两句组合:response.setCharacterEncoding("utf-8")response.setHeader("Content-Type", "text/html;charset=utf-8"); 我们一般使用response.setContentType("text/html;charset=utf-8");
阅读全文
1 0
- javaEE http协议
- JavaEE学习02--HTTP协议
- 【我的javaEE学习】HTTP协议学习
- (7)JavaEE之web开发简介,Http协议
- javaee学习之路(三)HTTP协议学习
- JavaEE 要懂的小事:一、图解Http协议
- JavaEE实战——Tomcat、web程序结构、Http协议、HttpUrlConnection
- 【JavaEE学习笔记】Web服务器_Tomcat,http协议
- javaEE:day2-Http头协议(doget/dopost)、转发与重定向、gzip压缩
- HTTP协议
- http协议
- HTTP协议
- HTTP协议
- HTTP协议
- http协议
- HTTP协议
- HTTP协议
- HTTP协议。。。
- python算法和数据结构笔记--递归--二分查找
- Chapter 5
- 在mfc中使用cef实现webkit的浏览器(二)-修改项目属性
- Smartupload 实现文件的上传与下载
- 重建二叉树
- javaEE http协议
- 3分钟傻瓜式反编译一个APP
- Chapter 5
- spring boot 集成EHCache
- jsday07补充(表格按年龄 排序 逆序 间隔行切换颜色 还有鼠标互动 统一概念)
- 寻找缺失的数-LintCode
- Git 和 SVN 之间的基本区别
- hibernate--一对一联合主键外键关联
- js的简单实用(1)