java基础——Servlet入门

来源:互联网 发布:美孚一号 知乎 编辑:程序博客网 时间:2024/05/21 13:55

1servlet快速入门

      1、在MyEclipse工具中创建web project

      2、在工程中创建class并继承HTTPServlet

      3、在Servlet中覆盖doGet和doPost方法

      4、在web服务器中注册Servlet程序(在web.xml中注册)

注册方法:

<!-- 注册Servlet 程序, 为Servlet class 起一个名字 -->

 <servlet>

     <servlet-name>HelloServlet</servlet-name>

     <servlet-class>cn.itcast.servlet.HelloServlet</servlet-class>

 </servlet>

 <!-- 配置Servlet 访问 路径 -->

 <servlet-mapping>

     <servlet-name>HelloServlet</servlet-name>

     <url-pattern>/hello</url-pattern>

 </servlet-mapping>

 

这样就可以通过/hello访问cn.itcast.servlet.HelloServlet 程序了

编写完web.xml后一定要重新启动服务器

servlet-name:写的是servlet的名称建议和类名相同

servlet-class:是对象的名称,名称要包含整个包名

url-pattern:映射的名称,可以自己起个名称,注意斜线

<servlet></servlet>是对servlet进行注册

<servlet-mapping></servlet-mapping>是对注册好的servlet提供对外访问的路径

 

注意:可以秒杀创建一个servlet类,直接在创建的时候选择servlet然后勾选doget和dopost方法选择下一步,然后将映射路径改为自定义一个就哦了点击完成就可以了

 

2servlet编写步骤

      1、编写class继承HTTPServlet

      2、复写doGet和doPost方法

      3、在web.xml中对方法进行注册

3servlet注意事项

      1、写servlet是没有主函数的应为servlet类是由服务器调用的

      2、servlet API在哪里?

           JDK导入包 来自JRE环境 rt.jar (java.iojava.util 来自rt.jar )

      3、servlet导入包

           1、MyEclipse Servlet 需要 jar 来自JavaEE 环境

右键工程属性 ---- buildpath ---- liberaries ----- add Liberary ---- MyEclipse Liberary

           2、tomcat环境中 需要jarE:\apache-tomcat-6.0.14\lib\servlet-api.jar

4servlet继承关系

      Servlet接口=>实现类genericservlet=>子类HTTPservlet=>自定义的servlet类继承httpservlet

      Servlet技术 sun公司最早推出时,并不是仅面向于HTTP协议的 ,Servlet接口规范与协议无关的

      *Servlet技术基于请求-响应模型的

      GenericServlet通用的Servlet,只是实现了与协议无关API ,并没有提供任何与协议相关API

      HttpServlet是一个面向HTTP协议 Servlet程序,提供了与协议相关 API

5servlet生命周期

      servlet声明周期描述了servlet从创建到销毁的过程,servlet接口中定义了三个方法来描述servlet的生命周期

1、init((ServletConfig)):用于对servlet进行初始化用的,只执行一次

2、service(ServletRequest,ServletResponse):初始化完成后每当有请求时都会调用这个方法(提供服务)

3、destroy:用于销毁servlet程序的

servlet只有一个而它却被多条线程共同访问,那么会有线程安全问题吗?是不会有线程安全问题的,因为只要有请求servlet背后就会开启了一个新的线程去响应来自客户端的请求

6service方法和doGetdoPost有什么关系

      在httpservlet中的service方法内部就是根据请求方式来调用doget或dopost

当doget和dopost代码逻辑关系相同时可以互相调用以简化编程

如何让servlet在服务器加载的时候就创建对象呢?

可以通过<load-on-startup>值</load-on-startup>(这个值一般是在0-9范围内)

(定义在web.xml的servlet中)

      <servlet>

           <servlet-name>invoker</servlet-name>

            <servlet-class>

                 org.apache.catalina.servlets.InvokerServlet

           </servlet-class>

           <load-on-startup>2</load-on-startup>

      </servlet>

7init()和initServletConfig)的关系

      init(ServletConfig)是servlet生命周期的方法

GenericServlet内部覆盖了init(servletconfig),在有参数init方法中调用了无参的init方法。所以建议在自定义servlet方法时只需要覆盖无参输的init方法就可以了

8servlet中路径配置的问题

      servlet中的路径配置方法有三种:

优先级是:完全匹配==>>目录匹配==>>扩展名匹配

1、完全路径匹配:以 / 开始,不能包含通配符 *   例:/hello、/init

2、目录匹配:以 / 开始,/* 结尾  例:/aa/*、/aaa/bbb/*

3、扩展名匹配:不能以 / 开始,是以 * 开始的    例:*.do,*.action,*.html

<url-pattern>……</url-pattern>

注意:经典的错误:/*.do,这个错误会导致整个web工程无法被加载,属于严重错误

9servlet的初始化initServletConfig   Config===>>servletConfig对象

      servletconfig对象是servlet的配置对象,用来在servlet初始化阶段向servlet传递信息

* GenericServlet中将 ServletConfig对象保存成员变量同时提供getServletConfig方法

* 自定义Servlet中 通过 getServletConfig() 获得ServletConfig 对象

ServletConfig 配置参数 相当于当前Servlet 局部变量,无法被其它Servlet访问的

10servlet上下文对象ServletContext

1、servletcontext每一个工程对应一个

2、获得servletcontext==>>servletconfig.getservletcontext()

3、servletcontext也叫域对象。是一个容器,有大小(范围),存数据(获取数据,移除数据)

应用一:全局初始化参数配置

        <context-param>

           <param-name>name</param-name>

           <param-value>张三</param-value>

        </context-param>

获得servletcontext对象:servletcontext context = getservletcontext();

通过stringgetinitparameter(String name)获得全局参数

* getMimeType(文件名) ----- 根据文件扩展名获得文件MIME类型

html --- text/html

自动读取tomcat/conf/web.xml(配置扩展名和MIME类型对应关系)

* log(String msg) ----- 记录信息到日志文件 (显示控制台上)

应用二:多个Servlet之间可以共享数据

      应用:统计网站的访问次数

      setattribute(name,object)

      getattribute(name)===>>通过name获取object值

应用三:读取web工程中资源文件

      在day04下创建四个文件

      1、在day04工程根目录创建1.txt

      2、在webroot下创建2.txt

      3、在web—inf下创建3.txt

      4、在src下创建4.txt

1.txt因为在WebRoot 外面 不会发布到tomcat服务器,无法在服务器端读取

2.txt --- >getServletContext().getRealPath("/2.txt");

3.txt --- >getServletContext().getRealPath("/WEB-INF/3.txt");

4.txt 位于src下,复制到WEB-INF/classes下 --->getServletContext().getRealPath("/WEB-INF/classes/4.txt");

 

11、用类加载器读取

      通用classpath下文件读取方法 (用类加载器读取)

      XXX.class.getResource("/4.txt").getFile();

      这里 / 代表classpath根目录(src 、WEB-INF/classes)

12、缺省Servlet

      1、将服务器静态资源读取到内存,发送给客户端

      2、所以服务器静态资源都是通过缺省servlet返回的

      3、缺省servlet配置url-pattern是 /

      4、在tomcat/conf/web.xml中查看缺省servlet配置

0 0
原创粉丝点击