忙碌了5天,总算把个人博客给建成了,期间学到了很多东西,整个系统是基于 Google app Engine for Java的,现在好像还不是正式版。
所 以很多jar包都不支持,本来想用的很多技术 都用不了了。呵呵。下面把问题给罗列出来,以便以后有据可查
(1) :struts2的支持
是可以支持的,但是需要另外的做一些动作,添加如下的监听 器
package com.util;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.http.HttpSessionAttributeListener;
import javax.servlet.http.HttpSessionBindingEvent;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;
import ognl.OgnlRuntime;
public class InitListener implements ServletContextListener,
HttpSessionAttributeListener,HttpSessionListener{
@Override
public void contextDestroyed(ServletContextEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void contextInitialized(ServletContextEvent arg0) {
OgnlRuntime.setSecurityManager(null);
}
@Override
public void attributeAdded(HttpSessionBindingEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void attributeRemoved(HttpSessionBindingEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void attributeReplaced(HttpSessionBindingEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void sessionCreated(HttpSessionEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void sessionDestroyed(HttpSessionEvent arg0) {
// TODO Auto-generated method stub
}
}
然后在web.xml文件中添加这个监听器
<listener>
<listener-class>com.util.InitListener</listener-class>
</listener>
网上很多文章,就是这样子说的,我也是照做的,然后就添加 struts2所必需的jar包,不过在这里有一点要注意
我是用myeclipse8.0做的开发,是用的 Google的那个插件,生成的项目,网站根目录的名字是war,当把jar包放在lib目录下的时候
他并不能自动的添加到项目里头,所以还要手工点击增加额外 jar包的方式添加进去,这里也有一点要注意的,就是struts的配置
文件
<!-- 当struts的配置文件修改后,系统是否自动重新加载该文件,默认值为false(生产环境下使用),开发阶段最好打开 -->
<constant name="struts.configuration.xml.reload" value="false" />
<!-- 开发模式下使用,这样可以打印出更详细的错误信息 -->
<constant name="struts.devMode" value="false" />
这2个都要关闭,不然会报异常的,报的是包读取权限异常,小弟不才,也不知道是什么原因造成的。
最后 要检查web.xml 他有时候会自动增加一个jsp:config 里面是BASIC 这个要去掉 不然项目无法启动
(2) strut2的补充。
当启动的时候,会发现缺少一些xalan的jar包,这个时候要的jar包添加到项目里面。下载xalan-j_2_7 把解压开的目录中的jar包都加进去
ok 这个时候项目启动成功了
(3)struts2的标签
经测试,一些标签使用是会报异常的 ,原因是使用了现在不在白名单中的jar包。
目前发现下面是标签是不能用的
<s:textfield>,<s:a>
可能还有更多把,不过我目前就发现这几个
(3) 其他标签库
有一个地方要用到迭代遍历出list的元素,在做一个更新功能 需要连接把参数传过去 发现<s:a>不能用 恼火啊
于是就想想用jstl标签。但是默认的web.xml版本是2.3的 而且默认没有jstl.jar包 把jar包加进去
写<c:foreach> 又报异常了,还是那个兼容性问题。
于是上网找其他的标签。最后发现display标签能够完美支持,呵呵 好 不错 就用你了
(4)一点教训
做个人博客,对struts2 以前就是了解了一点,做过比较小的项目。那个ognl 拦截器的 都不懂,这个项目也只是用action来转发。
但是到后期快完成时候,哈哈,发现很多问题,每个页面都是经过action转发的,自己输入地址栏的方式都访问不了页面了啊。很多地方都是bug ,忙碌几天,也累了,先休息下,至少现在可以展示个人文章了。在找个时间来好好的重整这个bug
博客主页:http://rmh2010blog.appspot.com/