您的位置:首页 > 其它

关于工作中的第一个项目的个人总结[主要是个人学到的东西,细节]

2011-11-03 13:44 281 查看
2011-10-24

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

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

今总结如下:

创建jsp 文件(显示页面),创建代码文件(后台控制,service,action)。

其他文件:struts配置文件,i18n文件,js文件,css文件等。

新技术: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/>即可输出,显示

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. 必输入项目上,增加 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();

}

关于省市县的地区级联下拉列表[博客园总结]

每个页面的返回按钮,要指定执行那个action或是那个jsp页面,不可使用history.back(),

容易造成混乱。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: