Servlet程序设计

2008-03-07 – 19:27 - 792 views

Java Servlet是一种使用Java编写的CGI程序

  • CGI:通用网关接口
  • 与传统的CGI不同,Servlet是一种多线程处理模式--性能较高
  • 在Servlet中可以控制输出HTML代码,则所有的HTML代码必须使用out.println()一行一行输出

Servlet的生命周期

  1. 初始化(1次) 
    • public void init(ServletiConfig config) throws ServletException
      Servlet初始化有两种方式
      • init():当不需要传递初始化参数时使用
      • init(ServletConfig config) :如果使用这种初始化方法,则上面的无参初始化方法无效,这种方式适用于需要传递初始化参数
  2. 服务(多次)
    • doGet();表单和地址输入都为GET请求
    • doPost(); 只有表单输入为POST请求
  3. 销毁(1次)
    • 服务器关闭
    • 此Servlet长时间不使用

简单Servlet编写

  1. Servlet直接继承直HttpServlet
  2. 在doPost(doGet)方法中写入相应的程序代码
  3. 配置WEB.XML文件
    • JSP程序的功能与Servlet一致,意味着Servlet程序同样可以被外部所访问,就必须有一个地址,这只能通过WEB映射解决
      • 修改web.xml文件可以配置映射地址
        //表示要使用一个Servlet
        <servlet> 
              //在web.xml文件内部起作用的名字 
              <servlet-name>Simple</servlet-name> 
              //servlet程序所在包.类名称 
              <servlet-class>net.hialex.Servlet.SimpleServlet</servlet-class>      
        </servlet>
        //servlet映射地址
        <servlet-mapping> 
             //在web.xml文件内部起作用的名字,与上面的名字一致 
             <servlet-name>Simple</servlet-name> 
             //具体映射路径,前面必须要有一个/ 
             <url-pattern>/demo</url-pattern>      
        </servlet-mapping>
  4. 注意:
    • 在编译servlet时可能会遇到找不到servlet包的问题,这是因为servlet为JDK的扩展包,所以在使用时需要指定classpath
    • 若不指定classpath可以将servlet.jar文件拷贝到JSK安装路径下的jre\lib\ext下
  5. 结论:在Tomcat中,存在servlet的全部库文件(%Tomcat_HOME%\lib\servlet-api.jar)

HttpServlet类

  • 继承自GenericServlet类并增加了doGet()、doPost()等七个方法
  • doGet()方法:当客户端发送get请求时就调用doGet()方法,HTTP缺省的就是Get
  • doPost()方法:当客户端发送HTTP请求调用POST方法调用doPost()方法

对于一个基本的Servlet程序必须注意以下几点:

  1. 首先一定要符合Servlet程序的开发框架
  2. 配置web.xml文件
  3. Servlet的缺点是不适合输出大量的HTML代码

多个名称映射同一Servlet:

  • <servlet-mapping>
          <servlet-name>simple</servlet-name>
          <url-pattern>/demo</url-pattern>
    </servlet-mapping>
  • <servlet-mapping>
          <servlet-name>simple</servlet-name>
          <url-pattern>/demo.simple</url-pattern>
    </servlet-mapping>
  • <servlet-mapping>
          <servlet-name>simple</servlet-name>
          <url-pattern>/demo/*</url-pattern>
    </servlet-mapping>
  • 只要保持<servlet-name>一致,就可以有多个<servlet-mapping>
    只要映射名称为*,就可以任意匹配
  • 在servlet中解决路径问题的唯一原则:在地址栏中拼凑出完整路径

Servlet接口与JSP对象比较:

Servlet接口 JSP内置对象
HttpServletRequest request
HttpServletResponse response
ServletConfig config
HttpSession Session,通过request.getSession()取得
ServletContext

application
取得两种方式(对应两种初始化方法)
1.无参数初始化方法
2.如果针对有参构造[init(ServletConfig)]则必须通过Config对象取得

您喜欢本文吗?即刻订阅"Alex's Blog",精彩文章不再错过!点击下列按钮收藏本文.

 

« Oracle故障两例 Java CodeConventions »

发表回复