Servlet 技术

什么是Servlet?

        Servlet是java语言类,用来拓展通过请求响应模式的服务端的能力。尽管servlets可以响应任何类型的响应,它们通常用于拓展基于Web的应用程序。在这种应用程序中,Java servlet技术定义了特定的HTTP servlet类。

        Servlet通常运行在多线程服务器上,因此应该了解到Servlet必须处理并发请求并且要小心翼翼地同步对共享资源的访问。共享资源一般包括内存数据(比如实例或者类变量)和外部对象(比如文件、数据库连接和网络连接)。

        当然我在这里主要讨论的是产生响应HTTP请求的Servlets。说到这里就不得不说一个很重要类HttpServlet,上文也提到了,它提供了将要被子类化以创建适用于Web站点的HttpServlet的抽象类,其子类至少必须重写一个方法,该方法通常是诸如doGet、doPost、doDelete等方法。

        可能说了这么多,还是对Servlet的作用不是很清楚,也许使用图可以帮助大家更好的理解Servlet。如下图所示

        从上图中我们可以看到,Servlet就是一个运行在Web服务器中的小型Java程序,它通常通过Http协议接收和响应来自Web客户端的请求。那么如何应用Servlet技术呢?请接着看代码实例。

        怎么用Servlet?

        对于客户端,我们使用html页面来模拟,对于服务器端我们编写一个简单的Servlet程序,用于处理网页发送过来的请求。具体代码如下;

        login.html

[html]  view plain copy
  1. <!DOCTYPE html>  
  2. <html>  
  3.     <head>  
  4.         <meta charset="utf-8" />  
  5.         <title>登录</title>  
  6.         <body>  
  7.             <form action="http://lochost:8080/test_servlet/loginServlet">  
  8.                 账号:<input type="text" name="username"><br>  
  9.                 密码:<input type="text" name="password"><br>  
  10.                 <input type="submit" value="登录">  
  11.             </form>  
  12.         </body>  
  13.     </head>  
  14. </html>  

        LoginServlet,java代码     

[java]  view plain copy
  1. import java.io.*;  
  2. import java.servlet.*;  
  3. import javax.servlet.http.*;  
  4.   
  5. public class LoginServlet extends HttpServlet{  
  6.       
  7.     public void doGet(HttpServletRequest request,HttpServletResponse response)  
  8.                 throws ServletException,IOException{  
  9.                       
  10.         String username = request.getParameter("username");  
  11.         String password = request.getParameter("password");  
  12.           
  13.         System.out.println("username" + username);  
  14.         System.out.println("password" + password);  
  15.           
  16.         response.setContentType("text/html;charset=GB18030");  
  17.           
  18.         response.getWriter().println("登陆成功!!");  
  19.           
  20.     }  
  21. }  

        web.xml代码     

[html]  view plain copy
  1. <?xml version="1.0" encoding="ISO-8859-1"?>  
  2.   
  3. <web-app xmlns="http://java.sun.com/xml/ns/javaee"  
  4.   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  5.   xsi:schemaLocation="http://java.sun.com/xml/ns/javaee  
  6.                       http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"  
  7.   version="3.0"  
  8.   metadata-complete="true">  
  9.   
  10.     <servlet>  
  11.         <servlet-name>MyServlet</servlet-name>  
  12.         <servlet-class>LoginServlet</servlet-class>  
  13.     </servlet>  
  14.     <servlet-mapping>  
  15.         <servlet-name>MyServlet</servlet-name>  
  16.         <url-pattern>/loginServlet</url-pattern>  
  17.     </servlet-mapping>  
  18. </web-app>  

        那么这个Servlet程序具体的执行流程是什么样的,下面的时序图可以帮助大家更好的理解

        

        从上图可以看出,Servlet从客户端接收用户数据,在自己内部或者是调用外部程序进行处理,将处理结果发送回客户端,从而完成了用户和系统的交互,就这么简单。

        小结一下:

        服务器上需要一些程序,常常是根据用户输入访问数据库的程序。这些通常是使用公共网关接口(Common Gateway Interface,CGI)应用程序完成的。然而,在服务器上运行 Java,这种程序可使用 Java 编程语言实现。在通信量大的服务器上,JavaServlet 的优点在于它们的执行速度更快于 CGI 程序。各个用户请求被激活成单个程序中的一个线程,而无需创建单独的进程,这意味着服务器端处理请求的系统开销将明显降低。

        相比较而言,Servlet更胜于CGI,主要体现在便利性,功能强大,可移植性好,仅需要很少的投入,比较便宜。不过Servlet也有其自己不足,那就是它输出HTML语句还是采用老的CGI方式,一句一句的输出,因此编写和修改HTML非常的麻烦。之后出现的JSP和JSP + Bean等技术,其速度方便都比Servlet要强,所以现在Servlet可能用的比较少了。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值