[转载]TOMCAT下配置SERVLET

Servlet自动刷新测试示例
博客展示了一个Servlet测试示例,包含自动刷新功能,刷新时间为5秒,还显示当前时间。
Tomcat新手攻略 1、下载必要软件 ①JDK 1.4.2 ②Tomcat 4.0 2、配置环境 windows系统用户: 我的电脑------〉右键-------〉属性-------〉详细-------〉环境变数 path = x:/jdk1.4.2/bin JAVA_HOME=x:/jdk1.4.2 CATALINA_HOME=x:/tomcat(这里有的是TOMCAT_HOME=x:/tomcat) 注:这里x为安装的驱动器。 这里要怎么设置取决于bin目录下的startup.bat文件。 我们可以在编辑状态下打开startup.bat,看究竟这个文件需要读取那个系统变量,我们就设置那个。比如当前我的版本tomcat的startup.bat文件内容如下: @echo off if "%OS%" == "Windows_NT" setlocal rem --------------------------------------------------------------------------- rem Start script for the CATALINA Server rem rem $Id: startup.bat,v 1.4 2002/01/15 02:55:38 patrickl Exp $ rem --------------------------------------------------------------------------- rem Guess CATALINA_HOME if not defined if not "%CATALINA_HOME%" == "" goto gotHome set CATALINA_HOME=. if exist "%CATALINA_HOME%/bin/catalina.bat" goto okHome set CATALINA_HOME=.. :gotHome if exist "%CATALINA_HOME%/bin/catalina.bat" goto okHome echo The CATALINA_HOME environment variable is not defined correctly echo This environment variable is needed to run this program goto end :okHome set EXECUTABLE=%CATALINA_HOME%/bin/catalina.bat rem Check that target executable exists if exist "%EXECUTABLE%" goto okExec echo Cannot find %EXECUTABLE% echo This file is needed to run this program goto end :okExec rem Get remaining unshifted command line arguments and save them in the set CMD_LINE_ARGS= :setArgs if ""%1""=="""" goto doneSetArgs set CMD_LINE_ARGS=%CMD_LINE_ARGS% %1 shift goto setArgs :doneSetArgs call "%EXECUTABLE%" start %CMD_LINE_ARGS% :end 我们可以清楚的看到这个文件需要读取系统变量CATALINA_HOME的值,所以我们在环境变数中把CATALINA_HOME设置为tomcat的安装路径就可以了。 3、启动、关闭tomcat 有2种方法可以启动、关闭安装好的tomcat: ① 直接点击运行bin目录下startup.bat和shutdown.bat文件就可以。 ② 由于前面我们设置了path,所以我们直接在Dos窗口中直接键入startup或shutdown亦可。 4、设置虚拟目录 编辑server文件(x:/tomcat/conf/server.xml) 因为在tomcat启动时要读取server文件的信息,所以更改server文件后,一定要重新启动tomcat。 举个例子: 我们打算建立一个myJSP的虚拟目录,只要在server.xml文件中加入如下代码即可: 其中,path为我们要建立的虚拟目录,docBase为实际目录在硬盘上的位置。 5、试我们前面工作的成果 编一个简单的小例子,来测试一下我们的虚拟目录是否可用。 refresh.jsp (c:/myJSP/refresh.jsp) AUTO REFRESH

auto refresh example


refresh time : 5 sencords

Now Time is:
在地址栏键入http;//localhost:8080/myJSP/refresh.jsp,呵呵,看到效果了吧。 1.先添加servlet的环境变量,我用的是win2000,所以只要在我的电脑->属性->高级->环境变量,然后新建一个classpath, 因为我的Tomcat5.0目录是在C:/Tomcat 5.0 所以变量值为 C:/Tomcat 5.0/common/lib/servlet-api.jar 与tomcat4不同的是tomvat4的jar文件是servlet.jar 编辑好环境变量后重启计算机 2.写一个servlet文件 import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class Test extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { PrintWriter out=response.getWriter(); out.println("

This is a servlet test.

"); out.flush(); } } 可放在任一classes目录,此处,我选择虚拟目录D:/jsp/webapp server.xml设置: 与中间编辑如下代码: Test Test Test /Test 其中,Test说明class文件为Test /Test说明将声明的servlet“映射”到地址/Test上, 4.运行: 启动Tomcat,启动浏览器,输入http://localhost:8080/webapp/Test 如果看到输出This is a servlet test.就说明编写的servlet成功了。 如果要放到其他的目录上运行,那么,原理也是一样!!
<think> 我们正在讨论将servlet-api.jar复制到$JAVA_HOME/jre/lib/ext目录下的具体步骤。这个操作通常是为了在编译和运行Servlet时,让JVM能够自动找到Servlet相关的类(即避免ClassNotFoundException)。但请注意,在生产环境中,通常不建议将servlet-api.jar放在JRE的扩展目录中,因为: - 它可能与服务器(如Tomcat)自带的Servlet API冲突 - 不同容器(Tomcat/Jetty等)提供的Servlet API版本可能不同 然而,如果是为了解决特定的编译问题(例如在命令行编译Servlet),或者是在一些特殊环境中(如Hadoop集群中运行某些包含Servlet的应用),可能需要这样做。 操作步骤(以Linux系统为例,Windows类似): ### 步骤1:确认JAVA_HOME环境变量 ```bash echo $JAVA_HOME ``` 如果未设置,需要先设置。例如: ```bash export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64 # 根据实际路径修改 ``` ### 步骤2:定位servlet-api.jar文件 通常,servlet-api.jar可以在Tomcat的lib目录下找到: ```bash find /path/to/tomcat -name "servlet-api.jar" ``` 示例路径:`/opt/tomcat/lib/servlet-api.jar` ### 步骤3:复制到扩展目录 ```bash # 使用sudo(如果需要权限) sudo cp /path/to/servlet-api.jar $JAVA_HOME/jre/lib/ext/ # 如果使用JDK,路径可能是$JAVA_HOME/jre/lib/ext(JDK8及之前)或$JAVA_HOME/lib/ext(JDK9及以上) # 对于JDK9及以上,扩展目录已弃用,建议使用模块化方式管理依赖 ``` ### 步骤4:验证 ```bash ls $JAVA_HOME/jre/lib/ext | grep servlet-api.jar ``` ### 注意事项 1. **权限问题**:如果出现权限拒绝,使用`sudo`或调整目录权限 2. **版本冲突**:避免不同版本的servlet-api.jar同时存在 3. **集群环境**:如引用[1]所述,在集群的每个节点上都需要执行(如bigdatamaster, bigdataslave1, bigdataslave2) > **重要提示**:在应用服务器(如Tomcat)中部署Servlet应用时,不需要将servlet-api.jar放入扩展目录,因为服务器本身会提供该jar包。此操作主要用于非服务器环境(如独立Java程序)需要Servlet API的情况。 ### 替代方案 - 在编译时通过`-cp`指定servlet-api.jar的路径: ```bash javac -cp /path/to/servlet-api.jar MyServlet.java ``` §§相关问题§§ 1. 为什么在Tomcat中部署Servlet应用不需要将servlet-api.jar放入扩展目录? 2. 在Java 9及以上版本中,如何解决Servlet API的依赖问题? 3. 如何检查JVM已加载的扩展jar包列表? </think> ### 将servlet-api.jar复制到`$JAVA_HOME/jre/lib/ext/`的操作步骤 #### 1. **确认Java安装路径** 首先确定`$JAVA_HOME`的实际路径: ```bash # Linux/Mac: echo $JAVA_HOME # Windows: echo %JAVA_HOME% ``` 若未设置,通过以下命令查找: ```bash # Linux/Mac: which java # 显示路径如 /usr/bin/java ls -l /usr/bin/java | grep -oP '(?<=-> ).*' # 解析真实路径 # Windows: where java ``` 典型路径示例: - Linux: `/usr/lib/jvm/java-11-openjdk-amd64` - Windows: `C:\Program Files\Java\jdk1.8.0_301` #### 2. **定位servlet-api.jar文件** 从Tomcat的lib目录获取该文件: ```bash # Tomcat默认位置: find /opt/tomcat/lib -name "servlet-api*.jar" # Linux dir "C:\apache-tomcat-9.0\lib\servlet-api*.jar" /s # Windows ``` 常见文件名: - `servlet-api.jar` (Tomcat 7/8) - `jakarta.servlet-api.jar` (Tomcat 10+) #### 3. **执行复制操作** ```bash # Linux/Mac(需sudo权限): sudo cp /path/to/tomcat/lib/servlet-api.jar $JAVA_HOME/jre/lib/ext/ # Windows(管理员权限): copy "C:\apache-tomcat-9.0\lib\servlet-api.jar" "%JAVA_HOME%\jre\lib\ext\" ``` #### 4. **验证复制结果** ```bash # 检查文件是否存在: ls $JAVA_HOME/jre/lib/ext | grep servlet-api # Linux/Mac dir %JAVA_HOME%\jre\lib\ext | findstr servlet-api # Windows ``` #### 5. **配置环境(可选)** 若需全局生效,添加CLASSPATH: ```bash # Linux/Mac (.bashrc): export CLASSPATH=$CLASSPATH:$JAVA_HOME/jre/lib/ext/servlet-api.jar # Windows (系统环境变量): 新建系统变量 CLASSPATH=%JAVA_HOME%\jre\lib\ext\servlet-api.jar ``` > **关键注意事项**: > 1. **权限问题**:操作需管理员/root权限 > 2. **版本匹配**:确保Tomcat版本与Servlet API版本一致 > 3. **多节点同步**:集群环境需在所有节点重复操作(如bigdatamaster, bigdataslave1等)[^1] > 4. **替代方案**:更推荐使用构建工具管理依赖(如Maven添加`provided`作用域依赖) ### 操作示意图 ```mermaid graph LR A[定位JAVA_HOME] --> B[查找servlet-api.jar] B --> C[复制到jre/lib/ext] C --> D[验证文件存在] D --> E[配置CLASSPATH] ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值