在GAE中使用Struts2的注意事项

准备用GAE搭建一个网站,而Java做网站最熟悉的就是Struts2,于是乎挽起袖子干起来。

然后没想到遇到了很多问题,现将过程记录如下,注意事项用红字标出。

环境与版本:WindowsXP + JDK1.6.0_30 + Eclipse 4.2 + Google 开发插件 + AppEngine SDK 1.7.4 + Struts2.3.8

1、首先把以上全部下载下来,依次装上JDK,Eclipse,Google插件

如果eclipse在线不能装Google的插件(原因你懂的),可以下载离线版的升级包,官方的下载页面如下:

JDK:http://www.oracle.com/technetwork/indexes/downloads/index.html#menu-downloads

Eclipse:http://www.eclipse.org/downloads/

Google插件:https://developers.google.com/eclipse/docs/install-from-zip

AppEngine SDK:https://developers.google.com/appengine/downloads#Google_App_Engine_SDK_for_Java

Struts2:http://struts.apache.org/

2、 用Google插件创建一个工程,点击“New Web Application Project”,去掉Use Google Web Toolkit(GWT,一个用Java写Javascript的工具,要用就勾上)。

如果没有注册过AppEngine的SDK,就点击Configure SDKs,将AppEngine的SDK解压后,add SDK选择解压的路径,如下图:


3、创建GAE项目完毕,开始加入Struts2。首先创建一个用户库,方便以后编译项目的时候不用一个jar包一个jar包加。

在Window->Preferences->Java->Build Path->User Libraries,点击New,取个名然后选择项目会用到的Struts2的Jar包,我加了这些:

commons-fileupload-1.2.2.jar,

commons-io-2.0.1.jar

commons-lang3-3.1.jar

commons-logging-1.1.1.jar

freemarker-2.3.19.jar

javassist-3.11.0.GA.jar

ognl-3.0.6.jar

struts2-core-2.3.8.jar

xwork-core-2.3.8.jar。

然后对你的项目点击右键->Build Path-> Configure Build Path->Libraries页签,加入刚才建的用户库

但这还不够,Eclipse对于用户库里的Jar包是不会自动拷贝到部署位置的,所以还要以上的Jar包手动拷贝到项目的WEB-INF\lib下。

要不启动了之后会报错。

4、为了关闭权限的检查,在web.xml里加入一个Listener,内容如下(包名自己起):

package com.zr.app;
 
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
 
import ognl.OgnlRuntime;
 
public class StrutsAppEngineAdapter implements ServletContextListener {
    public void contextInitialized(ServletContextEvent servletContextEvent) {
        OgnlRuntime.setSecurityManager(null);
    }
 
    public void contextDestroyed(ServletContextEvent servletContextEvent) {
    }
}
web.xml里:

<listener>
    <listener-class>com.zr.app.StrutsAppEngineAdapter</listener-class>
  </listener> 
注意事项:如果在struts.xml里,选的是<constant name="struts.devMode" value="true" />,那么这么做还是不够的, 还需要调用System.setSecurityManager(null);


5、还需要创建一个包freemarker.core,并加一个TextBlock类,貌似freemarker的jar包也有这个类,但是由于权限的TreeNode是个受限制的类无法访问,所以要在自己的项目中把源码复制过来建同名的类,源码在这里下载:TextBlock

6、到了这里,应该可以运行Struts应用了,至于Struts框架的使用,这里不再赘述。

7、其他的一些坑:xml的第一行不能是空行,struts.xml文件名不能写错,且必须放在src根目录下

8、对于编码问题,我个人是全都设置为UTF-8,毕竟这个最通用。

方法是:

1) Window->Preferences->General->Workspace, Text file encoding选择Other,改成UTF-8

2) Window->Preferences->Web-,把CSS、HTML、JSP、JavaScript、 XML等都设置为UTF-8


至此,总算应该能跑起来最简单的应用了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值