apache2+JK+tomcat5.5部署含有servlet-mapping的站点

从网上下了Jforum,做BBS发布,在部署过程中遇到一问题:tomcat下可以正确运行,但是在如果用apache2做前端,则报错,404,找不到页面,google了很久,发现是Jforum中用了servlet-mapping的缘故,查了资料还是无效。只有自己动手了,从servlet-mapping的原理出发,就是将页面的请求转发到srvlet处理,我就在Apache中做了转发,问题解决。下面是我的两个配置文档:

1、apache2中的虚拟主机配置

<VirtualHost 10.1.1.254:80>
<Directory "/var/j2e/jforum/" >
DirectoryIndex index.htm index.html index.jsp index.php
#AddDefaultCharset utf8
</Directory>
    ServerAdmin help@126.com
    DocumentRoot "/var/j2e/jforum/"
    ServerName jforum.j2elocal.com
    ErrorLog /var/log/apache2/jforum/jorum-error_log
    CustomLog /var/log/apache2/jforum/jforum-access_log common


#JkMountCopy On
#JkMount /* worker1
JkMount /*/servlet/* worker1
JKMount /*.page   worker1
#JkMount /*/*.page worker1
JkMount /*.jsp worker1
</VirtualHost>

 

2、tomcat虚拟主机中的web.xml


    <servlet-mapping>
        <servlet-name>jforum</servlet-name>
        <url-pattern>*.page</url-pattern>
    </servlet-mapping>

注意红色部分!

 

要在 `web.xml` 中添加新的 Servlet(例如你提到的 `MenuServlet`),你需要完成两个步骤: --- ## ✅ 步骤 1:声明 Servlet 类(`<servlet>`) 你需要告诉 Web 容器这个 Servlet 的名字和它对应的 Java 类。 ```xml <servlet> <servlet-name>MenuServlet</servlet-name> <servlet-class>com.example.servlet.MenuServlet</servlet-class> </servlet> ``` - `servlet-name`:Servlet 的内部名称,可以自定义,但要唯一。 - `servlet-class`:完整类名(包括包名),确保该类在 `WEB-INF/classes/` 或 JAR 中存在。 --- ## ✅ 步骤 2:映射 URL 路径(`<servlet-mapping>`) 指定浏览器访问这个 Servlet 的 URL 路径。 ```xml <servlet-mapping> <servlet-name>MenuServlet</servlet-name> <url-pattern>/menu</url-pattern> </servlet-mapping> ``` - `url-pattern`:访问路径,例如:`http://localhost:8080/YourApp/menu` --- ## ✅ 完整添加示例 ```xml <!-- 声明 MenuServlet --> <servlet> <servlet-name>MenuServlet</servlet-name> <servlet-class>com.example.servlet.MenuServlet</servlet-class> </servlet> <!-- 映射 MenuServlet 的 URL --> <servlet-mapping> <servlet-name>MenuServlet</servlet-name> <url-pattern>/menu</url-pattern> </servlet-mapping> ``` --- ## ✅ 注意事项 | 项目 | 说明 | |------|------| | 包路径 | `com.example.servlet.MenuServlet` 应该与你实际的包结构一致 | | 类文件 | 确保 `MenuServlet.class` 编译后位于 `WEB-INF/classes/com/example/servlet/` | | URL 访问 | 添加后可通过 `http://localhost:8080/YourApp/menu` 访问 | | 重启服务器 | 修改 `web.xml` 后需重启 Tomcat 或重新部署应用 | --- ## ✅ 补充说明 - 如果你使用的是 **Servlet 3.0 或以上版本**,也可以使用 `@WebServlet("/menu")` 注解代替 `web.xml` 配置。 - `url-pattern` 可以使用通配符,例如 `/menu/*` 或 `*.do`。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值