WEB第二天下午
HTTP支持的集中数据传输方式
1)GET:获取资源
GET方法用来请求访问已被URL识别的资源
2)POST:传输实体主体
POST方法用来请求服务器传输信息实体的主体
3)PUT:传输文件
PUT要求在请求报文的主体中包含文件内容,然后保存到请求URL指定的位置
处于安全考虑,一般web网站不使用此方法,若配合web的安全验证机制,或者架构采用REST标准的网站,就可能开放使用此方法
4)HEAD:获得报文首部
HEAD和GET方法一样,只不过不返回报文主体部分,用于确认URI的有效性及资源更新的日期时间等
5)DELETE:删除文件
DELETE是与PUT相反的方法,是按请求URI删除指定的资源
处于安全考虑,一般web网站不使用此方法,若配合web的安全验证机制,或者架构采用REST标准的网站,就可能开放使用此方法
6)OPTIONS:询问支持的方法
用来查询针对请求URI指定的资源支持的方法
7)CONNECT:要求采用隧道协议连接代理
该方法要求在于代理服务器通信时建立隧道,实现用隧道协议进行TCP通信,主要使用SSL(安全套接层)和TLS(传输层安全)协议把通信内容加密后经过网络传输。
GET和POST的区别:
- 首先编码不同(只在tomcat8之前不同):get请求在tomcat8之前采用ISO8859-1编码,tomcat8以后get和post都使用了UTF-8编码(即为防止乱码,各页面统一格式采用UTF-8编码 且在重写service或doget/dopost时定义其字符集为utf-8)
- 大小不同:GET是放在URL首部,因此大小随着浏览器而定,而POST则是在报文中,只要没有具体限制,文件的大小是没限制的
- 安全性不同:GET采用的是明文传输,而POST是放在报文内部,无法看到
从使用场景的角度来说,一般像用户注册登录这种信息都是私密的,采用POST,而针对查询等,为了快速,大多采用GET传输。
severlet的生命周期
servlet的生命周期就是从servlet出现到销毁的全过程。主要分为以下几个阶段:
加载类—>实例化(为对象分配空间 只实例化一次)—>初始化(为对象的属性赋值 )—>请求处理(服务阶段)—>销毁
Servlet采用多线程的方式处理请求 每个Servlet只初始化一次
@WebServlet("/EmpServlet")//注解只要在Servlet上设置@WebServlet标注,容器就会自动读取当中的信息。如果请求的URL是“/EmpServlet”,则由EmpServlet的实例提供服务。
public class EmpServlet extends HttpServlet{
public EmpServlet() {
System.out.println(“构造器”);
}
//初始化servlet,调用init方法
@Override
public void init() throws ServletException {
System.out.println(“初始化时调用”);
}
//开启服务
@Override
protected void service(HttpServletRequest arg0, HttpServletResponse arg1) throws ServletException, IOException {
System.out.println(“开启服务时调用”);
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println(“doGet”);
}
//销毁时调用destory
@Override
public void destroy() {
System.out.println("销毁时调用");
}
}
部署在tomcat上后 会在控制台分别显示:构造器, 初始化时调用 ,开启服务时调用 , doGet
当结束tomcat时会在控制台上打出: 销毁时调用
@WebServlet("")和web.xml获取URL
在web.xml文件中配置URL
用来声明一个servlet的数据,主要有以下子元素:
- 指定servlet的名称
- 指定servlet的类名称
<jsp-file></jsp-file>
指定web站台中的某个JSP网页的完整路径<init-param></init-param>
用来定义参数,和前面的<init-param>
差不多
同样,与<servlet></servlet>
一起使用的是<servlet-mapping></servlet-mapping>
用来定义servlet所对应的URL,包含两个子元素:
<servlet-name></servlet-name>
指定servlet的名称<url-pattern></url-pattern>
指定servlet所对应的URL
具体如下
<servlet>
<servlet-name>houzi</servlet-name>
<servlet-class>net.neueu.LifeServlet</servlet-class>
<load-on-startup></load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>houzi</servlet-name>
<url-pattern>/LifeCycleServlet</url-pattern>
</servlet-mapping>
@WebServlet(“URL”)和web.xml获取URL只能有一个 不然会有冲突
在上面的<servlet-mapping>
中我们使用了<url-pattern>/LifeCycleServlet</url-pattern>
url -pattern匹配规则
-精确路径匹配。
/test/HelloServlet(即是路径的全拼)
-最长路径匹配。
/test/a/(处理/test/a目录下的所有请求)
/test/
-扩展匹配。
*.action(例如
/*可以处理所有的请求
访问时a.action 只对请求的后缀进行约束 注意没有"/")
JSP 和 Servlet 的区别
1.jsp经编译后就变成了Servlet.
(JSP的本质就是Servlet,JVM只能识别java的类,不能识别JSP的代码,Web容器将JSP的代码编译成JVM能够识别的java类)
2.jsp更擅长表现于页面显示,servlet更擅长于逻辑控制.
3.Servlet中没有内置对象,Jsp中的内置对象都是必须通过HttpServletRequest对象,HttpServletResponse对象以及HttpServlet对象得到.
Jsp是Servlet的一种简化,使用Jsp只需要完成程序员需要输出到客户端的内容,Jsp中的Java脚本如何镶嵌到一个类中,由Jsp容器完成。
而Servlet则是个完整的Java类,这个类的Service方法用于生成对客户端的响应。