Lesson3
●servlet介绍
为什么会出现servlet?
需求:请用你现有的java技术,开发一个动态网页,比如可以让用户留言,其他人可以回复。
显然现有的普通的java技术很难实现这样一些和用户交互的功能。Sun公司就开发了servlet技术供程序员使用。
●什么是servlet
Servlet技术是在java EE出现之前就存在了,在开发动态网页中,得到广泛应用,直到现在的java EE项目中也是非常重要的,同时jsp也是在servlet的基础上发展起来的。因此,掌握好servlet太重要了。
Servlet(java服务器端小程序)是用java编写的服务器程序,它的特点:
他是由服务器端(tomcat)调用和执行的。
他是用java语言编写的。
他是按照Servlet规范开发的。
功能强大,可以完成几乎所有的网站功能。
是学习jsp的基础。
●servlet/jsp开发工具
▶普通的文本编辑器:notepad,uedit32,editplus
▶集成开发工具jcreator,jbuilder,eclipse,netbean
▶运行环境:
浏览器:绝大部分浏览器
Web服务器:Tomcat、Bea weblogic、Ibm websphere、Resin、JBoss
数据库:sql server2000,sybase,mysql,access,oracle ,db2
●Tomcat和servlet在网络中的位置
Tomcat是一个免费的开源Servlet容器,它是Apache基金会的Jakarta项目中的一个核心项目,由Apache,Sun和其他一些公司及个人共同开发而成。
●Servlet的快速入门案例
开发Servlet的三种方法:
a.实现servlet接口
b.继承GenericServlet
c.继承HttpServlet
重点是第一种和第三种,真正的开发一般采用第三种,但第一种更能体现Servlet的生命周期。
需求如下:请使用实现Servlet接口的方法,来开发一个Servlet,要求该Servlet能够显示一句话:Hello,World,同时显示当前时间(体现动态效果)。
步骤如下:
建立一个Web应用myWeb
在myWeb下建立WEB-INF/web.xml文件(可以从ROOT/WEB-INF拷贝)
在myWeb下建立classes目录和lib目录,我们的Servlet就要在classes目录下开发。
开发myFirstServlet.java
package com.gavin.servlet; import javax.servlet.*; import javax.servlet.http.*; import java.io.*; public class myFirstServlet implements Servlet{ //该函数用于初始化servlet,即把该servlet装载到内存中 //该函数只会被调用一次 public void init(ServletConfig config) throws ServletException{ } //该函数得到ServletConfig对象 public ServletConfig getServletConfig(){ return null; } //该函数是服务函数,我们的业务逻辑代码就是写在这里的 //对于浏览器的每次请求,该函数每次都会被调用 public void service(ServletRequest req, ServletResponse res) throws ServletException, java.io.IOException{ //在控制台输出 System.out.println("Hello,World "+new java.util.Date()); //在浏览器输出 res.getWriter().println("Hello,World "+new java.util.Date().toLocaleString()); } //该函数得到servlet的配置信息 public java.lang.String getServletInfo(){ return null; } //销毁该servlet,从内存中清除,该函数和init函数是配对的 //该函数也只会被调用一次 public void destroy(){ } }
5.根据servlet的规范,我们还需要部署Servlet
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" version="3.1" metadata-complete="true"> <!--根据Servlet规范,需要将Servlet部署到web.xml文件--> <!--没开发一个Servlet,都要在web.xml中部署--> <servlet> <!--servlet-name,指定servlet名称,可以自己定义 并不一定和Servlet的类名一致,但习惯上一致--> <servlet-name>myFirstServlet</servlet-name> <!--servlet-class要指明该servlet放在哪个包下的,形式如下:包.类--> <servlet-class>com.gavin.servlet.myFirstServlet</servlet-class> </servlet> <!--servlet-mapping是servlet的映射--> <servlet-mapping> <!--这里要和上面的servlet-name一致,这样才能匹配上--> <servlet-name>myFirstServlet</servlet-name> <!--url-pattern这里就是将来访问该servlet的资源名称,可以自定义--> <!--默认命名规范就是该servlet的名字,前面的斜杠绝对不能丢--> <url-pattern>/myFirstServlet</url-pattern> </servlet-mapping> </web-app>
6.测试
在浏览器中输入http:localhost:8080/myWeb/ myFirstServlet回车
运行效果:
7.分析一下手工配置web.xml时可能出现的错误
①servlet-name前后映射不一致
②servlet-class后面有.java或者.class后缀,会报500错误
③在浏览器中输入url时资源名称与web.xml中配置的url-pattern不一致,会报404错误
【补充知识点1:如果使用javac去编译一个java文件,则需要带命令参数:
javac–d . java文件】
【补充知识点2:如何不重启tomcat,就指定去reload一个web应用?方法:进入到tomcat的manager界面,在之中找到自己的web应用,并点击reload即可。
】