Servlet

简介

Servlet(Server Applet),全称Java Servlet,未有中文译文。是用Java编写的服务器端程序。其主要功能在于交互式地浏览和修改数据,生成动态Web内容。狭义的Servlet是指 Java语言实现的一个接口,广义的Servlet是指任何实现了这个Servlet接口的类,一般情况下,人们将Servlet理解为后者。

它是运行在web 服务器上火应用服务器上的程序,作为浏览器或客户端和服务器上的数据库或应用程序之间的中间层。

运行机制

Servlet的主要功能在于交互式地浏览和修改数据,生成动态Web内容。这个过程为:

1、客户端发送请求至服务器端;

2、服务器将请求信息发送至Servlet;

3、Servlet生成响应内容并将其传给Server。响应内容动态生成,通常取决于客户端的请求;

4、服务器将响应返回给客户端 ;

生命周期

1、Server创建一个Servlet的实例,也就是调用了init();

2、一个客户端的请求到达Server;

3、Server将请求发送给Serverlet;

4、Serverlet生成对请求的响应;

5、Server激活Servlet的service()方法,传递请求和响应对象作为参数;

    a、service()方法获得关于请求对象的信息,处理请求,访问其他资源,获得需要的信息;

    b、service()方法使用响应对象的方法,将响应传回Server,最终到达客户端。service()方法可能激活其它方法以处理请求,如doGet()或doPost()或程序员自己开发的新的方法;

    c、对于更多的客户端请求,Server创建新的请求和响应对象,仍然激活此Servlet的service()方法,将这两个对象作为参数传递给它。如此重 复以上的循环,但无需再次调用init()方法。一般Servlet只初始化一次   ,当Server不再需要Servlet时(一般当Server关闭时),Server调用Servlet的Destroy()方法。

实例

1. eclipse新建 Dynamic Web Project项目,项目名为test

2. 在src下创建包 test ,test下创建HelloWorld.java 文件,编辑

package test;

//导入java库

import java.io.*;

import javax.servlet.*;

import javax.servlet.http.*;

//扩展HttpServlet类

public cass HelloWorld extends HttpServlet {

    private void init() throws ServletException{
        message = "hello world";

    }

    public void doGet(HttpServleRequest request,HttpServletResponse response)throws ServletException,IOException{

        response.setContentType("text/html");

        PrintWritter out = response.getWriter();

        out.println("

"+message+"

");

    }

    public void destroy(){}

}

3. 在WEB-INF目录下创建文件web.xml,编辑

   

        HelloWorld

        test.HelloWorld

   

   

        HelloWorld

        /HelloWorld

   

4. 启动tomcat服务器,输入http://localhost:8080/test/HelloWorld 查看结果

Servlet 表单数据

GET方法

GET方法向页面请求发送已编码的用户信息。页面和已编码的信息中间用?字符分隔,如

http://www.baidu.com/hello?key1=vlaue1&key2=value2

此方法默认从浏览器向Web服务器传递信息,会产生一个很长的字符串在浏览器地址栏中。请求字符串最多只能有1024个字符。

Servlet用doGet()方法处理这种类型的请求。

POST方法

POST方法打包信息的方式与GET方法基本相同,但不是把信息放到url中,而是把这些信息作为一个单独的消息。消息以标准输出的形式传到后台程序,可以解析和使用这些标准输出。

Servlet使用doPost()方法来处理这种类型的请求。

使用Servlet读取表单数据

getParameter():调用request.getParameter()方法获取表单参数值

getParameterValues():参数出现一次以上,调用该方法

getParameterNames():得到当前请求中的所有参数的完整列表

使用URL的GET方法实例

制作一个简单实例,使用get方法从HTML页面中向HelloWorld程序传递两个值

在之前基础上,在WebContent目录下创建Hello.html,在body中添加以下代码,点击提交,数据从页面流向HelloWorld程序

   

    网址名:   
    网址: 

 

再重新编辑HelloWorld程序

package test;

import java.io.*;

import javax.servlet.*;

import javax.servlet.http.*;

 @WebServlet("/HelloWorld")

public class HelloWorld extends HttpServlet {

    private static final long serialVersionUID = 1L;

/** * @see HttpServlet#HttpServlet() */

public HelloWorld() {

super();

// TODO Auto-generated constructor stub

}    

 /**      * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)      */

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        // 设置响应内容类型

        response.setContentType("text/html;charset=UTF-8");

        PrintWriter out = response.getWriter();

        String title = "使用 GET 方法读取表单数据";

        // 处理中文

        String name =new String(request.getParameter("name").getBytes("ISO8859-1"),"UTF-8");

        String docType = " \n";

        out.println(docType+

            "\n"+

            ""+title+"\n"+

            "\n"+

            "

"+title+"

\n"+

            "

    \n"+

                "

  • 站点名:"+name+"\n"+

                "

  • 网址:"+request.getParameter("url")+"\n"+

                "

\n"+

            "");

 }

         // 处理 POST 方法请求的方法

    public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        doGet(request, response);

    } }

运行tomcat,地址栏输入 http://localhost:8080/test/HelloWorld来验证get 方法实例

你可能感兴趣的:(Servlet)