Servlet-----1 Servlet的开发

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;

	@Override
	protected 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中定义的成员变量或成员方法;

猜你喜欢

转载自blog.csdn.net/sjbzl/article/details/54023446
今日推荐