1、Servlet
-
定义:ervlet是一种服务器端的Java应用程序,即Java服务器小程序,其是由服务器端调用和执行的、按照Servlet自身规范编写的Java类。
-
特点:
-
1、其实就是一个特殊的java类。
-
2、特殊在能够处理http请求和响应。(处理请求信息并将响应发送到客户端)
-
3、特殊在内嵌了HTML代码。(用内嵌的HTML代码生成HTML页面发送到客户端。)
2、Servlet使用以下两个包中的类和接口:
1、javax.servlet 包含了可以支持通用、跨协议的servlet的类
1、Servlet接口的方法:
init(ServeltConfig config):用于初始化Servlet。
destroy():销毁Servlet。
getServletInfo():获得Servlet的信息。
getServletConfig():获得Servlet配置相关信息。
service(ServletRequest req, ServletResponse res):运行应用程序逻辑的入口点,它接收两个参数,ServletRequest表示客户端请求的信息,ServletResponse表示对客户端的响应。
2、GenericServlet类
3、ServletConfig
在Servlet的初始化中,初始化方法使用ServletConfig对象作为参数,通常这个方法保存这个对象,以便能够有方法getServletConif()返回。
4、Javax.servlet包
ServletException
ServletException包含几个构造方法和一个获得异常原因的方法
getRootCause()其返回造成这个ServletException的原因。
UnavailableException
当Servlet或者Filter暂时或者永久不能使用时,就会抛出这个异常
ServletRequest
代表了Servlet的请求,它是一个高层的接口,HttpServletRequest是它的子接口
ServletResponse
代表了Servlet的响应,它是一个高层的接口,HttpServletResponse是它的子接口
ServletInputStream
Servlet的输入流
ServletOutputStream
Servlet的输出流
ServletContext
Servlet上下文
RequestDispatcher
forward(ServletRequest request,ServletResponse response):把请求转发到服务器上的另一个资源(Servlet、JSP、HTML)。
include(ServletRequest request,ServletResponse response):把服务器上的另一个资源(Se-rvlet、JSP、HTML)包含到响应中。
2、javax.servlet.http 包中的类增加了用于HTTP的功能。每个Servlet都必须实现 javax.servlet.Servlet接口。
HttpServlet类扩展了GenericServlet,提供Servlet接口的HTTP协议的特定实现
doGet:支持Http Get请求
doPost:支持Http Post请求
doPut:支持Http Put请求
doDelete:支持Http Delete请求
init和destroy:管理Servlet占用的资源
getServletInfo:获得Servlet自身的信息
-
HttpServletRequest接口可以获取由客户端传送的参数名称,也可以获取客户端正在使用的通信协议,可以获取产生请求并且接收请求的服务器远端主机名和其IP地址等信息
-
HttpServletResponse代表了对客户端的Http响应。它允许Servlet设置内容长度和回应的MIME类型,并且提供输出流ServletOutputStream
-
HttpSession这个接口被Servlet引擎用来实现Http客户端和Http会话两者之间的关联
3、Servlet体系结构。
- 1、Servlet 该接口主要作用是提供Servlet生命周期的init()、service()和destory()方法。
- 2、GenericServlet 是一种与协议无关的Servlet、提供了service()方法所有接口中方法的缺省实现。
- 3、HttpServlet 该类扩展了GenericServlet、提供Servlet接口的HTTP协议的特定实现。如果Servlet必须遵循HTTP协议,则只能扩展HttpServlet类并覆盖所需的方法。
4、在web.xml 中配置 Servlet。
-
1、命名Servlet,需要用到web-app内servlet元素的servlet-name(可以选取任意名称)和servlet-class(完全限定类名)子元素。
<servlet> <servlet-name>HelloServlet</servlet-name> <servlet-class>com.hejin.helloservlet.servlet.HelloServlet</servlet-class> </servlet>
-
2、要将URL赋予已命名的Servlet,需要使用servlet-mapping元素的servlet-name(之前指定的名称)和url-pattern(URL前缀,由斜杠开始)子元素。
<servlet-mapping> <servlet-name>HelloServlet</servlet-name> <url-pattern>/helloServlet</url-pattern> </servlet-mapping>
-
3、注意: 许多服务器具有“热部署”能力或方法,可以交互式地重启web应用。因此,除非使用服务器专有的特性,否则每次修改完web.xml文件还是要重新启动服务器。
5、Servlet get和post的区别 。
-
1、这两种方法有本质的区别,get只有一个流,参数附加在url后,大小个数有严格限制且只能是字符串。post的参数是通过另外的流传递的,不通过url,所以可以很大,也可以传递二进制数据,如文件的上传。
-
2、在servlet开发中,以doGet()和doPost()分别处理get和post方法。
-
3、另外还有一个service(),它是一个调度方法,当一个请求发生时,首先执行service(),不管是get还是post。也可以直接编写service()方法,这样不管是get还是post。都会执行这个方法。
6、使一个Servlet上同时支持GET和POST。在Servlet的编写中常常遇到在同一个Servlet上需要同时支持GET和POST方法 。
public void doGet(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException{
//----显示Hello,Servlet World!
}
public void doPost(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException{
doGet(req, res);
}
7、Servlet和JSP的关系。
- 1、JSP技术主要用来表现页面 ,Servlet技术主要是用来完成大量的逻辑处理
- 2、JSP本身没有任何的业务处理逻辑,它只是简单地检索Servlet创建的JavaBean或者对象,再将动态的内容插入到预定义的模块中
- 3、Servlet创建JSP需要的JavaBean和对象,再根据用户的行为,决定处理哪个JSP页面并发送给用户
8、Servlet的声明周期。
- Servlet的生命周期包含了下面4个阶段
1、加载和实例化
2、初始化阶段 调用init()方法
3、响应客户请求阶段 调用service()方法
4、终止阶段 调用destroy()方法
- Servlet初始化阶段:
在下列时刻Servlet容器装载Servlet:
1,Servlet容器启动时自动装载某些Servlet,实现它只需要在web.XML文件中的之间添加如下代码:
2,在Servlet容器启动后,客户首次向Servlet发送请求
3,Servlet类文件被更新后,重新装载Servlet
Servlet被装载后,Servlet容器创建一个Servlet实例并且调用Servlet的init()方法进行初始化。在Servlet的整个生命周期内,init()方法只被调用一次。
9、Servlet中接收和响应请求参数时设置编码格式。
1、request.setCharacterEncoding("utf-8");//设置请求参数编码
2、/*response.setCharacterEncoding("utf-8");*///设置响应参数编码
3、response.setContentType("text/html;charset=utf-8");//设置响应内容编码
10、参数的传递。
1、get 提交 url后边直接传。
2、post提交 放在作用域里、传到下一个页面。
网友评论