JavaWeb1
JavaWeb
HTTP:是一种超文本传送协议,是一套计算机在网络中通信的一种规则。
是一种无状态的协议。
过程:客户端向服务器发送一个请求,然后Web服务器返回一个响应,之后连接关闭。这是 请求响应模型。
Web服务器的缺陷:
只能向客户端提供静态网页内容,解决方案:在运行的Web服务软件的Web服务器主机上增加一个辅助应用,这个辅助应用负责生成动态页面,并且能与Web服务器软件通讯。
最早的解决方案CGI:
通用网关接口,每次请求一个CGI资源,将在服务器创建一个新的进程,严重消耗服务器资源,极大的限制了一个服务器可以支持多个用户的数量。容易受到攻击,如;爆吧这些。
Java的解决方案:
1.Servlet:一套规范也是一个类
2.Web容器:Servlet类中,没有main()方法,Web容器就是负责管理和运行Servlet
3.处理过程:客户端发起一个HTTP请求——HTTP请求被服务器接收——服务器移交给Web
,Web容器在主机起一个进程,Web根据Servlet的配置问确定调用,处理完返回给容器,在返回给客户端。
JavaWeb应用程序的组成:
配置文件,静态文件盒JSP,类文件和包。结构如下:
项目名称——{页面文件,WEB-INF{1.classes 2.lib 3.web.xml}}
发布WEB应用:
部署:打包:jar –cvf 项目名称.war *
配置web.xml文件:
<web-app>
<servlet>
<servlet-name>StudentServlet</servlet-name>
<servlet-class>com.lovo.servlet.StudentServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>StudentServlet</servlet-name>
<url-pattern>/ StudentServlet </url-pattern>
</servlet-mapping>
</web-app>
Servlet生命周期:1类加载 2实例化3 调用init()方法,4等待用户访问
5 调用destroy方法实现对象销毁
一个Servlet必须有3个名称:一个是Servlet的名称,一个Servlet类的完整名称,一个是映射的逻辑名称:1.精确模式匹配/ 2.扩展名匹配* 3路径映射 4默认
使用Servlet处理HTTP响应:
发送服务端响应信息:
状态行:1版本2响应码 5类:100-199 信息性,请求正在进行;200-299 ;客户请求成功
300-399:指示新的地址 400-499:客户端引发错误 500-599:服务器引发错误3响应描述
响应头:键值对,键可以重复
空行:
消息体:普通文本,二进制
HttpServletResponse对象负责将信息返回给客户端
HttpServletResponse对象只产生一个空的HTTP响应
传回自定义的内容需要使用getWriter()或者getOutputStream()方法
传送普通文本
传送二进制内容
设置请求重定向:
使用sendRedirect方法实现重定向
两次请求。第一次请求,响应后返回一个地址,再次调过去,再响应
使用Servlet处理HTTP请求:
接收服务器端请求信息;
请求行:HTTP方法,请求的URL,HTTP版本
请求头:
空行:
消息体:
GET/POST提交方法:
浏览器向Web服务器发送HPPT请求:
1用户在网页上点击一个超链接
2用户提交在网页上填写好的表单
3用户在浏览器地址栏输入URL地址并回车
特征 |
Get方法 |
Post方法 |
提交数据类型 |
文本 |
文本,二进制 |
提交数据长度 |
不超过255 |
没有限制 |
提交数据可见性 |
一部分显示在浏览器地址栏 |
不可见 |
提交数据缓存 |
缓存在浏览器URL历史状态中 |
不会被缓存 |
什么时候使用post:1发送大数据的时候2 上传文件时 3发送用户名。密码或者其他保密信息的是时候使用
只有from有method属性;
HttpServletRequest对象的如下方法访问
getHeader(name):返回指定的请求头的值
getHeaders(name) :返回一个Enumeration(枚举)包含请求头中的所有值
getHeaderNames():特定请求中接受到的所有请求头的名称
getIntHeader(name):获取特定请求头的值,并将其转化为int类型
getDateHeader(name):获取特定请求头的值,并将其转化为Date类型
getParameter()根据键和值
RequestDispatcher对象可以实现请求转发
Include()方法包含。只是暂时的包控制权移交
Forward() 方法跳转。执行权完全移交
重定向和请求派发之间最大的区别在于,重定向让客户端浏览器来完成,而请求派发是在服务器端做工作
JavaWeb
HTTP:是一种超文本传送协议,是一套计算机在网络中通信的一种规则。
是一种无状态的协议。
过程:客户端向服务器发送一个请求,然后Web服务器返回一个响应,之后连接关闭。这是 请求响应模型。
Web服务器的缺陷:
只能向客户端提供静态网页内容,解决方案:在运行的Web服务软件的Web服务器主机上增加一个辅助应用,这个辅助应用负责生成动态页面,并且能与Web服务器软件通讯。
最早的解决方案CGI:
通用网关接口,每次请求一个CGI资源,将在服务器创建一个新的进程,严重消耗服务器资源,极大的限制了一个服务器可以支持多个用户的数量。容易受到攻击,如;爆吧这些。
Java的解决方案:
1.Servlet:一套规范也是一个类
2.Web容器:Servlet类中,没有main()方法,Web容器就是负责管理和运行Servlet
3.处理过程:客户端发起一个HTTP请求——HTTP请求被服务器接收——服务器移交给Web
,Web容器在主机起一个进程,Web根据Servlet的配置问确定调用,处理完返回给容器,在返回给客户端。
JavaWeb应用程序的组成:
配置文件,静态文件盒JSP,类文件和包。结构如下:
项目名称——{页面文件,WEB-INF{1.classes 2.lib 3.web.xml}}
发布WEB应用:
部署:打包:jar –cvf 项目名称.war *
配置web.xml文件:
<web-app>
<servlet>
<servlet-name>StudentServlet</servlet-name>
<servlet-class>com.lovo.servlet.StudentServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>StudentServlet</servlet-name>
<url-pattern>/ StudentServlet </url-pattern>
</servlet-mapping>
</web-app>
Servlet生命周期:1类加载 2实例化3 调用init()方法,4等待用户访问
5 调用destroy方法实现对象销毁
一个Servlet必须有3个名称:一个是Servlet的名称,一个Servlet类的完整名称,一个是映射的逻辑名称:1.精确模式匹配/ 2.扩展名匹配* 3路径映射 4默认
使用Servlet处理HTTP响应:
发送服务端响应信息:
状态行:1版本2响应码 5类:100-199 信息性,请求正在进行;200-299 ;客户请求成功
300-399:指示新的地址 400-499:客户端引发错误 500-599:服务器引发错误3响应描述
响应头:键值对,键可以重复
空行:
消息体:普通文本,二进制
HttpServletResponse对象负责将信息返回给客户端
HttpServletResponse对象只产生一个空的HTTP响应
传回自定义的内容需要使用getWriter()或者getOutputStream()方法
传送普通文本
传送二进制内容
设置请求重定向:
使用sendRedirect方法实现重定向
两次请求。第一次请求,响应后返回一个地址,再次调过去,再响应
使用Servlet处理HTTP请求:
接收服务器端请求信息;
请求行:HTTP方法,请求的URL,HTTP版本
请求头:
空行:
消息体:
GET/POST提交方法:
浏览器向Web服务器发送HPPT请求:
1用户在网页上点击一个超链接
2用户提交在网页上填写好的表单
3用户在浏览器地址栏输入URL地址并回车
特征 |
Get方法 |
Post方法 |
提交数据类型 |
文本 |
文本,二进制 |
提交数据长度 |
不超过255 |
没有限制 |
提交数据可见性 |
一部分显示在浏览器地址栏 |
不可见 |
提交数据缓存 |
缓存在浏览器URL历史状态中 |
不会被缓存 |
什么时候使用post:1发送大数据的时候2 上传文件时 3发送用户名。密码或者其他保密信息的是时候使用
只有from有method属性;
HttpServletRequest对象的如下方法访问
getHeader(name):返回指定的请求头的值
getHeaders(name) :返回一个Enumeration(枚举)包含请求头中的所有值
getHeaderNames():特定请求中接受到的所有请求头的名称
getIntHeader(name):获取特定请求头的值,并将其转化为int类型
getDateHeader(name):获取特定请求头的值,并将其转化为Date类型
getParameter()根据键和值
RequestDispatcher对象可以实现请求转发
Include()方法包含。只是暂时的包控制权移交
Forward() 方法跳转。执行权完全移交
重定向和请求派发之间最大的区别在于,重定向让客户端浏览器来完成,而请求派发是在服务器端做工作