JavaWeb之Servlet

本文详细介绍了Servlet的工作原理,从Servlet容器如何响应客户端请求,到Servlet的创建及运行过程,再到Servlet的生命周期方法,包括构造器、init、service和destroy。重点讲述了Servlet在Tomcat中的作用,以及ServletConfig和ServletContext接口的功能。此外,还提到了POST和GET请求的区别。
摘要由CSDN通过智能技术生成

1. Servle容器(Tomcat)t响应客户端请求过程

(1)Servlet容器检查是否创建Servlet对象,如果是转(4)否则转(2)

(2)Servle容器装载并创建Servlet的实例对象,调用该Servlet的构造器;

(3)调用Serlet的init方法;

(4)创建ServletRequest对象和ServletResponse对象,然后调用servcie方法将请求和响应的对象最为参数传递进去;

(5)Web应用程序被停止或重新启动之前,Servlet引擎卸载Servlet,并在卸载之前调用Servlet的destroy方法;

2.Servlet创建以及运行过程

(1)创建实现Servlet接口的实现类

(2)在web.xml配置和映射Servlet。主要配置两个标签:

<servlet>
<servlet-name>Hello</servlet-name>
<servlet-class>test.HelloWorld</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Hello</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>

其中<servlet-name>属性在<servlet>和<servlet-mapping>下保持一致,

servlet下还以配置init-param节点:<init-param><param-name></param-name><param-value></param-value></init-param>但是init-param节点必须在load-on-startup之前

load-on-startup参数可以配置在<servlet></servlet>这个节点中,其值小于零,则在第一次请求时被创建,若为0或者正数,当web应用被Servlet容器加载时创建实例,而且数值越小,越早 被调用。

一个<servlet>可以有多个<servlet-mapping>,换句话说就是可以通过多个url访问同一个servlet类

<url-pattern>中的参数可以使用通配符*,只用一下两种方式是合法的:/*和*.扩展名。

这个过程的本质就是:通过URL的手段来访问Java类。

3.Servlet容器的作用:JSP,Servlet等运行的软件环境

(1)首先Servlet容器(Tomcat)创建Servlet并调用Servlet相关生命周期方法。

(2)JSP,Servlet,Listener,Filter……

4.Servlet的生命周期的方法包括:构造器,init,service,destroy

(1)构造器,只有第一次向Servlet容器发送请求时创建Servlet时调用;

(2)init方法:只被调用一次,在Servlet创建后立即调用;

inti中有一个参数ServletConfig(是接口),这个接口中有:getInitParam(),getServletName(),getServletContext(),getInitParamNames()

ServletContextx可以通过ServletConfig进行获取,ServletContext是Servlet的一个上下文,ServletContext的作用:它可以获取当前web应用的各方面的信息。

2.1)比如<context-param></context-param>它配置的参数可以被多个servlet获取,<servlet-param></servle-paramt>只能被相应的servlet获取

servletContext.getRealPath("文件名");获取文件相对于服务器的路径。

2.2)servletContext.getContextPath()获取当前服务器上的路径。

2.3)获取web服务器某一文件的输入流

(3)service:被多次调用,service中有两个参数一个是ServletRequest和ServletResponse,其中ServletRequest封装了请求信息,因此ServletRequest可以获取请求参数,3.1)String getParameter(String name)方法获取参数的值;

3.2)String[] getParameterValues(String name)获取一组参数的值,例如有checkbox选项时就可以使用该方法;

3.3)Enumeration getParameterNames(String name),返回一个Enumeration对象,l类似于ServletContext的getInitParameterNames(String name),

3.4)Map getParameterMap(string name),注意它的值是String数组类型;

3.5)获取http相关信息使用httpServletRequest,它可以获取任何有关http的信息,用的时候可以查阅API。

ServletResponse封装了响应信息,其中SerletResponse中常用方法如下:

3.6)可以获取Printwriter对象通过getWriter()方法,调用printer方法可以将printer(“1111”)中的字符串打印到浏览器中。

3.7)setContentType(String name)可以设置响应的类型:jsp,html,js,word等。

3.8)获取http相关信息使用httpServletResponse,它可以获取任何有关http的信息,用的时候可以查阅API。其中有一个方法:sendRedirect(String location)用于重定向。


(4)destroy;只调用一次,当前Servlet所在web应用被卸载前调用,释放Servlet所占用的资源;

5.post与get请求的区别:如果向服务器提交数据,post会将数据放在http包中,get方法会将数据放在url的后面

6.Servlet中和attribute相关的方法会在转发和重定向中补充。

7.Servlet的API


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值