Servlet是一个执行在服务器端的Java
Class文件,载入前必须先将Servlet程序代码编译成.class文件,然后将此class文件放在servlet
Engline路径下。Servlet API使用javax.servlet和javax.servlet.http两个包的接口类。

Servlet的最大的缺点是不能有效地管理页面的逻辑部分和页面的输出部分,导致Servlet代码非常混乱,而用JSP和JavaBean/Servlet结合可以有效地管理页面的逻辑部分和页面的输出部分。

当服务器上的一个JSP网页被第一次请求执行时,服务器上的JSP引擎首先将JSP页面文件转译成一个Java文件,再将这个Java文件编译成class字节码文件(即Servlet类),然后执行以响应客户的请求,当这个JSP页面再次被请求执行时,JSP引擎将直接执行这个字节码文件来响应客户,响应速度比第一次执行快很多。

两者可以互相调用,一般Servlet较多应用于业务逻辑(页面HTML输出不多或没有),而JSP偏重于数据展现,同一份数据可以用不同形式的视图来展现。

5.         开发部署一个简单的Servlet

这里以Tomcat5作为应用服务器,它是Apache+Servlet/JSP容器。先介绍一下Tomcat的目录结构,然后讲解如何添加一个应用,并部署一个简单的Servlet。

1)Tomcat 的主要目录结构

①     /bin: 存放Tomcat服务器的可执行文件和运行用的Jar包。

②     /conf :存放Tomcat服务器的各种配置文件,其中最重要的是server.xml。

③     /server :包含3个子目录classes、lib和webapps。

④     /common/lib 存放Tomcat服务器以及所有Web应用都可以访问的JAR。

⑤     /logs:存放了Tomcat的日志文件。

⑥     /webapps:当发布Web应用时,默认情况下把Web应用文件放于此目录下。

⑦     /work:Tomcat把由JSP生成的Servlet放于此目录下。

其中server.xml是用于整个Web服务器的,可以配置Web服务器的端口、应用目录、应用的入口、用户访问安全等信息。

2)Web应用的目录结构

Web应用有固定的结构,在/webapps目录下创建一个目录myapp。则这个Web应用的目录结构如下:

①     /myapp:Web应用的根目录,所有的JSP和Html文件都存放在该目录下。

②     /myapp/WEB-INF:存放Web应用的描述文件web.xml。

③     /myapp/WEB-INF/classes:存放各种class文件,servlet类文件也存放与该目录下。

④     /myapp/WEB-INF/lib:存放Web应用所需的各种JAR文件。如可以存放JDBC驱动程序的JAR文件。

3)配置文件web.xml

Java Web 应用通过一个基于XML的发布描述文件来配置其发布信息。Web.xml文件中可包含的配置信息有:

①         Servlet的定义;

②         Servlet的初始化参数;

③         Servlet以及JSP的映射;

④         安全域配置参数;

⑤         资源引用;

⑥         环境变量的定义。

配置文件web.xml可以自己编写,也可以从其他应用(如Root、JSP-examples、servlets-examples等)目录下拷贝过来修改。

4)部署Servlet文件的步骤

①   编写Servlet并编译成class文件,编译时,将servlet-api.jar文件(在/common/lib 目录下)加入到classpath中;

②   将编译好的class文件拷贝到应用的WEB-INF/classes/下(如/myapp/WEB-INF/classes/);

③   在web.xml中进行配置  <servlet> 、<servet-mapping>,具体可参见下面的web.xml。

这里以一简单的Servlet为例,实现Servlet的开发和部署。

文件 HelloServlet.java

import java.io.*;

import javax.servlet.http.*;

public class HelloServlet extends HttpServlet {

}

编译成功后,将HelloServlet.class拷贝到/myapp/WEB-INF/classes/下,然后修改web.xml。

配置文件 web.xml。

<?xml version="1.0" encoding="ISO-8859-1"?>

<web-app xmlns="http://java.sun.com/xml/ns/j2ee"

<description>

JSP和Servlet

<servlet>

</web-app>

然后在浏览器中运行http://localhost:8080/ch2/servlet/HelloServle

