您的位置:首页 > 其它

第5天:Servlet相关知识(一)

2011-06-05 16:06 489 查看
Servlet相关知识1

1.什么是Servlet?能做什么?

Sun公司制定的用于扩展web服务器功能的组件规范(早期CGI:Common Gateway Interface)

扩展:

web服务器本身没有计算能力,也就是说,不能处理动态资源的请求。servlet可以处理动态资源的请求。

组件规范:

组件是符合规范,完成一定功能,并可以单独部署的软件模块。一般不能独立运行,需要依赖容器才能运行。

JSR:Java Specification request

JCP:Java Communication process

容器:

是一种程序,提供组件的运行环境,并且管理组件的运行周期。

Servlet容器:

提供Servlet运行的环境,并且管理Servlet的运行周期。一般常见的web服务器,比如Tomcat,除了是

一个servlet容器以外,同时也是一个web服务器。

能做什么?

servlet只能采用java语言开发,servlet可以作java类能做的所有的事件。

2.如何开发一个Servlet?

step1: 写一个java类,实现Servlet接口或者继承HttpServlet类。

step2: 编译(依赖servlet api)

step3: 打包(定义一个特定的目录结构,将相应的字节码,配置文件,相关的jar文件放到对应的目录结构里)

appname(名称任意,一般称为应用名)

WEB-INF(必须以该名称命名)

classes(放.class文件)

lib(可选,放.jar文件)

web.xml(部署描述文件)

step4: 部署(将step3中的结果放到特定的目录,对于tomcat是webapps)

step5: 启动服务器

windows -> startup.bat -> shutdown.bat

linux -> startup.sh -> shutdown.sh

启动成功:http://localhost:8080/

step6: 访问servlet

http://localhsot:8080/appname/url-pattern
3.Servlet是如何运行的?

假如我们在浏览器栏输入了如下地址:http://ip:port/appname/servletname

step1: 浏览器依据ip,port连接服务器。

step2: 浏览器将请求数据按http协议打成一个http请求数据包(包含了appname/servletname)

step3: 服务器当中的一个负责通讯的模块(一般称为servlet引擎)会创建HttpServletRequest的一个实例

(HttpServletRequest实际上是一个接口,由服务器提供者来实现),该实例包含了请求数据包中的

数据。另外,还创建了一个HttpServletResponse的一个实例。

step4: 服务器依据appname/url-pattern找到web.xml依据信息找到对应的servlet类名。会查看该servlet

有没有对应的实例,如果没有,则创建实例,有的话,则不创建,使用现成的实例。接下来,调用service()

方法,service方法里面的代码可以通过HttpServletRequest提供的方法来获得请求中的数据,并且,也

可以将处理之后的结果通过HttpServletRequest提供的方法设置返回的结果。

step5: Servlet引擎会从HttpServletResponse获取数据,生成http响应数据包,发送给浏览器。

4.使用MyEclipse开发servlet

(1) 安装MyEclipse

(2) 开发步骤

step1: 建立一个web project

step2: 在src下面编写java类

step3: 在web.xml中配置servlet

step4: 部署

a.让MyEclipse管理Tomcat

window -> preferences -> MyEclipse -> Servers -> Tomcat -> Tomcat 6.X

b.部署

step5: 访问

http://ip:port/appname/url-pattern
5.web.xml文件内容

<?xml version="1.0" encoding="UTF-8"?>

<!-- 文件的第一行一定是上面的信息,说明xml文件的版本和字符编码 -->

<!-- 下面用来配置web工程 -->

<web-app version="2.4"

xmlns="http://java.sun.com/xml/ns/j2ee"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee

http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<servlet>

<description>HelloServlet</description>

<display-name>HelloServlet</display-name>

<!-- 一般是定义Servlet时的名字 -->

<servlet-name>HelloServlet</servlet-name>

<!-- 该Servlet的全名 -->

<servlet-class>ttwork.servlet.HelloServlet</servlet-class>

</servlet>

<servlet>

...

</servlet>

<servlet-mapping>

<!-- 和上面Servlet使用的名字一样 -->

<servlet-name>HelloServlet</servlet-name>

<!-- 访问Servlet时的相对路径 -->

<url-pattern>/servlet/HelloServlet</url-pattern>

</servlet-mapping>

<servlet-mapping>

...

</servlet-mapping>

<error-page>

<error-code>500</error-code>

<location>/error.html</location>

</error-page>

<welcome-file-list>

<welcome-file>index.jsp</welcome-file>

</welcome-file-list>

</web-app>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: