J2EE——Servlet

对于Servlet,并不陌生,因为在学习Ajax,王新奎老师的视频中每个例子都涉及到了。所以理解起来不是很困难。保持以往的博客特点——废话不多说,直接进主题。


1,什么是Servlet?

(1)是服务器端执行的用于响应客户端请求的Java.

(2)是嵌入了Html内容的java;

——即,Servlet是一个用Java编写的应用程序,在服务器上运行,处理客户端发送的请求,并将处理结果发送到客户端;

Servlet的客户端可以提出请求并获得该请求你的响应,他可以是任何java应用程序、浏览器或任何设备;

对于所有的客户端请求,只需要创建Servlet的实例一次,因此节省了大量的内存;

Servlet在初始化后即驻留在内存中,因此每次做出请求时无需加载.


 

2,Servlet生命周期

是指创建Servlet实例之后其存在的时间以及何时消失;

主要包括:实例化初始化请求处理以及销毁几个阶段

1)第一次Servlet请求到达时,由Servlet容器实例化Servlet

2)实例化成功后,调用其init()方法初始化Servlet

3)对每个客户端请求,Servlet容器都在不同的线程体内形成对应的requestresponse对象,并通过Servletservice()方法间接调用doPos()doGet()方法;

4)当容器决定移除Servlet时调用其destroy()方法,并释放Servlet实例对象;


 

生命周期的3个方法:


 

init():Servlet实例化时调用此方法;

service():客户请求和响应调用此方法;

destroy():释放内存、关闭Web服务器调用此方法;

 


 

3,Servlet框架的两个java

Servlet框架是由两个java包组成:javax.servletjavax.servlet.http;

(1)javax.servlet:包中定义了所有的servlet类都必须实现的接口和类(Http协议无关的一般性servlet)


 

(2)javax.servlet.http包:包中定义了采用Http协议通信的HttpServlet(增加了与Http协议有关的功能)


(:所有Servlet都必须实现javax.servlet.Servlet接口,但是通常我们都会从javax.servlet.GenericServletjavax.servlet.http.HttpServlet择一来实现。如果写的Servlet代码和HTTP协议无关,那么必须继承GenericServlet类;若有关,就必须继承HttpServlet类。)

 

<1>介绍此包(javax.servlet.http)中的HttpServlet类中提供的doGet()doPost()方法:

public voiddoGet(HttpservletRequest req,HttpServletResponse res):处理客户端做出的Get请求;

Publicvoid doPost(HttpservletRequest req,HttpServletResponse res):

处理客户端做出的Post请求;

(:当请求到来时,service()方法决定请求的类型(GETPOSTHEADOPTIONSDELETEPUTTRACE),并把请求分发给相应的处理方法(doGet()doPost()doHead()doOptions()doDelete()doPut()doTrace())每个do方法具有和第一个service()相同的形式。我们常用的就是doGet()doPost()方法,为了响应特定类型的HTTP请求,我们必须重载相应的do方法。如果Servlet收到一个HTTP请求而你没有重载相应的do方法,它就返回一个说明此方法对本资源不可用的标准HTTP错误。 

)

 

4,实例

NetBeans下新建项目名称为Servlet:


创建一个servlet——HelloWordServlet.java

import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet(urlPatterns = {"/HelloWordServlet"})
public class HelloWordServlet extends HttpServlet {

    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        //设定内容类型为Html网页Utf-8编码
        response.setContentType("text/html;charset=UTF-8");
        
        //输出页面
        PrintWriter out = response.getWriter();
        try {
            out.println("<!DOCTYPE html>");
            out.println("<html>");
            out.println("<head>");
            out.println("<title>Servlet HelloWordServlet</title>");            
            out.println("</head>");
            out.println("<body>");
            out.println(" HelloWordServlet,我是韩学敏" );
            out.println("</body>");
            out.println("</html>");
        } finally {            
            out.close();
        }
    }

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        //调用processRequest()函数
        processRequest(request, response);
    }


Web.xml中的配置:

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
    <servlet>
        <!--servlet名字-->
        <servlet-name>HelloWordServlet</servlet-name>
        <!--所要调用的java类-->
        <servlet-class>HelloWordServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <!--servlet名字-->
        <servlet-name>HelloWordServlet</servlet-name>
        <!--url连接,在这里,我们设置的是“/HelloWordServlet”。这里的Servlet名字必须和上面的<servlet>标签中的<servlet-name>的值一致-->       
        <!--当我们的页面中设定的连接和<url-pattern>中设定的值一致时,则会通过<servlet-name>找到对应Servlet类来运行。
        这里,当页面的连接(a标签或form设定的action)是“/HelloWordServlet”时,则会通过Servlet的名字“HelloWordServlet”
        来找到对应的Servlet类“HelloWordServlet”来运行-->      
        <url-pattern>/HelloWordServlet</url-pattern>
    </servlet-mapping>
    <session-config>
        <session-timeout>
            30
        </session-timeout>
    </session-config>
</web-app>


运行结果:


以上代码中不多做解释,结合前面的基础知识和代码中的注释,相信很容易理解;

 

5,总结:

 (1)了解什么是Servlet;

 (2)了解Servlet框架中的两个java,及包中的接口和类的应用;

 (3)Servlet的生命周期

 (4)基本应用

评论 23
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值