Servlet-----1 Servlet的开发

来源:互联网 发布:怎么进入淘宝图片空间 编辑:程序博客网 时间:2024/06/10 05:00

JSP的本质就是Servlet,Servlet被称为服务器端小程序,是运行在服务器端的程序,用于处理及响应客户端的请求.

MVC规范出现后,Servlet的责任开始明确下来,仅作为控制器使用,不再需要生成页面标签,也不再作为视图层角色使用.

Servlt是特殊的java类,必须继承HttpServlet.提供了不同的方法用于响应客户端的请求:
    doGet:    用于响应客户端的响应GET请求
    doPost:   用于响应客户端的响应POST请求
    doPut:    用于响应客户端的PUT请求
    doDelete: 用于响应客户端的DELETE请求

    客户端的请求通常只有GET和POST两种,Servlet为了响应这两种请求,必须重写doGet() doPost()方法; 如果为了响应4种请求方式,则需要同时重写响应的4个方法    .
    大部分时候,Servlet对于所有请求的响应都是完全一样的,只需重写service()方法即可响应客户端所有的请求.
HttpServlet还包含两个方法:
    init(ServletConfig config);创建Servlet实例时,调用该方法的初始化Servlet资源.
    destroy();   销毁Servlet实例时,自动调用该方法的回收资源.
    通常无需重写init() 和destroy() 方法.除非需要在初始化Servlet时,完成某些资源初始化的方法,才考虑重写init方法.如果要在销毁Servlet之前,先完成某些资源的回收,比如关闭数据库连接等,才考虑重写destroy方法.
    不用为Servlet类编写构造器,如果需要对Servlet执行初始化操作,应将初始化操作放在Servlet的init()方法中定义.
    如果重写了init()方法,应在重写该方法的第一行调用 super.init(config),用来调用HttpServlet的init方法.

package com.sjbzl.servlet;import java.io.IOException;import java.io.PrintStream;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;/** * Servlet implementation class FirstServlet */@WebServlet("/FirstServlet")public class FirstServlet extends HttpServlet {private static final long serialVersionUID = 1L;@Overrideprotected void service(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {// 设置编码request.setCharacterEncoding("UTF-8");response.setContentType("text/html;charSet=UTF-8");// 获取请求参数值String name = request.getParameter("name");String gender = request.getParameter("gender");String[] color = request.getParameterValues("color");String national = request.getParameter("country");// 获取页面输出流PrintStream out = new PrintStream(response.getOutputStream());//PrintWriter writer = response.getWriter();// 输出out.println("<html>");out.println("<head>");out.println("<title>Servlet</title>");out.println("</head>");out.println("<body>");out.println("名字:" + name + "<hr />");out.println("性别:" + gender + "<hr />");out.println("颜色:");for (String c : color)out.print(c + " ");out.println("<hr />");out.print("国家:" + national);out.print("</body>");out.println("</html>");}}
java类继承HttpServlet,表明它可以作为一个Servlet使用.该Servlet与http://blog.csdn.net/sjbzl/article/details/53993739 中 的request1.jsp页面效果相同,通过HttpRequest获取客户端的form请求参数,并显示请求参数的值.

    Servlet和Jsp的区别在于:

    Servlet中没有内置对象,原来JSP中的内置对象都必须有程序显式创建.


    对于静态的HTML标签,Servlet都必须使用页面输出流逐行输出.


     JSP脚本由JSP容器完成嵌入一个类中,使用JSP只需要完成需要输出到客户端的内容.


    Servler则是个完整的java类,service()方法用于生成对客户端的响应.


    普通Servlet类的service()方法的作用等同于JSP生成Servlet类的 _jspService()方法.


    原JSP页面的脚本,静态HTML内容,在普通Servlet里应该转换成service()方法的代码或输出语句;


    原JSP声明中的内容,对应为在Srvlet中定义的成员变量或成员方法;

0 0
原创粉丝点击