servlet学习笔记之一

servlet 学习笔记

自序

昨天心情有些失落。公司从去年底到现在就没有安排我做个正事,(也没有我什么事情,研发部门当产品出来后,还有什么好研发呢,无非就是修改 BUG ,做些维护)。没有事情的情况下,被拉着做测试。测试的内容也就是 GIS 的客户端,功能没有几个,测试很枯燥,被叫着翻来覆去做同一件事。郁闷的是部门经理的座位在我后面,虽然隔了有 <chmetcnv w:st="on" tcsc="0" numbertype="1" negative="False" hasspace="False" sourcevalue="4" unitname="米"><span lang="EN-US">4</span> <span style="FONT-FAMILY: 宋体">米</span> </chmetcnv>左右距离,但是他完全能看到我在做什么事情。他批评了我好几次“该做什么就做什么。叫你做什么就做什么。”不说了,我并不喜欢发牢骚……

鉴于工作中的种种因素,我想跳槽,换个环境。换工作,我是 java 程序员,而目前的工作无非就是写 UIswing 编程。类似的工作可不那么好找,而且也打算多长点见识。所以决定离开成都去北京找工作,而且找 J2EE 方面的。辞职前我打算做个 JSP 方面的小应用、再把 JAVA 好好复习一遍这样才对新工作有所准备。

说做就做吧。先学习 JSP (毕业前,曾自学过一点点),学习 JSP 前,有必要学习 servlet 。这就有了这一系列学习笔记……

 

<!--[if !supportLists]--> 1.       <!--[endif]--> 什么是Servlet

 

Java Servlet java 服务器小程序)是一个基于 Java 技术的 Web 组件,运行在服务器端,由 Servlet 容器所管理,用于生成动态的内容。

 

<!--[if !supportLists]--> 2.       <!--[endif]--> servletapplet区别?

 

相同点:

<!--[if !supportLists]--> ²        <!--[endif]--> 他们都不是独立的应用程序,都没有main()方法;

<!--[if !supportLists]--> ²        <!--[endif]--> 他们都生存在容器中,applet运行在浏览器中,servlet运行在servlet容器中。

<!--[if !supportLists]--> ²        <!--[endif]--> 他们都有生命周期,都有init()和destroy()方法;

不同点:

<!--[if !supportLists]--> ²        <!--[endif]--> applet具有图形界面,运行在客户端,servlet没有图形界面,运行在服务器端的servlet容器中。

我写的 applet 要多点,这样对比有利于自己更好的掌握 servlet 技术。

 

<!--[if !supportLists]--> 3.       <!--[endif]--> hello world

 

说句废话:买的书《 JAVA WEB 开发详解》,孙鑫编著,感觉讲得不好, servlet 简直就是在介绍 api 手册。

我总结的时候,自然不能这样。还是介绍个入门例子吧。

 

先说下环境变量,要编译 servlet 需要把必要的 jar 设置到 classpath 中。我的环境变量是这样设置的。(这里我把 jar 拷贝到了 jdk 目录下面)

 

.;D:\jdk\lib\dt.jar;D:\jdk\lib\tools.jar;D:\jdk\jre\lib\rt.jar;D:\jdk\lib\servlet-api.jar;D:\jdk\lib\jsp-api.jar;

 

第一个程序—— test.java

 

import javax.servlet.ServletException;

import java.io.*;

import javax.servlet.http.*;

 

public class test extends HttpServlet

{

   public void doGet(HttpServletRequest req,HttpServletResponse resp)throws ServletException,IOException

   {

       PrintWriter out = resp.getWriter();

       out.println("hello, world!");

       out.close();           

 

   }

}

由于设置了环境变量,这里顺利编译通过。

 

部署 servlet

webapps 目录下,建立一个目录(存储该应用)。如: hello

在该 hello 目录下建立一个特殊目录 WEB-INF ,注意全大写。之所以特殊,因为该目录对客户端不可见。如果你把 index.html 放到 WEB-INF 目录下面,然后通过 http://127.0.0.1:8080/hello/WEB-INF/index.html 访问,这样是访问不到的。

而在 WEB –INF 目录下:

建立 classes 目录来存放编译好的 class 文件。

                            建立 lib 目录来存放运行所需要的其他包。

                            建立重要的 web.xml 配置文件。

web.xml 可以包含如下的配置和部署信息:

<!--[if !supportLists]--> ²        <!--[endif]--> ServletContext的初始参数;

<!--[if !supportLists]--> ²        <!--[endif]--> Session的配置;

<!--[if !supportLists]--> ²        <!--[endif]--> Servlet/Jsp的定义;

<!--[if !supportLists]--> ²        <!--[endif]--> Servlet/Jsp的映射;

<!--[if !supportLists]--> ²        <!--[endif]--> MIME类型映射;

<!--[if !supportLists]--> ²        <!--[endif]--> 欢迎文件列表;

<!--[if !supportLists]--> ²        <!--[endif]--> 错误页面;

<!--[if !supportLists]--> ²        <!--[endif]--> 安全;

<!--[if !supportLists]--> ²        <!--[endif]--> 地区和编码映射;

<!--[if !supportLists]--> ²        <!--[endif]--> jsp配置。

我们编写的 xml 必须是格式良好的 xmlweb.xml

<?xml version =”<chmetcnv w:st="on" tcsc="0" numbertype="1" negative="False" hasspace="False" sourcevalue="1" unitname="”">1.0”</chmetcnv> encoding=”ISO-8859<chmetcnv w:st="on" tcsc="0" numbertype="1" negative="True" hasspace="False" sourcevalue="1" unitname="”">-1”</chmetcnv>?>

<web-app>

<servlet>

       <servlet-name>helloworld</servlet-name>

       <servlet-class>test</servlet-class>

</servlet>

<servlet-mapping>

       <servlet-name>helloworld</servlet-name>

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

</servlet-mapping>

</web-app>

 

这样输入:“ http://127.0.0.1:8080/hello/hello “就访问到了刚才写的 servlet

再介绍一种访问 servlet 方式: telnet 方式

telnet localhost 8080

回车,输入

GET /hello/hello HTTP/1.1

Host:localhost

dos 窗口下将显示 helloworld

 

如果要用 servlet 处理表单提交的信息,表单提交方式一般情况分 getpost 。相应的我们就应该覆盖 HttpServlet 中的 doGet ()、 doPost ()方法。表单中 actionservleturl-/pattern 值。

 

值得注意的是: web.xml servlet 2.22.3 规范中都由 DTD 定义,所有有元素间严格的顺利关系,而 servlet2.4 规范中, web.xml 文件改为, xml schema 来定义文档的结构,其中一个好处是元素出现的顺序不再有严格的限定。如果要兼容低版本的,还是得有严格的顺序关系。

 

提示一旦修改过 servlet 就应该重启 tomcat

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值