JSP的本质就是Servlet,Servlet被称为服务器端小程序,是运行在服务器端的程序,用于处理及响应客户端的请求.
MVC规范出现后,Servlet的责任开始明确下来,仅作为控制器使用,不再需要生成页面标签,也不再作为视图层角色使用.
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声明中的内容,对应为在Srvlet中定义的成员变量或成员方法;