您的位置:首页 > 其它

Servlet入门实战

2016-09-14 10:56 295 查看
Servlet

什么是Servlet:

Servlet=Server+Applet.Servlet是运行在服务器端的java应用程序,它独立于平台和协议。可以生成动态的web 页面。它是客户端请求和服务器响应的中间层。

Servlet和CGI(公共网关接口)相比的优点:

1.执行效率高:每个Servlet都是一个独立的线程,执行效率比CGI程序效率更高也更稳定;

2.门槛低:Servlet是以java为基础的,只要熟悉java就可以编写Servlet;

3.拥有跨平台的执行能力:因为Java是跨平台的,基于java的Servlet也可以在任何支持java的平台上运行。

Servlet的生命周期:

1. 加载servlet类。Servlet容器在启动时或在客户首次向Servlet发送请求时会自动装载Servlet类。

2. 初始化阶段。Servlet被装载后,Servlet容器创建一个Servlet实例并且调用该Servlet的init()方法进行初始化。在Servlet的整个生命周期内,init()只能被执行一次。

3. 请求响应阶段。请求到达Servlet后,Servlet容器会启动一个新线程,创建特定于这个请求的HttpServletRequest和 HttpServletResponse对象并调用该Servlet的service()方法,由service()方法判断为哪种方式的请求,再调用相 应的doGet()方法或doPost()方法。

4. 销毁阶段。当某个Servlet实例不再被需要时,Servlet容器会调用该Servlet实例的destory()方法释放该Servlet占用的资源。

Servlet只能初始化一次,所以在整个生命周期中只能有一个Servlet对象,多个线程访问的是同一个Servlet对象,会造成线程安全的问题。

Servlet的开发:

1.借助配置文件

1)写一个java 类实现Servlet接口或者继承HttpServlet然后重写里面方法。一般只要重写service。

2)在web.xml里面配置servlet的映射。

Servlet的配置包括Servlet的名字,Servlet的类,初始化参数,启动装入的优先级,Servlet的映射。如:

hello

servlet.HelloServlet

1

hello

/hello

2.注解方式的Servlet的开发步骤:

直接在Servlet打上@WebServlet(““)注解,在双引号中指明和客户端发送的请求对应的请求名;servlet要继承HttpServlet类,重写他的doPost()或者doGet()方法来提供具体的服务。

doPost和doGet的区别:

doPost:通过表单提交的请求,在action属性中指明请求的Servlet,通过表单控件传递数据,参数没有长度限制。

DoGet:在地址栏上传递请求的参数,第一个参数前面写?,后面参数通过&符号连接。整个url长度是有限制的,一般情况下可以支持到4k。

具体的使用方法见第5部分的实例

Servlet中的接口:

(1)请求的接口:ServletRequest,它是HttpServletRequest的父接口。在HttpServletRequest接口中最常用的方法是获取请求中的参数,包括表单中参数的值,客户端使用的通信协议等。接口中的重要方法:

getParameter(String name):获取请求中参数名称为name的值

GetSession():获取和客户端关联的Session,如果没有返回空。Session用来在无状态的HTTP协议下越过多个请求页面来维持状态和识别用户。一个Session可以通过重写url和Cookie来维持。

GetCookie():获取客户端发送的Cookie

setCharacterEncoding(String type):设置请求的字符编码类型( ASCII 、GB2312、Unicode、 UTF-8等)。

(2)响应的接口:ServletResponse,代表了Servlet的响应,它是HttpServletResponse的父接口,HttpServletResponse接口中的一些重要方法:

AddCookie(Cookie cookie):在响应中增加一个Cookie,来记录客户端的状态。

sendRedirect(String location):把响应发送到另一个页面或者Servlet进行相应的处理。

setCharacterEncoding(String type):设置响应的字符编码类型

SetContentType(String type):设置响应的MIME类型

(3)Servlet上下文的相关接口:ServletContext,表示一组共享的资源,提供了访问有关Servlet的环境信息的相关方法。用来为多个用户的Web应用维持一个状态。常用的几个方法:

setAttribute(String name, arg1):在Servlet上下文中设置一个name属性,使arg1表示的对象共享。

GetAttribute(String name):获得ServletContext中设置的名称为name的属性。

RemoveAttribute(String name):将这个属性在ServletContext移除。

(4)协作的接口:RequestDispatcher,将请求转发到另一个Servlet来执行,请求中的数据是共享的。接口的两个方法:

Forward(ServletRequest request,ServletResponse response):把请求转发到服务器中的另一个Servlet或jsp,

Include(ServletRequest request,ServletResponse response):把服务器上的另一个资源包含到响应中。

基于Servlet的分页查询:

必要的信息:

1.满足条件的总的记录数size

2.分页大小pageSize

3.总页数totalPage

4.当前的页码pageNum

1.首先,查询数据库中满足条件的记录总数。根据已知的分页大小,计算经过分页之后的总页数。



2.查询前台选择的页号对应的当前页的记录。



3.在表单中指明请求的Servlet和请求方式,指明请求的页码

4.在Servlet中获取前台传过来的页码,如果是第一次请求这个Servlet,将当前的页码pageNum设置为1。



5.调用dao中的方法,获取这一页中的记录。

6.将总页数、当前页的记录放到Sevlet上下文中,方便在jsp中得到这些数据



7.将请求转到jsp页面。

request.getRequestDispatcher(“index.jsp”).forward(request, response);

8.在jsp中获取设置为共享的数据,借助jstl,返回到客户端。

需要引入jstl核心标签库<%@tagliburi=”http://java.sun.com/jsp/jstl/core”prefix=”c”%>

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  servlet web