最近的J2EE项目经验总结

最近接了个接手了个擦屁股的J2EE项目,由于两年多没有写过J2EE项目了,加上接手时上一个人已经用他熟悉的框架结构做了很多东西,所以遇到很多问题,中间有些问题很有意思,现在项目总算差不多完成,特发此文以总结经验。

1、开发环境是Myeclipse 9.0+tomcat7.0.27,每次代码调试之后要看效果(尤其是页面模版调整一下,仅仅是改了css要看下效果)需要重新Redeploy,然后重启tomcat才能看到效果,非常浪费时间,后来百度发现早有高手解决此问题。

解决方法是:打开tomcat安装目录下的conf目录下的context.xml文件,在修改<Context>为<Context reloadable="true">,然后重启tomcat即可实现修改页面模版,自动更新的效果。

2、在Myeclipse中调试启动tomcat经常出现如下问题:Caused by: java.io.NotSerializableException: com.udiansoft.quality.pagemodel.RoleEditModel
严重: IOException while loading persisted sessions: java.io.WriteAbortedException: writing aborted; 
......百度后发现也有高手解决此问题(http://happy2008hjp.blog.163.com/blog/static/1167014472009101344615438/)

解决方法同样是修改context.xml文件,在Context节点下添加如下代码即可:

    <Manager className="org.apache.catalina.session.PersistentManager" saveOnRestart="false">

        <Store className="org.apache.catalina.session.FileStore"/>

    </Manager>

3、登陆后经常出现页面跳转到http://localhost:8080/favicon.ico的问题,百度N页无果,google香港版也是无果,不得已fq上google美国版才发现一篇英文的解决办法。

解决方法是:在ACEGI的配置文件ApplicationContext-security-acegi.xml中找到"PATTERN_TYPE_APACHE_ANT"字符串,在他下面添加一行"/favicon.ico=PRIV_ANONYMOUS"

4、 因为在ibatis2环境下,某些业务需要做大量的数据库操作业务,需要写很多sql时很不方便,所以便想用数据库的存储过程实现,在spring3+ibatis2环境下调用mysql存储过程的方法找了好多贴子,但都有这样那样的问题,最后参考多个帖子终于实现成功,记录如下:

xml文件中添加如下:

    <parameterMap id="proAutoCreateDangerDailyProc" class="java.util.Map">
        <parameter property="device_id" jdbcType="INT" javaType="java.lang.Integer" mode="IN"/>
        <parameter property="touserid" jdbcType="INT" javaType="java.lang.Integer" mode="IN"/>
        <parameter property="report_userid" jdbcType="INT" javaType="java.lang.Integer" mode="IN"/>
    </parameterMap>
    <procedure id="autoCreateDangerDailyProc" parameterMap="proAutoCreateDangerDailyProc">
        <![CDATA[
        {call autoCreateDangerDailyProc(?,?,?)}
        ]]>
    </procedure>

然后DAO类extends SqlMapClientDaoSupport之后调用代码如下:

Map initMap = new HashMap();
initMap.put("device_id", device_id);
initMap.put("touserid", touserid);
initMap.put("report_userid", report_userid);
this.getSqlMapClientTemplate().insert("autoCreateDangerDailyProc", initMap);

5、因业务需要,要实现webwork2.2.5中同一namespace下内部Action之间带参数的跳转,从《WebWork in Action》找到实现方法如下:

配置xml文件中如下(注意红色部分):

        <action name="auditSave" class="com.udiansoft.quality.action.modules.AuditSaveAction">
            <external-ref name="userService">userService</external-ref>
            <external-ref name="processlogService">processlogService</external-ref>
            <result name="success" type="redirect">
                <param name="location">auditEdit.do?fromtype=danger&amp;id=${danger_id}</param>
            </result>
            <result name="error" type="freemarker">
                <param name="location">/view/error/error.ftl</param>
            </result>
            <interceptor-ref name="WSStack" />
        </action>

发起调用的Action中(这里是AuditSaveAction)实现代码如下:

首先定义变量:

   private Integer id=0;

然后在execute()方法中:

    id = danger_id;
    return SUCCESS;

之后在被调用的Action(这里是AuditEditAction)的Model文件(这里是DangerEditModel)中增加变量id及其get和set方法,然后在Action(这里是AuditEditAction)的execute()方法中使用如下方式即可获取到参数:

int id = dangerEditModel.getId();

 

你可能感兴趣的:(J2EE,tomcat7,Acegi,favicon.ico)