Servlet简介

来源:互联网 发布:day one mac 破解版 编辑:程序博客网 时间:2024/06/08 14:43

    一.Servlet是什么?

      1.Servlet是sun公司提供的一门用java语言开发动态web资源的技术。

      2.Sun公司在其API中提供了一个servlet接口,用户若想使用Java程序开发一个动态web资源,只需编写一个servlet接口的实现类,并把这个类部署到web服务器中,就算开发好了一个动态web资源。

      3.按照一种约定俗成的称呼习惯,通常我们也把实现了servlet接口的java程序,称之为Servlet。

       

     

    二.Servlet特点:

      0)需要的包:servlet-api.jar

      1)普通的java类,继承HttpServlet类,覆盖doGet方法

      2)Servlet类只能交给tomcat服务器运行!!!!(开发者自己不能运行!!!)

     

    三.Servlet规范:

      该规范定了三个技术标准:Servlet,Filter过滤器,listener监听器

     

    四.Servlet运行流程图

       

    五.Servlet手动编写步骤:

      1.编写一个servlet程序,继承HttpServlet

      2.找到HelloServlet类的class字节码,然后将它拷贝到tomcat的一个web应用中WEB-INF/classes目录下。

      3.在当前web应用下的web.xml文件配置Servlet。

      4.运行Tomcat,使用浏览器请求Web.xml中<url-pattern>的虚拟路径

      5.启动tomcat服务器,运行访问

      访问servlet:  http ://localhost:8080/myweb/hello

     

     六.Web.XML解析:

    0.Web.xml如何出现自动提示?

      http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd

      在头文件中加入这一句代码即可在配置web.xml时出现自动提示


    1.完整的配置文件:

      <?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/javaeehttp ://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">  <servlet>    <servlet-name>HelloServlet</servlet-name>    <servlet-class>gz.itcast.HelloServlet</servlet-class>  </servlet>  <servlet-mapping>    <servlet-name>HelloServlet</servlet-name>    <url-pattern>/hello</url-pattern>  </servlet-mapping></web-app>


    2.流程解析:

      (1)服务器会根据这段代码提供的名称来寻找配置文件<url-pattern>/hello</url-pattern>

      (2)<url-pattern>/hello</url-pattern>会去寻找<servlet-name>HelloServlet</servlet-name>

      (3)<servlet-name>HelloServlet</servlet-name>会去寻找<servlet>标签下的<servlet-name>HelloServlet</servlet-name>

      (4)最后,<servlet>标签下的<servlet-name>HelloServlet</servlet-name>会去寻找<servlet-class>hey.up.HelloServlet</servlet-class>下的本地文件以供别人访问

     

     

    七.第一个Servlet实例:

    1.编写一个servlet程序,继承HttpServlet

      public class HelloServlet extends HttpServlet{@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {//解决中文乱码问题resp.setContentType("text/html;charset=utf-8");//向浏览器输出内容resp.getWriter().write("这是第一个servlet程序。当前时间为:"+new Date());}}

    2.配置一个servlet程序

    <servlet><!-- servlet的内部名称 ,该名称用来替代下面的包名加类名,可以自定义--><servlet-name>HelloServlet</servlet-name>   //执行步骤3<!-- servlet类名: 包名+简单类名--><servlet-class>hey.up.HelloServlet</servlet-class>    //执行步骤4</servlet><servlet-mapping><!-- servlet的内部名称,和上面的名称保持一致!!!--><servlet-name>HelloServlet</servlet-name>      //执行步骤2<!-- servlet的访问名称: /名称 --><url-pattern>/hello</url-pattern>  //http://127.0.0.1/hello  //执行步骤1</servlet-mapping>

     

    八.工具开发动态资源

    1.开发步骤

      1.创建web project (javaweb工程),至少J2EE5.0以上:

      2.在WebRoot下建立静态资源文件,如:html

      3.在src下建立动态资源文件:

        3.1 new -> Servlet( servlet的代码生成器)

        3.2 写pacakge  -> class名 -> 修改mapping  url

      4.关联tomcat服务器:

      4.1 window-> Preferences - > MyEcplise -> servers -> Tomcat 6.x (注意一定要enable)

      5.部署web project应用。(拷贝web应用到tomcat的webapps目录下)

      6.启动tomcat服务器

        注意:

        1.当我们使用DeBug启动服务器的时候,可以随时更改项目源码,一般可以实时看到项目的变化

        2.当无法看到项目的变化的时候,就要在Servers列表处的服务器上右键-->Restart Server(重启服务器),来查看项目的变化

      7.访问servlet           

        http ://localhost:8081/day08_web/hello


     2.JavaWeb项目结构

      (1)JavaWeb项目结构

        |- WebRoot :   web应用的根目录

        |- 静态资源(html+css+js+image+vedio)

        |- WEB-INF : 固定写法。

          |-lib: (可选文件夹)固定写法。存放jar包文件。

          |-classes: (可选文件夹)固定写法。存放class字节码文件

          |-web.xml    (项目配置信息,重要)

      注意:

        1)WEB-INF目录里面的资源不能通过浏览器直接访问

        2)如果希望访问到WEB-INF里面的资源,就必须把资源配置到一个叫web.xml的文件中。

        3)WEB-INF还可以存放一些不希望用户直接访问的文件,比如properties配置文件

     

      (2)eclipse创建web project工程生成的项目结构

       

      (3)在JavaWeb中,用户不会直接访问.java文件,而是通过XML文件,进行相应处理,之后转给java文件

     

     问题:为什么servlet分为了servlet和servlet-mapping标签来分别处理浏览器请求呢?

      解答:因为可以多个servlet-mapping对应一个servlet

     

    例如:这样,当我在浏览器中,不管是浏览器hello1,还是hello2都可以用HelloServlet来响应

    <servlet><servlet-name>HelloServlet</servlet-name>       <servlet-class>hey.up.HelloServlet</servlet-class>   </servlet><servlet-mapping><servlet-name>HelloServlet</servlet-name>                                  <url-pattern>/hello1</url-pattern></servlet-mapping><servlet-mapping><servlet-name>HelloServlet</servlet-name>                                  <url-pattern>/hello2</url-pattern> </servlet-mapping>


0 0
原创粉丝点击