`
阅读更多

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 程序员,而目前的工作无非就是写 UI swing 编程。类似的工作可不那么好找,而且也打算多长点见识。所以决定离开成都去北京找工作,而且找 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 必须是格式良好的 xml web.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 窗口下将显示 hello world

 

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

 

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

 

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

 

 

分享到:
评论

相关推荐

    Java相关课程系列笔记之九Servlet学习笔记

    Java相关课程系列笔记之一Java学习笔记 Java相关课程系列笔记之四JDBC学习笔记 Java相关课程系列笔记之六HTML学习笔记 Java相关课程系列笔记之七CSS学习笔记 Java相关课程系列笔记之八JavaScript学习笔记 Java相关...

    JSP_Servlet学习笔记(第2版)

    JSP & Servlet学习笔记(第2版)》是作者多年来教学实践经验的总结,汇集了学生在学习JSP&Servlet或认证考试时遇到的概念、操作、应用等各种问题及解决方案。 本书针对Servlet3.0的新功能全面改版,无论章节架构...

    JSP &amp; Servlet学习笔记(第2版)

    书 名:JSP & Servlet学习笔记(第2版) 作 者:(台湾)林信良 著 出 版 社:清华大学出版社 出版时间:2012-5-1 ISBN:9787302283669 纸书页数:456页 定 价:¥ 58.00 内容简介: 本书是作者多年来...

    JSP & Servlet学习笔记

    本书是作者多年来教学实践经验的总结,汇集了..., 本书在讲解的过程中,以“微博”项目贯穿全书,随着每一章的讲述都在适当的时候将JSP & Servlet技术应用于“微博”程序之中,以便读者能了解完整的应用程序构建方法。

    JSP&Servlet学习笔记.pdf

    本书是作者多年来教学实践经验的总结,汇集了... 本书在讲解的过程中,以“微博”项目贯穿全书,随着每一章的讲述都在适当的时候将JSP & Servlet技术应用于“微博”程序之中,以便读者能了解完整的应用程序构建方法。

    javaEE servlet 学习笔记

    javaEE servlet 学习笔记 jsp本质上是servlet,但是为了更加符合mvc的框架,将页面显示和逻辑控制分离,jsp页面只负责页面,也就是mvc中的V(view),而servlet负责mvc中的C(control)。 而为了更加好的理解结构,一下...

    java-servlet学习笔记

    看过方立勋老师的课程之后 做的一点小笔记 以后拿出来复习复习 不对之处 请见谅 本人只是默默的一只菜鸟

    JSP&Servlet;学习笔记

    本书是作者多年来教学实践经验的总结,汇集了...本书在讲解的过程中,以“微博”项目贯穿全书,随着每一章的讲述都在适当的时候将JSP & Servlet技术应用于“微博”程序之中,以便读者能了解完整的应用程序构建方法。

    Java相关课程系列笔记

    Java相关课程系列笔记之九Servlet学习笔记(建议用WPS打开) Java相关课程系列笔记之六HTML学习笔记(建议用WPS打开) Java相关课程系列笔记之七CSS学习笔记(建议用WPS打开) Java相关课程系列笔记之三PLSQL学习...

    Javaweb最新全套项目实战视频教程-Servlet课堂笔记

    寻找适合自己的学习资源,现在不需要如此麻烦了,动力节点全新整理Javaweb阶段全套教程已经上线,内涵网络通信、HTML、CSS、JavaScript、MySQL、JDBC、JSP、Servlet等技术,Javaweb从入门到精通全套教程一站搞定,...

    java jdk8 学习笔记

    7.Web容器是Servlet/JSP唯一认识的HTTP服务器,是使用Java撰写的应用程序,运行于JVM之上。 8.JVM让Java可以跨平台,不同的系统平台有不同的JVM,它们都认识.class文件。Java编译语言将Java代码编译成.class文件...

    过滤器学习笔记一(Filter教你快速入门)

    过滤器是JavaWeb三大组件之一,它与Servlet很相似!不过它是用来拦截请求的,而不是用来处理请求的。 当用户请求某个Servlet时,会先执行部署在这个请求上的Filter,如果Filter“放行”,那么会继续执行用户请求的...

    韩顺平java从入门到精通视频教程(全94讲)学习笔记整理(齐全)-共448页.docx

    java内容介绍 java编程可以分成三个方向: 1、java se (j2se)桌面开发 java中的基础中的基础 2、java ee (j2ee)web开发 3、java me (j2me)手机开发 ...1995 sun正式发布java第一个版本,目前最新是jdk7.0

    JSP学习笔记

    %&gt;(只是一个方法内的局部变量,每个客户端都有一个)使用的过程当中,尽量避免将一个变量声明为类的成员变量,除非需要统计一个servlet类的访问次数。后者之中不能定义方法,前者可以。 2.java脚本(如javascript)...

    Javaweb最新全套项目实战视频教程-JDBC课堂笔记

    寻找适合自己的学习资源,现在不需要如此麻烦了,动力节点全新整理Javaweb阶段全套教程已经上线,内涵网络通信、HTML、CSS、JavaScript、MySQL、JDBC、JSP、Servlet等技术,Javaweb从入门到精通全套教程一站搞定,...

    Javaweb最新全套项目实战视频教程-EL课堂笔记

    寻找适合自己的学习资源,现在不需要如此麻烦了,动力节点全新整理Javaweb阶段全套教程已经上线,内涵网络通信、HTML、CSS、JavaScript、MySQL、JDBC、JSP、Servlet等技术,Javaweb从入门到精通全套教程一站搞定,...

    Javaweb最新全套项目实战视频教程-Tomcat课堂笔记

    寻找适合自己的学习资源,现在不需要如此麻烦了,动力节点全新整理Javaweb阶段全套教程已经上线,内涵网络通信、HTML、CSS、JavaScript、MySQL、JDBC、JSP、Servlet等技术,Javaweb从入门到精通全套教程一站搞定,...

Global site tag (gtag.js) - Google Analytics