zoukankan      html  css  js  c++  java
  • 关于工作中的第一个项目的个人总结[主要是个人学到的东西,细节]

    2011-10-24

    关于进入haier之后,就接手的第一个实践性的项目[9月中旬到10月中旬],有很多学习到的地方,自然有很多需要总结的。

    [对于自己来说,都是需要注意的或是没有用过的,都是新的知识点]

    今总结如下:

    1. 创建jsp 文件(显示页面),创建代码文件(后台控制,service,action)。
    2. 其他文件:struts配置文件,i18n文件,js文件,css文件等。
    3. 新技术:EJB jquery 新服务器:glassFish

    在接到项目初期:主要是jsp页面,action处理,service模拟数据。

    中期:调用对方的EJB接口。[他们提供的EJB接口,是利用了EJB技术调用数据库里的数据,当所有的一切都写好了,只是我们在action前调用他们现成的接口即可,与EJB技术本身理解上不是很深,如同模拟数据的service层]

    后期:修改,改进,精化。

    在时间周期上,最浪费时间的就是:了解EJB接口;glassFish的部署;后期修改。

    详细总结各种细节:

    Jsp文件:根据本项目使用struts框架,便于处理,所有的jsp文件都导入struts2标签

    <%@ taglib uri=”/struts-tags” prefix=”s”%>;同时所有文件编码必须是UTF-8,所以在头文档里<%@ page language=”java” pageEncoding=”UTF-8”%>

    一、jsp页面

    在jsp页面,最重要的,也是在此项目中收获最多的就是页面传值和验证信息。

    公共样式:引入公共的样式表,调好div布局,或table布局。

    页面传值:

    (1)一般使用<s:hidden name=”homeUser.usersId.id” /> 如果当前对象是homeUser,那么只写name属性,即可得到值。如果当前对象不是homeUser,

    就是用value属性获得,

    比如<s:hidden name=”homeUser.id” value=”homeMember.homeUserId.id”/>,在成员页面往回返的时候,需要homeUser的id,就可以通过homeMember先获得HomeUser对象,在得到id。【具体细节仍需深思!】*:传值时要考虑返回页面需要的参数。

    (2)在页面链接action需要传参数时,

    比如:familyUserDetails.action?homeUser.usersId.id=’<s:property value=”id”/>’,

    最难理解的是:为什么本页没有homeUser对象[当前页是列表,users对象],却可以传homeUser对象?在此须明白,这并不妨碍,homeUser.usersId.id即users.id;homeUser对象是传往下一个页面,而homeUser.usersId.id值在本页中有即可。要求后者<s:property value=”id”/ >在本页可取到值。

    验证信息:通常以为在后台action验证了即可,为了规范标准,前台也需要验证。

    在页面验证时需要注意:

    <s:textfield name=”hu.userName” cssClass=”stext required” maxlength=”60”>表示此字段是必选项的单行文本输入框,限制字符60个,与数据库保持一致。

    此行代码下是<s:fieldError theme=”custom”>

                                           <s:param>hu.userName</s:param>

                                 </s:fielderror>

    后台对此字段的验证。Theme=”custom”为了确保页面显示的美观,在一行内显示,即在输入框后是提示。

    注意事项:[jsp页面上的注意事项:]

    返回的一个字段是多项时,需要返回list

    1单选:比如:性别、状态;<s:radio name=”hu.status”

    List=”#{getText(‘users.status.disable’):getText(‘users.status.disable’),

    getText(‘users.status.enable’):getText(‘users.status.enable’)}”

    在此是一个实现了国际化的,list集合里面是两个元素 禁用 启用,

       2下拉列表: 当返回是两个以上,从数据库里面取得数据,比如:社区下拉列表;

    <s:select list=”coms” listKey=”id” listValue=”name” name=”hu.community”></s:select>

    coms是从后台获得的返回回来的数据,coms拥有id和name,在页面上显示name[listValue=”name”决定的],而返回的是用id识别的[listKey=”id”决定的],如果coms只有name没有id,在<select>标签中那么写是错误的,是找不到的。

    为了保证兼容浏览器,js代码最好是用jquery的形式获取到元素,再对它操作。

       $(document).ready(function(){

             $(‘#form’).validate();

    $(‘#btnSubmit’).click(function(){

      $(‘#form’).submit();

    });

    });

    关于隐藏域。

    形式:<s:hiddern  name=”” value=””/>

                 <input type=”hidden” name=”” value=””/>

    含义:最大的作用:传参,传当前页不能显示的值。

    <s:hiddern name=”homeUser.id”/>当从action跳往这个页面时,返回了homeUser对象,则这样写肯定能得到homeUser的id的值,如果action返回的不是homeUser对象,比如homeMember对象,此时这样写是得不到的,应该:

    <s:hiddern name=”homeUser.id”

    Value=”homeMember.homeUserId.id”/>,才能获得到。

    隐藏域就是往action传递参数,name要和要传的对象相对应。

    二、后台action代码                                                                                                                                      

    在后台代码的实践中,最大的收获就是逻辑。

    最大的失误也是逻辑混乱,要考虑的重点就是该action所要接收的参数,和返回的对象。

    即传往jsp页面的参数。

    同时,每个action方法后可跟validate***()验证方法,在程序运行时,会默认首先进行validate方法的校验,然后再执行,action对应的方法。

    如果验证通不过,此时需要return; 表示默认返回当前页。

    [必须在struts配置文件中配置返回为input的情况]

    注意点:当一个方法未成功还是停留在本页的时候,需要保留本页的参数对象,而调用方法之后此时未必保留住参数,则需要在未通过之前再调用一下相关的方法获得相应的参数对象,以便停留当页还正常显示。

    三、其他文件。

    I18n国际化文件

    massageResource_zh_CN.properties配置文件中,使用键值对的形式,而在前台后台取法不同,在jsp页面上,<s:text name=”key”/>

    如果是在struts标签内取值,比如value=”%{getText(‘key’)}”,则使用EL表达式。

    在后台的取值,同样使用this.getText(“key”);

    带参数的形式:this.getText(“key”,new String(“100”)),

    在配置文件里如:最大值不得超过{0};0表示第一个参数,以此类推。

    注意事项(细节):1.关于struts2验证:ActionMassage、ActionError、FieldError

    (1)当对一个form表单中的一个字段进行验证的时候,使用FieldError,后台:this.addFieldError(args1,args2);args1表示那个字段,args2表示提示的错误信息

    在页面上使用<s:fieldError>

    <s:param>args1</s:param>

    </s:fieldError>

    输出,显示

    (2)当出现错误需要返回或提示时,使用ActionError,后台:this.addActionError(args);args直接将错误的提示或警告写入,在页面上使用<s:actionError/>即可输出,显示

    (3)当出现需要提示,使用ActionMassage,后台:this.addActionMassage(args);args直接将提示的信息写入,在页面上使用<s:actionMassage/>即可输出,显示

    1. struts配置文件struts.xml

    action中 type 是redirect 后,在action中添加参数,实现页面跳转后,消息能正常输出

    <action name="setRoleToUser" method="setRoleToUser" class="com.haiersoft.uhome2.boss.user.action.UserRoleAction">

    <result name="success" type="redirectAction">listPlateFormUsers_.action?msgs=${msgs}&errs=${errs}</result>

    <result name="error">/user/userException.jsp</result>

    </action>

     

    1. 关于必选输入项的设置[即在必须的输入框后面加一个红色的*] 

    必输入项目要求,在输入框后面增加红色 *

     

    修改如下:

     

    1. 必输入项目上,增加 css class required 

    <s:textfield name="users.userName"  cssClass="stext required" maxlength="30"/>

    2. 引入 jquery.required.js :<script type="text/javascript" src="../js/jquery.required.js"></script>

    3. 在ready事件中,调用 $(".required").requiredTip();

    $(document).ready(function() {                

                    $(".required").requiredTip();

    }

    1. 关于省市县的地区级联下拉列表[博客园总结]
    2. 每个页面的返回按钮,要指定执行那个action或是那个jsp页面,不可使用history.back(),

    容易造成混乱。

  • 相关阅读:
    [转载] ASP.NET MVC (一)——深入理解ASP.NET MVC
    冒泡排序C#实现,使用委托,包括三种方式:Fun<>,匿名方法,Lambda表达式
    工厂模式怎么用?举例说明
    使用设计模式,到底有什么好处?举例说明
    百度 Echarts 地图表 js 引用路径
    移动Web
    uni-app
    微信公众号分享时,提示invalid signature,签名错误
    windows系统开放外部访问端口
    node报错Request header field Content-Type is not allowed by
  • 原文地址:https://www.cnblogs.com/yuedanfengqing/p/2234442.html
Copyright © 2011-2022 走看看