`

Servlet/JSP学习笔记(4)-Servlet入门

 
阅读更多

http://tech.idv2.com/2007/09/14/servlet-basic/

我们将建立一个名为 com.idv2.learnjsp 的包,用于容纳所有的示例程序。 下面我们就看看最基本的Servlet的创建方法。

创建项目

启动eclipse,然后选择菜单File->New->Project...,在新建项目向导中选择 Web->Dynamic Web Project。该项目即为使用Servlet、JSP等技术开发动态网站的项目。 (如果你找不到这一项,说明Lomboz没有配置好,请参阅文章开头的链接进行配置。)


 

下一步,输入项目名 LearnJSP。下面的Target Runtime指定运行这个项目的服务器, 如果你已经在

配置Lomboz 的一节中配置好了Tomcat服务器,那么在这里你可以看到相应的服务器配置,选择它即可。 如果选择框中只有<none>,说明你还没有配置服务器,可以单击右侧的New...按钮新建。

Configurations项选择<none>即可。


 

下一步选择项目所需的特性,默认的Dynamic Web ModuleJava就足够了。

--3

 

下一步是输入相关的目录,这里也直接使用默认值即可。图略。

最后单击 Finish,完成项目创建。创建途中可能会有一个用户使用协议需要你同意, 单击I Agree即可。创建完成后会询问是否要切换到J2EE视图(下图),选择Yes, 完成项目创建。

--4

 

项目建立完成后,请在左侧的 Project Explorer 中打开 LearnJSP 项目, 看看它各个部分的构成。

--5

 

基础知识一节中 我们知道,应用程序由三部分组成,即Servlet、JSP及静态内容、配置文件web.xml。 项目视图中的 src 目录用来保存 Servlet 源代码,WebContent 目录用来保存JSP及静态内容,

web.xml则位于 WebContent/WEB-INF/web.xml。但手工编辑 web.xml 比较麻烦, 
因此 Lomboz 提供了一套可视化工具用于编辑 web.xml,即最上方的Depolyment Descriptor

里面包含的内容以后会陆续讲解。

理解Servlet

在Project Explorer中打开Java Resources: src -> Libraries -> Apache Tomcat 5.5 -> servlet-api.jar 文件,可以看到其中包含两个包:javax.servletjavax.servlet.http, 与Servlet有关的类

和接口都位于这两个包里面。

--6

 

Servlet是一个接口,位于 javax.servlet.Servlet,它规定了每个Servlet所必须实现的方法。 
实际应用时我们需要从 javax.servlet.GenericServlet 和 javax.servlet.http.HttpServlet 两个抽象类

继承出自己的Servlet类,并实现所需的功能。这几个类的关系如下(绿色斜体字为抽象类):

--7

 

上图中,Servlet依赖于ServletRequest和ServletResponse接口,这两个接口负责为Servlet接受和

发送信息。 HttpServlet也类似。

Servlet接口

javax.servlet.Servlet接口包含以下的方法:

init() 
void init(ServletConfig config) throws ServletException 
init方法用于初始化,在Servlet启动时调用。

service() 
void service(ServletRequest req, ServiceResponse res) throws ServletException,

IOException 
Servlet通过这个方法,从req获得客户端请求,处理并生成结果,再通过res发送给客户端。

destroy() 
void destroy() 
Servlet销毁时执行的方法。

getServletInfo() 
String getServletInfo() 
将Servlet的信息通过字符串返回。

getServletConfig() 
ServletConfig getServletConfig() 
获取包含Servlet各种信息的ServletConfig对象。

当某个Servlet第一次被请求时,服务器(Servlet容器)会生成该Servlet并调用它的init()方法, 再调用

其service()方法处理请求。处理结束后该Servlet会常驻于容器中,下一个请求则不再 重新生成Servlet,

而是直接调用常驻的Servlet对象的service()方法。 服务器停止时,会调用该Servlet的destroy()方法。

因此,在Servlet的一个生命周期中,init()和destroy()仅会被调用一次, 而service()则会被调用多次。

GenericServlet抽象类

javax.servlet.GenericServlet为我们实现了Servlet接口的大部分方法,除了service()方法之外。 
因此,我们在制作自己的Servlet时,只需要继承GenericServlet并重载service()方法即可。

典型的Servlet示例

下面我们来做一个典型的Servlet。

在eclipse左侧的Project Explorer中,右键单击Java Resources: src目录(以后简称src目录),

选择New->Class,建立如下所示的类。

--8

 

包名输入我们要建立的 com.idv2.learnjsp,类名为 HelloServlet,父类为 javax.servlet.http.GenericServlet。 在输入父类名时,你会看到输入框左侧有个小灯泡的图标,这说明

可以通过 Alt-/键自动补齐, 因此你只需输入 GenericSer 几个字母,然后按 Alt-/ 组合键,系统会自动

查找开头为 GenericSer 的类 并补齐剩余部分。

Finish之后eclipse会为我们生成代码框架,我们只需填入实际的处理代码即可。 
代码可以从这里下载。

helloservlet.zip

上述代码是UTF-8编码,如果你直接放到src目录中有可能出现乱码, 这时请选择Windows->Preferences...菜单,选择左侧的General->Workspace, 然后将Text file encoding设置为UTF-8

即可。

代码写好后,从Project Explorer中打开项目的 build 目录,可以看到eclipse自动编译了

HelloServlet.java并生成了 com/idv2/learnjsp/HelloServlet.class 文件。

那么如何在服务器上运行它呢?首先必须要做的就是在配置文件 web.xml 中登记这个Servlet。 刚才

我们在建立 HelloServlet 类时,并没有声明它是一个Servlet,这样服务器就无法将它 作为Servlet执行,

因此必须先登记,并为它指定一个URL(即Servlet Mapping)。

自动登记servlet类到web.xml中

右键单击Depolyment Descriptor中的Servlets,选择New->Servlet,出现下面的画面。

--9

 

因为我们已经写好了HelloServlet类,因此选中Use existing Servlet class, 然后单击右侧的Browse...

按钮,选择HelloServlet类。下一步。

--10

 

URL映射是指,浏览器通过哪个URL能访问到这个Servlet。 
默认与Servlet名称相同,为了演示,我们这里将他修改为小写的 /helloservlet 。 实际的URL格式为

 http://主机名/应用程序名/Servlet的URL映射, 我们这个Servlet的URL就应当是 http://localhost:8080/LearnJSP/helloservlet。

单击Finish完成添加Servlet。如果你有兴趣可以打开 WebContent/WEB-INF/web.xml, 可以看到刚才

的修改在web.xml中是怎样的结果。

下一步我们需要将它部署到服务器上。打开eclipse下方的Servet栏, 可以看到系统中的服务器列表。

--11

 

如果你找不到Server栏,请通过主菜单Window->Show View->Others添加Server栏; 如果你的Server

栏中什么都没有,请在Server栏中单击右键然后 New->Server

右键单击服务器,选择Add and Remove Projects...,将 LearnJSP项目添加到服务器上。 添加之后的

结果如下:

--12

 

最后右键单击服务器,选择Start,片刻即可看到在Console栏中输出大量的信息,服务器启动了。 打开

浏览器,访问http://localhost:8080/LearnJSP/helloservlet。 如果能看到“Hello Servlet”的输出,

则恭喜你,第一个Servlet成功运行了!

刷新浏览器页面几次,然后回到eclipse下侧的Console栏,可以看到下面的字样:

init() was called.
service() was called.
service() was called.
service() was called.

这是我们加入的调试信息。这些信息说明了Servlet的一个生命周期中 init、service和destroy函数的执行

过程。 
如果在Server栏中停止服务器,那么你可以在Console栏中的信息中找到 destroy() 函数的执行。

结语

这一节重点结合Lomboz的用法,讲述了Servlet的基本原理和最简单的Servlet的编写方法。 以后的内容

可能就不会这么详细地说明Lomboz的用法了。

=====================本地搭建截图








 
 ===================配置遇到的问题

http://blog.csdn.net/xiaose7613/article/details/4244614

Tomcat的server.xml中配置文件

 

[c-sharp] view plaincopy
 
  1. <Connector port="8009"   
  2.                enableLookups="false" redirectPort="8443" protocol="AJP/1.3" />  

 

将8009改为其他端口后问题解决 
 ====================URL调用后台打印

http://localhost:8082/LearnJSP/helloServlet

2014-8-14 9:42:51 org.apache.tomcat.util.digester.SetPropertiesRule begin
警告: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.jee.server:LearnJSP' did not find a matching property.
2014-8-14 9:42:51 org.apache.catalina.core.AprLifecycleListener init
信息: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: C:\Program Files\Java\jdk1.6.0_32\bin;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;C:/Program Files/Java/jdk1.6.0_32/bin/../jre/bin/client;C:/Program Files/Java/jdk1.6.0_32/bin/../jre/bin;C:/Program Files/Java/jdk1.6.0_32/bin/../jre/lib/i386;F:\app\Administrator\product\11.2.0\dbhome_1\bin;.;C:\Program Files\Java\jdk1.6.0_32\bin;D:\dev\maven-1.0.2\bin;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files\ATI Technologies\ATI.ACE\Core-Static;C:\Program Files\OpenVPN\bin;C:\Program Files\CVS Suite\CVSNT\;D:\Program Files\cvsnt;C:\Program Files\CVS Suite\CVSNT\;E:\tools\eclipse-jee-kepler-R-win32\eclipse;;.
2014-8-14 9:42:51 org.apache.coyote.http11.Http11Protocol init
信息: Initializing Coyote HTTP/1.1 on http-8082
2014-8-14 9:42:51 org.apache.catalina.startup.Catalina load
信息: Initialization processed in 489 ms
2014-8-14 9:42:51 org.apache.catalina.core.StandardService start
信息: Starting service Catalina
2014-8-14 9:42:51 org.apache.catalina.core.StandardEngine start
信息: Starting Servlet Engine: Apache Tomcat/6.0.18
2014-8-14 9:42:52 org.apache.coyote.http11.Http11Protocol start
信息: Starting Coyote HTTP/1.1 on http-8082
2014-8-14 9:42:52 org.apache.jk.common.ChannelSocket init
信息: JK: ajp13 listening on /0.0.0.0:8009
2014-8-14 9:42:52 org.apache.jk.server.JkMain start
信息: Jk running ID=0 time=0/24  config=null
2014-8-14 9:42:52 org.apache.catalina.startup.Catalina start
信息: Server startup in 471 ms
.....service

 
 
 

  • 大小: 15.3 KB
  • 大小: 24.2 KB
  • 大小: 20.1 KB
  • 大小: 7.1 KB
  • 大小: 14.3 KB
  • 大小: 9.1 KB
  • 大小: 5.6 KB
  • 大小: 19.5 KB
  • 大小: 16.5 KB
  • 大小: 18.2 KB
  • 大小: 4.1 KB
  • 大小: 4.8 KB
  • 大小: 76.2 KB
  • 大小: 31.5 KB
  • 大小: 50.3 KB
  • 大小: 60.2 KB
  • 大小: 32 KB
  • 大小: 32.8 KB
分享到:
评论

相关推荐

    JSP&Servlet学习笔记.pdf

    本书是作者多年来教学实践经验的总结,汇集了教学过程中学生在学习JSP & Servlet时遇到的概念、操作、应用或认证考试等问题及解决方案。  本书针对Servlet 3.0的新功能全面改版,无论是章节架构与范例程序代码,都...

    Servlet&JSP学习笔记

    ### Servlet&JSP 学习笔记精要 #### 一、Servlet 基础 ##### 1.1 Web 容器 - **概念**: Web 容器是支持 Servlet 和 JSP 运行的基础环境,主要功能是加载和管理 Servlet 实例,处理客户端请求并返回响应。常见的 ...

    Servlet &JSP学习笔记NetBeans源代码

    在这个"Servlet & JSP学习笔记NetBeans源代码"压缩包中,你将找到一系列与Servlet和JSP相关的示例代码,这些代码是基于NetBeans IDE编写的,并且是在Tomcat服务器上运行的。 Tomcat是一个开源的轻量级Web服务器和...

    Servlet-JSP学习笔记

    老杜课堂Servlet-JSP学习笔记

    JSP_Servlet学习笔记(第2版)

    很好的一本入门jsp/servlet书籍。本书是作者多年来教学实践经验的总结,汇集了教学过程中学生在学习JSP &Servlet;时遇到的概念、操作、应用或认证考试等问题及解决方案。  本书针对Servlet 3.0的新功能全面改版,...

    jsp/servlet个人学习笔记

    学习 JSP 和 Servlet 要注重理论与实践相结合,不仅要理解它们的工作原理,还要通过编写实际项目来提升技能。同时,不断关注新技术,如 Spring Boot 和微服务架构,这将有助于你更好地适应 Java Web 开发的未来趋势...

    JSP & Servlet学习笔记

    本书是作者多年来教学实践经验的总结,汇集了教学过程中学生在学习JSP & Servlet时遇到的概念、操作、应用或认证考试等问题及解决方案。, 本书针对Servlet 3.0的新功能全面改版,无论是章节架构与范例程序代码,都做...

    Servlet&JSP学习笔记源代码

    在"Servlet&JSP学习笔记源代码"中,林信良教授通过实例讲解了这两项技术的基础和进阶知识。这些源代码是在Eclipse集成开发环境中创建的,Eclipse是Java开发的主流工具,支持丰富的插件,使得开发、调试和部署Servlet...

    林学良Jsp&Servlet学习笔记

    **林学良Jsp&Servlet学习笔记**: 这份学习资料可能是对JSP和Servlet基础知识的系统性讲解,涵盖了上述概念和原理,适合初学者入门。通过阅读这份笔记,你可以了解JSP和Servlet的基本语法、生命周期、以及如何将它们...

    老杜Servlet笔记.zip

    哔哩哔哩上老杜的Servlet笔记。 2020-5-05 Servlet学习 Tomcat 服务器配置 2020-5-08 UML 2020-5-08 Servlet学习 2020-5-09 Servlet学习 2020-5-10 Servlet学习 2020-5-11 Servlet学习---Cookie 2020-5-11 Servlet中...

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

    **JSP(Java Server Pages)与Servlet...这个**[JSP&Servlet学习笔记(第2版)]**会涵盖这些主题,并可能包括示例代码、最佳实践和常见问题解答,帮助读者全面掌握JSP和Servlet的使用技巧,进一步提升Java Web开发能力。

    JSP Servlet 学习笔记 第2版 林信良 随书光盘 共三卷

    JSP Servlet 学习笔记 第2版 林信良 随书光盘 第3卷

    servlet和jsp学习笔记

    这篇学习笔记将深入探讨这两个概念,以及它们在实际开发中的应用。 Servlet是Java编程语言的一个接口,由Sun Microsystems(现为Oracle)定义,它允许Java代码与HTTP服务器交互。Servlet主要负责处理客户端的请求并...

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

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

    head_first_servlet&jsp学习笔记

    【Servlet&JSP基础知识】 ...以上是`head_first_servlet&jsp`学习笔记的主要知识点,涵盖了Servlet和JSP的基础、Web应用架构、MVC模式、会话管理和JSP编程等多个方面,为深入理解和实践Servlet与JSP开发奠定了基础。

    韩顺平servlet和jsp课堂笔记

    【标题】:“韩顺平servlet和jsp课堂笔记”涵盖了Web开发中的两个核心技术——Servlet和JSP(JavaServer Pages)的学习资料。韩顺平是一位知名的IT教育专家,他的课程通常深入浅出,适合初学者入门及进阶者提升。 ...

    Head First Servlet & JSP

    本书以其独特的学习风格,深入浅出地介绍了Servlet和JSP(JavaServer Pages)这两项核心的Java Web开发技术。 Servlet是Java平台上的一个标准API,用于构建动态Web应用程序。它允许开发者通过Java代码来处理HTTP...

    JSP_Servlet学习笔记(第2版).pdf

    《JSP & Servlet学习笔记(第2版)》是作者多年来教学实践经验的总结,汇集了学生在学习JSP&Servlet;或认证考试时遇到的概念、操作、应用等各种问题及解决方案。 《JSP & Servlet学习笔记(第2版)》针对Servlet 3.0的...

    Servlet&JSP;学习笔记源代码

    这份"Servlet&JSP学习笔记源代码"是由林信良编著,提供了丰富的实例代码,旨在帮助学习者深入理解这两种技术。 Servlet是Java编程语言的一个接口,允许Java代码与HTTP服务器进行交互。它扩展了服务器的功能,使得...

Global site tag (gtag.js) - Google Analytics