`
unika_ly12
  • 浏览: 10612 次
  • 性别: Icon_minigender_1
  • 来自: 匕首岛
社区版块
存档分类
最新评论

Struts2.1.8使用心得

阅读更多
这次的项目用到最新的Struts2.1.8,在用的过程中遇到了很多问题,在此一一记录。
一、jsonplugin0.34的问题
jsonplugin0.34在struts2.1.6后就有问题了,其核心原因是xwork在2.1.2版本后将com.opensymphony.xwork2.util.TextUtils去掉了,解决办法将这个类重新考到jsonplugin包里。

二、Struts2标签问题
个人对Struts标签实在不敢恭维,实在难用。在使用了simple主题后情况有所改观。不过,Struts2的flt模板也存在问题。比如checkboxlist:
The java code is :
<table border="0" cellspacing="1" width="100%" cellpadding="0"	class="contextRow">
    <s:checkboxlist cssClass="contextFieldData" name="delValueList" list="descList" listKey="tag_value_id" listValue="valueName" />
</table>
 
The rendered HTML code is:
 
<table border="0" cellspacing="1" width="100%" cellpadding="0" class="contextRow">
<tr>
    <td class="tdLabel"></td>
    <td>
       <input type="checkbox" name="delValueList" value="1311" id="delValueList-1"/>
      <label for="delValueList-1" class="checkboxLabel">16AP</label>
      <input type="checkbox" name="delValueList" value="294" id="delValueList-2"/>
      <label for="delValueList-2" class="checkboxLabel">ADRR</label>
      <input type="checkbox" name="delValueList" value="1312" id="delValueList-3"/>
      <label for="delValueList-3" class="checkboxLabel">AP16</label>
      <input type="checkbox" name="delValueList" value="296" id="delValueList-4"/>
      <label for="delValueList-4" class="checkboxLabel">BAT</label>
      <input type="checkbox" name="delValueList" value="295" id="delValueList-5"/>
      <label for="delValueList-5" class="checkboxLabel">CARP</label>
      <input type="checkbox" name="delValueList" value="248" id="delValueList-6"/>
      <label for="delValueList-6" class="checkboxLabel">EXER</label>
    </td>
</tr>
</table>

看见没,cssClass根本没显示,看了checkboxlist.ftl发现就是如此,在文件中添加如下部分就可以了
<#if parameters.cssClass??>
     class="${parameters.cssClass?html}"<#rt/>
</#if>


三、JFreeChart应用
由于这次项目需要有各种JFreeChart图输出,综合考虑采用如下方式
1.BaseAction是个基类,里面有常用的getSession()等的方法
2.JFreeChartChart是抽象基类,实现了JFreeChart各种图形的实现方式,提供getData()抽象方法用于子类实现
3.ExitChartAction其实是一个出口基类,通过传递图类型参数确定转向哪些子类
4.众多JFreeChartChart子类,实现getData()方法提供JFreeChart图形数据。

四、拦截器--日志管理
借鉴了网上一位仁兄的方法,具体在哪儿看到的记不清楚了,不过还是非常感谢这位仁兄。
        <interceptors>
            <interceptor name="myInterceptor"
                class="com.chiyu.action.admin.log.LoggerInterceptor">
            </interceptor>
            <interceptor-stack name="myStack">
                <interceptor-ref name="myInterceptor"></interceptor-ref>
                <interceptor-ref name="defaultStack"></interceptor-ref>
            </interceptor-stack>
        </interceptors>
        <default-interceptor-ref name="myStack">
        </default-interceptor-ref>


...导入包略
public class LoggerInterceptor extends AbstractInterceptor {
    private IAdminOperationLogService adminOperationLogService;
    private IAdminService adminService;
    private static final long serialVersionUID = 1358600090729208361L;

    @SuppressWarnings("unchecked")
    @Override
    public String intercept(ActionInvocation invocation) throws Exception {
        System.out.println("日志拦截器已经开始启动..");
        String actionName = invocation.getAction().getClass().toString();
        invocation.invoke();
        final Map<String, Object> parameters = invocation
                .getInvocationContext().getParameters();
        boolean result = invocation.getProxy().getExecuteResult();
        String method = invocation.getProxy().getMethod();
        // 取得请求相关的ActionContext实例
        ActionContext ctx = invocation.getInvocationContext();

        HttpServletRequest request = ServletActionContext.getRequest();
        String ip = request.getRemoteAddr();
        Map session = ctx.getSession();
        // 取出名为user的session属性
        String name = (String) session.get(Admin.ADMIN_KEY);
        Admin admin = adminService.findAdminByAdminName(name);
        System.out.println(admin);
        if (admin != null) {
            Adminoperationlog adminLog = new Adminoperationlog();
            adminLog.setAdminId(admin.getAdminId());
            adminLog.setAdminName(name);
            adminLog.setDealTime(new java.sql.Date(System.currentTimeMillis()));
            adminLog.setOperationIp(ip);
            adminLog.setOperationSource(actionName + "---" + method + "---"
                    + parameters + "---" + result);
            adminOperationLogService.save(adminLog);
        }
        return Action.SUCCESS;
    }

    setter和getter略
}


五、OGNL语言
关于OGNL的概念可以google一下,我主要记录一些常用的用法
1.action中的某属性,有setter和getter,这种属性是最好表示的。其实就是request.getAttribute("xxx")或者request.getParameter("xxx");
表达方式${xxx},有人说javascript可以引用吗?答案是可以的
var a = ${xxx};//可以获得值

那如果在struts2标签里呢?也好说,这里举一个页面跳转的例子
<s:action name="xxx" namespace="/xxx" executeResult="true">
    <s:param name="pictureType" value="%{xxx}"></s:param>
</s:action>

2.<s:if test="" />中的判断条件,假设有个属性叫xxx
在test里可以写成xxx == 1或者%{#xxx == 1},但有一点要注意,如果是和字符串比较
xxx == 'a'这样是不行的一定要双引号xxx == "a"
3.其实还有很多应用,我在这就不一一列举了,大家可以一块商讨,下面附上OGNL参考手册奉献给大家。
  • 大小: 21.3 KB
分享到:
评论

相关推荐

    最新struts2.1.8 src and lib

    最新struts2.1.8 src and lib最新struts2.1.8 src and lib最新struts2.1.8 src and lib最新struts2.1.8 src and lib最新struts2.1.8 src and lib最新struts2.1.8 src and lib最新struts2.1.8 src and lib

    struts 2.1.8 jar包

    struts 2.1.8 jar包 struts 2.1.8 jar包 struts 2.1.8 jar包 struts 2.1.8 jar包 struts 2.1.8 jar包 struts 2.1.8 jar包 struts 2.1.8 jar包

    struts2.1.8_jar包

    Struts2.1.8_jar包是针对Java Web开发的一款关键框架——Struts2的特定版本库。这个包包含了开发基于Struts2框架的应用所需的核心组件和其他依赖库,为开发者提供了一整套用于构建MVC(Model-View-Controller)架构...

    开发框架struts2.1.8.zip

    这个"开发框架struts2.1.8.zip"包含了Struts 2的版本2.1.8,这是一个重要的里程碑,因为它引入了许多增强功能和改进,以提升开发者体验和应用性能。 首先,Struts 2的核心特性之一是Action类,它是处理用户请求的...

    struts2.1.8

    例如,Struts2.1.8版本在之后的更新中修复了著名的S2-001漏洞,这是一个远程代码执行漏洞,对使用该版本的系统构成了威胁。 总的来说,Struts2.1.8作为一个早期版本,为开发者提供了构建Web应用的基础,但随着框架...

    struts 2.1.8 jar 完整开发

    commons-fileupload-1.2.1 commons-io-1.3.2 freemarker-2.3.15 ognl-2.7.3 struts2-json-plugin-2.1.8.1 struts2-embeddedjsp-plugin-2.1.8.1 struts2-core-2.1.8.1 ...struts2-spring-plugin-2.1.8.jar

    Struts2.1.8所依赖的主要包

    Struts2.1.8是Apache Struts框架的一个版本,它是一个基于MVC(Model-View-Controller)设计模式的Java Web应用框架。这个版本主要依赖于一系列的JAR(Java Archive)文件来提供其核心功能。以下是Struts2.1.8所依赖...

    struts2.1.8学习笔记

    在Struts2.1.8中,开发者可以通过配置文件添加自定义拦截器或者使用预定义的拦截器链。 4. **模型驱动(ModelDriven)**:Struts2提供了模型驱动模式,允许Action类自动绑定请求参数到一个模型对象,简化了数据绑定...

    struts2.1.8jar包 精简版

    Struts2.1.8是Apache Struts框架的一个版本,这是一个流行且强大的Java Web应用程序开发框架,用于构建基于MVC(Model-View-Controller)设计模式的Web应用。该框架的目标是提供一个结构化和可扩展的方式来管理Java ...

    struts2.1.8插件及学习文档

    在这个“struts2.1.8插件及学习文档”中,我们可以期待找到关于如何使用该版本Struts2进行开发的相关知识和资源。 首先,`struts2.1.8.doc`很可能是一份详细指南或教程,涵盖了Struts2.1.8的核心概念、配置、控制器...

    struts2.1.8+spring2.5.6

    Struts2.1.8与Spring2.5.6是两个经典的Java企业级开发框架,它们在J2EE(Java 2 Platform, Enterprise Edition)应用中扮演着重要的角色。Struts2是一个强大的MVC(Model-View-Controller)框架,而Spring则是一个...

    struts2.1.8.jar(全部jar包及api)

    10. **apps**:可能包含了一些示例应用程序或模板项目,用于演示如何使用Struts2.1.8开发实际的Web应用。 通过理解以上知识点,开发者可以有效地利用Struts2.1.8构建高效、可维护的Java Web应用。这个版本的Struts2...

    struts2.jar包(struts2.1.8.jar包)三号文件(太大总共分三次)

    它可能包含了如何使用Struts2的动作、拦截器和插件来实现邮件的接收、显示和管理。 3. struts2-blank-2.1.8.war:这是一个基础的、空白的Struts2应用模板,用于快速启动新项目。开发者可以基于这个模板添加自己的...

    struts2.1.8的包

    通过这些知识点,开发者可以深入理解Struts2.1.8框架的使用,并结合Spring、JSF和JFreeChart等技术,构建功能丰富、高效且具有图表展示能力的Java Web应用。同时,了解和掌握相关的配置、集成及优化策略,对于提升...

    Java代码生成工具 绿色版_生成Struts2.1.8,Spring2.5,Hibernate3代码

    Java代码生成工具是一种高效开发辅助软件,主要用于自动化生成基于Java技术栈的Web应用程序代码,尤其针对Struts2.1.8、Spring2.5和Hibernate3这三个经典框架的集成应用。这样的工具能够显著提高开发效率,减少手动...

    struts2.jar包(struts2.1.8.jar包)一号文件(太大总共分三次)

    描述中的"struts2.jar包struts2.1.jar包struts2.1.8.jar包"可能是提到Struts2框架的不同版本或者不同部分。"struts2.jar"是核心框架的JAR文件,包含了框架的基本组件和功能。"struts2.1.jar"可能是指Struts2的2.1...

    struts 2.1.8 spring 2.5 jap ext 整合 例子2

    struts 2.1.8 spring 2.5 jap ext 整合 例子 struts 2.1.8 spring 2.5 jap ext 整合 例子

    struts2.1.8 struts2源码 Eclipse关联这个可以

    Struts2是一个非常著名的Java Web开发框架,由...通过理解和掌握这些知识点,开发者可以有效地使用Struts2.1.8构建Web应用,并能进行定制化开发和问题调试。结合Eclipse的源码关联,学习和工作效率将得到显著提升。

Global site tag (gtag.js) - Google Analytics