文章目录
一、 http
1.1 http请求数据分析
请求的数据包含三部分内容:
请求行,请求头,请求体
- 请求行
POST:请求方式
HTTP:1.1 协议版本
- 请求头
- Accept : 客户端向服务端表示,我能支持什么样的数据
- Referer : 真正请求的地址路径,全路径
1.2 http响应数据分析
请求的数据包含三部分内容:相应行,相应头,相应体
相应行:
HTTP/1.1 200 ok
1.1表示协议版本
200 表示状态码: 成功,正常处理 ,得到数据
403 :forbidden 拒绝
404 :Not Found
400 :服务器异常
ok 对应前面的状态码
响应头
- Server:服务器是哪一种够类。 如:Tomct
- Content_Type : 服务器返回给客户端的内容的类型
- Content_length : 返回的数据长度
- Date :通讯的日期,相应的事件
1.3 Post请求和Get请求的区别
- 请求路径不同,POST请求在url后面不跟上任何的数据,Get请求,在地址后面跟上数据,所以有安全隐患。
- 带上的数据不同,post请求会使用流的方式写数据
- 由于post请求使用流方式写数据,所以一定需要一个Content-Length的头来说明数据的长度有多少。
- 从服务器获取数据,不提交数据的时候,可以使用Get方式,且Get方式能够带的数据有限,1kb大小。
1.4 web资源介绍
在http协议当中,规定了请求和响应双方,客户端和服务器端。与web相关的资源。
分类:
- 静态资源 (内容不变):html,js,css
- 动态资源 : jsp
1.5 http总结
1.使用httpWatch抓包看一看请求背后的细节
2.基本了解请求和相应数据的内容3
3.get个post的区别
二、Servlet
2.1 Servlet
A servlet is a small Java program thay runs with a Web server,.Servets receive and response to requests form Web clients,usually across hppt.
其实就是一个java程序,运行在我们的web服务器上,用于接收和响应客户端的http请求,更多的是配合动态资源来做。Tomcat其实就是一个Servlet的容器。当然静态资源也需要servlet,只不过是Tomcat里面已经定义好一个DefaultServlet。
2.2 jsp
执行注册,执行登录功能
2.3 servlet的使用
- 写一个web工程,要有一个服务器。将工作空间的编码改为"UTF-8",Windows->Preferences->General->Workspace(新建servlet项目,配好之后,在新建web项目)
- 测试运行web工程
新建一个类,实现Servlet接口
配置Servlet,用意:告诉服务器,我们的应用有这么些个servlet
<servlet>
<servlet-name>demo</servlet-name>
<!-- 路径和类名 -->
<servlet-class>com.text.demo</servlet-class>
</servlet>
<!-- 注册servlet的映射,servlet-name:找到上面注册的具体的servlet,url- -->
<servlet-mapping>
<servlet-name>demo</servlet-name>
<url-pattern>/ads</url-pattern>
</servlet-mapping>
3.在网页的地址栏输入:localhost:8080/项目名/虚拟路径名,就可以看到效果了。
2.4 URL:http://localhost:808/hello/sad
1.找到Tomcat项目
2.找到config文件夹
3.找到web.xml
4.在web.xml里面找到url-patten,找到url-pattern里面的虚拟路径,/内容。
5.找到servle-mapping中servlart-name中的内容
6.然后在servlet中的servlet-name中找到和5中name相同的值
7.然后在servlet-class中找到对应的包下的.java文件,运行该文件。
2.5 html文件
会将写好的html文件放到D:\apache-tomcat-7.0.69\wtpwebapps文件夹中。
2.6 Servlet的通用写法
Servlet(接口)---->GenericServlet—>Httpservlet(用于处理http的请求)
public class demo1 extends HttpServlet{
@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 {
// TODO Auto-generated method stub
super.doGet(req, resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// TODO Auto-generated method stub
super.doPost(req, resp);
}
}
定义一个类,继承HttpServlet这个类,复写doGet()和doPost()这个方法。
2.7 servlet的生命周期
从servlet创建到销毁的时间段。
生命周期的方法
- init()方法
在创建该servlet时,调用该init()方法。一个servlet只会初始化一次。默认情况是,初次访问该servlet,就会创建servlet。- service()方法
只要客户端来了一个请求,就会执行该service()方法。该方法可以被执行很多次。- destory()方法会在servlet销毁时执行。
1.该项目从tomcat里面删除。
2.正常关闭tomcat就会执行。shutdown.bat
2.8 让servlet创建实例的时机提前
1.默认情况下,只有在初次访问servlet的时候,才会执行servlet方法,有时候,我们可能需要在这个方法里面执行一些初始化的工作,甚至是一些比较耗时的逻辑。
2.那么这个时候,初次访问,可能会在init方法中逗留太久的时间。
3.在xml文件里加上参数,给定的参数值越小,启动得越早。
<servlet>
<servlet-name>demo1</servlet-name>
<servlet-class>com.text.demo1</servlet-class>
<load-on-startup>4</load-on-startup>
</servlet>
2.9 ServletConfing
通过这个类,可以获取servlet的一些配置信息。
如下面的方法:
- public String getServletName();
获取xml文件里对应Servlet的名称 - public String getInitParameter(String key);
获取key对应的值 - public Enumeration String getInitparameterNames();
获取xml文件里对应servtlet里的所有参数
while(names.hasMoreElements()){
String name1 = names.nextElement();
System.out.println(name1 + " " + config.getInitParameter(name1));
}
举例:
public class demo4 extends HttpServlet{
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//获取servlet的名称
ServletConfig config = getServletConfig();
String name = config.getServletName();
//获取xml文件里的参数
String string = config.getInitParameter("name");
System.out.println(string);
//获或所有参数的值
Enumeration<String> names = config.getInitParameterNames();
while(names.hasMoreElements()){
String name1 = names.nextElement();
System.out.println(name1 + " " + config.getInitParameter(name1));
}
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// TODO Auto-generated method stub
super.doPost(req, resp);
}
}
2.10 为什么要有ServletConfing?
在使用别人的jar包时,需要加进去一些必要的参数的值,我们不能直接在jar包的源代码里修改,可以借助ServletConfig,在xml里对所需修改的变量进行操作。
2.11 servlet要求
1.会使用简单的servlet
1.1写一个类实现接口servlet
1.2配置servlet
1.3会访问servlet
2.Servlet的生命周期
init 一次创建对象
service 多次,一次请求对应一次service
destroy 一次,销毁的时候,从服务器移除或者正常关闭服务器
3.ServletConfing
获取配置信息,params