开发部署一个简单的Servlet的更多相关文章

  1. Servlet复习1: 一个简单的Servlet的使用

    Servlet学习 1. Servlet与JSP的关系 2. Servlet的声明周期 3. 一个简单的Servlet的使用方法 什么是Servlet? 什么又是JSP? 继承了javax.servl ...

  2. 在cmd下编译一个简单的servlet时出现程序包javax.servlet不存在

    由于servlet和JSP不是Java平台JavaSE(标准版)的一部分,而是Java EE(企业版)的一部分,因此,必须告知编译器servlet的位置. 解决“软件包 javax.servlet不存 ...

  3. Tomcat剖析(二):一个简单的Servlet服务器

    Tomcat剖析(二):一个简单的Servlet服务器 1. Tomcat剖析(一):一个简单的Web服务器 2. Tomcat剖析(二):一个简单的Servlet服务器 3. Tomcat剖析(三) ...

  4. 一个简单的servlet容器

    [0]README 0.1)本文部分文字转自 “深入剖析Tomcat”,旨在学习  一个简单的servlet容器  的基础知识: 0.2)for complete source code, pleas ...

  5. 通过Jetty搭建一个简单的Servlet运行环境

    最近在做一些简单的Servlet开发的时候,感觉每次调试的时候都要发布到tomcat上很麻烦,把程序共享给同事也很麻烦,需要帮他设置本地的tomcat环境. 在网上找了找其他的Servlet运行环境, ...

  6. how tomcat works 札记(两)----------一个简单的servlet集装箱

    app1 (看着眼前这章建议读者,看how tomcat works 札记(一个)----------一个简单的webserver http://blog.csdn.net/dlf123321/art ...

  7. how tomcat works 读书笔记(二)----------一个简单的servlet容器

    app1 (建议读者在看本章之前,先看how tomcat works 读书笔记(一)----------一个简单的web服务器 http://blog.csdn.net/dlf123321/arti ...

  8. 一个简单的servlet的demo

    javaweb  的应用我们需要参考javaee  api 查找servlet接口 javax.servletInterface Servlet All Known Subinterfaces: Ht ...

  9. [异常解决] 初玩SAE遇到的小问题——注册&创建项目+MyEclipse装插件直接部署+一个简单的JSP部署实现

    ① 新浪SAE快速上手教程:http://jingyan.baidu.com/season/43090 上面一个链接是针对PHP的相关介绍,如果用java还有点不一样,具体请看新浪SAE官网:http ...

随机推荐

  1. git config --global core.excludesfile配置gitignore全局文件

    Linux中,这时把全局要忽略的文件列表.gitignore放当前用户根目录下: git config --global core.excludesfile '~/.gitignogtire' Win ...

  2. Tinkphp定时发布文章的教程

    第一步:在文章表中加一个字段,用来保存定时发布的时间 假定我把这个字段设为 push_time 默认为 0 第二步:写一个方法来检查文章列表,把文章列表到时间的文章改为发布状态 //定时发布文章 pu ...

  3. Jquery创建JSON对象

    <html> <body> <h2>通过 JSON 字符串来创建对象</h3> <p> First Name: <span id=&q ...

  4. win7 IIS7.0 【IIS 管理器无法验证此内置帐户是否有访问权】

    异常信息: 服务器配置为将传递身份验证和内置帐户一起使用,以访问指定的物理路径.但是,IIS 管理器无法验证此内置帐户是否有访问权.请确保应用程序池标识具有该物理路径的读取访问权.如果此服务器加入到域 ...

  5. sort对二维字符数组排序(转)

    由于二维字符数组的第二维没有赋值运算符,即不能对整个一维数组进行赋值,因此是无法直接对二维数组用sort进行排序的,解决办法有二种: 代码一: #include <iostream> #i ...

  6. Forms & HTML 组件 - laravelcollective/html

    简书链接 :Forms & HTML 组件 - laravelcollective/html 安装 方法一: composer require laravelcollective/html 方 ...

  7. Xcode7调试-b

    Xcode7中苹果为我们增加了两个重要的debug相关功能.了解之后觉得非常实用,介绍给大家. 1.Address Sanitizer: 妈妈再也不用担心 EXC_BAD_ACCESS? EXC_BA ...

  8. Chrome不支持NPAPI的信息与替代方案

    昨天Chrome稳定版更新到了42版,发现百度云.支付宝.网银等等的插件都失效了,打开 chrome://plugins/ 一看,NPAPI都消失了,只有flash的插件还在.解决办法是到 chrom ...

  9. 多线程信号量 Semaphore使用

    对信号量只能实施三种操作:  1. 初始化(initialize),也叫做建立(create)  2. 等信号(wait),也可叫做挂起(pend)  3. 给信号(signal)或发信号(post) ...

  10. POJ2115 C Looooops(数论)

    题目链接. 分析: 数论了解的还不算太多,解的时候,碰到了不小的麻烦. 设答案为x,n = (1<<k), 则 (A+C*x) % n == B 即 (A+C*x) ≡ B (mod n) ...