http与servlet

一、 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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值