Servlet 总结

一、了解Servlet的概念

            Servlet定义:Servlet是基于Java技术的Web组件,是WEB应用程序中的一个组件。Servlet是在JSP之前就存在的运行在服务端的一种Java技术。

二、Servlet技术功能

            Servlet通过创建一个框架来扩展服务器的能力,以提供在Web上进行请求和响应的服务。当客户机发送请求至服务器时,服务器可以将请求信息发送给Servlet,并让Servlet建立起服务器返回给客户机的响应

三、 Servlet技术特点(疑问:静态web项目需要java或者说servlet吗?)

             Servlet技术带给程序员最大的优势是它可以处理客户端传来的HTTP请求,并返回一个响应
            1.高效。在服务器上仅有一个Java虚拟机在运行,它的优势在于当多个来自客户端的请求进行访问时Servlet为每个请求分                     配一个线程而不是进程。
            2.方便。Servlet提供了大量的实用工具例程,例如处理HTML表单数据、读取和设置HTTP头、处理Cookie和跟踪会话等。
            3.跨平台。Servlet是用Java类编写的,它可以在不同的操作系统平台和不同的应用服务器平台下运行。
            4.灵活性和可扩展性。采用Servlet开发的Web应用程序,由于Java类的继承性、构造函数等特点,可随意扩展。
            6.共享数据。Servlet之间通过共享数据可以很容易地实现数据库连接池。它能方便地实现管理用户请求,简化Session和获                 取前一页面信息的操作。
             7.安全。有些CGI版本有明显的安全弱点。即使是使用最新的标准和PERL等语言,系统也没有基本安全框架。

四、 Servlet生命周期

            1.init()。当Servlet第一次被装载时,Servlet引擎调用这个Servlet的init()方法,只调用一次。如果某个Sevlet需要特殊的初始化需要。那么Servlet编写人员可以重写该方法来执行初始化任务。这是一个可选的方法。如果某个Servlet不需要初始化,那么默认情况下将调用它父类的init方法。系统保证,在init方法成功完成以前,是不会调用Servlet去处理任何请求的。
       2.service()。这是Servlet最重要的方法,是真正处理请求的地方。对于每个请求,Servlet引擎将调用Servlet的service方法,并把Servlet请求对象和Servlet响应对象最为参数传递给它。
       3.destroy()。这是相对于init的可选方法,当Servlet即将被卸载时由Servlet引擎来调用,这个方法用来清除并释放在init方法中所分配的资源。
            
       (1) Server创建一个Servlet实例
  (2) Server调用Servlet的init方法
  (3) 一个客户端请求到达Server
  (4) Server创建一个请求对象
  (5) Server创建一个响应对象
  (6) Server激活Servlet的service方法,传递请求和响应对象作为参数
  (7) service方法获得关于请求对象的信息,处理请求,访问其他资源,获得需要的信息
  (8) service方法使用响应对象的方法。将响应传回Server,最终到达客户端。Service方法可能激活其他方法以处理请求。如                  doGet,doPost或其他程序员自己开发的方法
  (9) 对于更多的客户端请求,Server创建新的请求和响应对象,仍然激活此servlet的service方法,将这两个对象作为参数传                    递给它,如此重复以上的循环,但无需再次调用init方法,Servlet一般只初始化一次
  (10) 当Server不再需要Servlet时,比如当Server要关闭时,Server调用Servlet的destroy

五、servlet工作过程

       Web服务器在与客户端交互时Servlet的工作过程是:
      
       1.     在客户端对web服务器发出请求
       2.     web服务器接收到请求后将其发送给Servlet
        3.     Servlet容器为此产生一个实例对象并调用ServletAPI中相应的方法来对客户端HTTP请求进行处理,然后将处理的响应结果返回给WEB服务器.
       4.     web服务器将从Servlet实例对象中收到的响应结构发送回客户端.

六 、Servlet与JSP区别

         1、JSP在本质上就是Servlet,但是两者的创建方式不一样.
         2、Servlet完全是JAVA程序代码构成,擅长于流程控制和事务处理,通过Servlet来生成动态网页很不直观.
         3、JSP由HTML代码和JSP标签构成,可以方便地编写动态网页.
               因此在实际应用中采用Servlet来控制业务流程,而采用JSP来生成动态网页.在struts框架中,JSP位于MVC设计模式的视图层,而Servlet位于控制层.
         1、JSP是Servlet技术的扩展,本质上就是Servlet的简易方式。
         2、JSP编译后是“类servlet”。
         3、Servlet和JSP最主要的不同点在于,Servlet的应用逻辑是在Java文件中,并且完全从表示层中的HTML里分离开来。而JSP是Java和HTML组合成一个扩展名为.jsp的文件。
         4、JSP侧重于视图,Servlet主要用于控制逻辑。

七、Servlet代码结构

         该Servlet处理的是get请求,如果读者不理解HTTP,可以把它看成是当用户在浏览器地址栏输入URL、单击Web页面中的链接、提交没有指定method的表单时浏览器所发出的请求
   
       如果要开发一个可以处理HTTP请求的Servlet程序,则肯定要继承HttpServlet类,而且在自定义的Servlet类中还要重写HttpServlet类中提供的doGet()方法。Servlet程序本身也是按照请求和应答的方式进行的,所以在doGet()方法中定义了两个参数,即HttpServletRequest和HttpServletResponse,用来接收和回应用户的请求。

八、 Servlet第一个程序

        新建一个工程,注意选择的类型
             
                             好一后,一直next,或者直接finish
             
                                              新建后的工程目录
              
              鼠标放在src上,右建proporty,新建一个servlet,记得是web下的servlet
             
                                 输入包名和类名
              
                    选择生成的一些方法,不般都不用修改,一直next
              
                             生成后的代码结构

现在我们要来输入个helloworld:
在上面代码加上:
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		response.setContentType("text/html");
		PrintWriter out = response.getWriter();
		out.println("HelloWorld I am Servlet");
	
	}
主目录下必须要有WEB-INF目录,WEB-INF目录下一定有一个符合j2ee标准的web.xml文件,eclipse默认没有生成,myeclipse默认是有生成 的,我们自己新建一个就行了。

选择到它,然后右键,选择proproty

           
新建一个XML,命名为web.xml
           
然后打开新建好的web.xml,内容改成如下:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" 
	xmlns="http://java.sun.com/xml/ns/javaee" 
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
	http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
  <servlet>
     <!-- 类名 -->
    <servlet-name>HelloWorld</servlet-name>
    <!-- 所在的包 -->
    <servlet-class>com.mucfc.chapter0.HelloWorld</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>HelloWorld</servlet-name>
    <!-- 访问的网址 -->
    <url-pattern>/servlet/HelloWorld</url-pattern>
    </servlet-mapping>
</web-app>
接下来就可以运行了:

       注意,eclipse中要先配置好tomcat,配置方法网上有。

        

        

把要运行的web项目add到右边过去就行,然后finsh,就运行了。注意这里我先把之前tomcat给stop了!

然后在浏览器里输入:http://localhost:8080/ServletLeaningChapter0/servlet/HelloWorld

结果:

                      



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱若手握流沙

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值