Servlet介绍

         JSP的本质就是Servlet,我们将编号的JSP部署到Web容器中,Web容器会将JSP编译成对应的Servlet。直接使用Servlet的坏处:Servlet的开发效率低,当使用Servlet生成表现层页面时,页面中所有的HTML标签,都需要采用Servlet的输出流来输出,非常麻烦。现在的Servlet责任主要是作为控制器使用,不再用来生成页面标签,不充当视图角色。
          Servlet是特殊的java类,这个类必须继承HttpServlet,每个 Servlet可以响应客户端的请求。 Servlet提供不同的方法用于响应客户端请求。
  • doGet:用于响应客户端的GET请求。
  • doPost:用于响应客户端的POST请求。
  • doPut:用于响应客户端的PUT请求。
  • doDelete:用于响应客户端的DELETE请求。

        常用的就是GET和POST两种,Servlet为了响应这两两种请求,必须重写doGet()和doPost()方法。大部分时候, Servlet对于所有请求的响应都是一样的,这时可以采用重写service()方法来响应客户端的所有请求。另外,HttpServlet还包含两个方法。
  • init(ServletConfig config):创建Servlet实例时,调用该方法的初始化Servlet资源。
  • destroy():销毁Servlet实例时,自动调用该方法的回收资源。
        
         下面提供一个Servlet的示例,该Servlet将获取表单请求参数,并将请求参数显示给客户端。
   
   
//Servlet必须继承HttpServlet类
@WebServlet(name="firstServlet"
, urlPatterns={"/firstServlet"})
public class FirstServlet extends HttpServlet
{
//客户端的响应方法,使用该方法可以响应客户端所有类型的请求
public void service(HttpServletRequest request,
HttpServletResponse response)
throws ServletException,java.io.IOException
{
//设置解码方式
request.setCharacterEncoding("GBK");
response.setContentType("text/html;charSet=GBK");
//获取name的请求参数值
String name = request.getParameter("name");
//获取gender的请求参数值
String gender = request.getParameter("gender");
//获取color的请求参数值
String[] color = request.getParameterValues("color");
//获取country的请求参数值
String national = request.getParameter("country");
//获取页面输出流
PrintStream out = new PrintStream(response.getOutputStream());
//输出HTML页面标签
out.println("<html>");
out.println("<head>");
out.println("<title>Servlet测试</title>");
out.println("</head>");
out.println("<body>");
//输出请求参数的值:name
out.println("您的名字:" + name + "<hr/>");
//输出请求参数的值:gender
out.println("您的性别:" + gender + "<hr/>");
//输出请求参数的值:color
out.println("您喜欢的颜色:");
for(String c : color)
{
out.println(c + " ");
}
out.println("<hr/>");
out.println("您喜欢的颜色:");
//输出请求参数的值:national
out.println("您来自的国家:" + national + "<hr/>");
out.println("</body>");
out.println("</html>");
}
}
        上面 的Servlet类继承了HttpServlet类, 表明它可作为一个Servlet使用。
         Servlet和JSP的区别在于:
  • Servlet中没有内置对象, 原来JSP中 的内置对象都必须由程序显式创建。
  • 对于静态的HTML标签, Servlet都必续使用页面输出流逐行输出。
        普通Servlet类里的service()方法的作用, 完全等同于JSP生成Servlet类的_jspServlce()方法。 因此原JSP页面的JSP脚本、静态HTML内容, 在普通Servlet里都应该转换成service()方法的代码或输出语句:原JSP声明中的内容, 对应为在Servlet中定义的成员变量或成员方法。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值