2010-12-14 40 views
0

我正在用Struts2开发一个项目。我使用jsp进行网络端。我为我的应用程序使用MySQL数据库,并为它安装了wamp服务器。我的网址就像localhost/xxx?name.action?blablabla ...而不是我想重定向的网址。例如,而不是我的url上的name.action我想使用localhost /名称或类似的东西。我也想通过.htaccess发送数据,就像name.action?Id = $ 1 ...这是我在Struts2端的行为。不过,我无法重定向网址,我无法正确定义文档根目录和.htaccess文件。我该怎么做,你能一步一步解释吗?创建.htaccess

谢谢。

回答

1

您的配置将取决于您要使用的品牌Java EE服务器。 Apache Tomcat与Apache webserver具有非常好的AJP集成,所以这就是我将在这个示例配置中使用的。

你写道你想在Apache中做URL重映射。我强烈建议不要这样做,因为这会很难在应用程序中动态生成URL。您可以更好地使用Web框架的URL映射功能,以保持对该框架的链接生成支持。

我对Struts并不熟悉,但如果它不支持这个基本功能,我建议您切换到Stripes framework或更复杂的Spring MVC框架。你进一步写你想使用JSP,所以我也建议你使用MVC pattern所有这些框架的支持。这意味着您将URL映射到动作/控制器对象,而不是直接映射到JSP文件。

下面是一个例子的.htaccess配置,将通过所有传入的URL为此在.action到Java EE服务器。 URL的传递与请求的URL完全相同,包括它们的(可选)参数。确保端口是Java EE服务器的AJP侦听器端口(或者将其更改为您已配置的端口)。

# Example .htaccess 
# 
# Please make sure 8009 is the port number of your Java EE server 
RewriteEngine On 
RewriteBase/

RewriteRule ^(.*\.action)$ ajp://127.0.0.1:8009/$1 [P,QSA,L] 

另外请确保您已正确配置Apache。例如,你需要配置正确的模块,这些都是我已经被启用的(虽然你可能并不需要所有的人):

LoadModule proxy_module modules/mod_proxy.so 
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so 
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so 
LoadModule proxy_http_module modules/mod_proxy_http.so 
LoadModule rewrite_module modules/mod_rewrite.so 
+0

答案在哪里? – 2010-12-14 14:07:40

+0

我在httpd.conf中启用了它们。但是,我将把.htaccess文件放在哪里以及如何将端口配置为8009? – kamaci 2010-12-16 19:18:18

+0

您放置在Apache Web服务器网站目录根目录下的.htaccess(不在WEB-INF!中)。端口8009是默认端口号(否则将其配置在conf/server.xml中)。如果它不在同一台服务器上,则可能还需要在防火墙上打开此端口。 – Kdeveloper 2010-12-16 21:24:18

0

如果使用的struts2的当前版本,2.2.1你应该建立你的应用程序按照:http://struts.apache.org/2.2.1/docs/create-struts-2-web-application-using-maven-to-manage-artifacts-and-to-build-the-application.html请在页面搜索“web.xml Servlet Filter”完成后,“name”和“name.action”都是到“name”操作的有效映射。至于url参数,这是通过struts形式标签自动处理的。 struts.apache.org网站上的基本教程和标签参考示例。通常根据项目名称通过IDE设置文档根目录,进一步当您编译时,IDE通常会在通过Web界面为您的应用程序服务器/ Web容器部署WAR时创建WAR,从而更改文档根目录通常是可见字段之一安装期间。因此,每个安装都可以轻松进行配置。

+0

你在用什么IDE?如果是Netbeans,那么我可以给出明确的指示,否则我可能有时间更新并提供一般说明。 – Quaternion 2010-12-14 15:13:51

+0

我正在使用Intellij IDEA 9.0.3 – kamaci 2010-12-16 19:19:20

+0

我认为Intellij有Maven支持,您是否使用Maven构建? – Quaternion 2010-12-16 21:06:09

0

您不需要在Struts2中使用.action扩展名。你可以选择不同的扩展名或不扩展名(它听起来像是你想要的)。

+0

我也想通过.htaccess文件发布数据。例如RewriteRule^name/something $ /name.action?type=nameOfType – kamaci 2010-12-16 19:05:03

0

史蒂芬是说正确

只需使用操作名称,当您从JSP调用Struts动作。

例如href="actionName"而不是href="actionName.action"锚定标记中。