自己一星期总结:2008-10-26 04:45下午
struts
1.Struts的基本流程MVC2(model-view-contrller)
from(数据业务model)
|
IE(浏览器)----总调(ActionListener)----Action(C2)----Service(javabean)
| |
| 回到总调(ActionListener)
config.xml和.jsp
model分为业务model、数据model
Struts开发
(1)、 创建表单 extends ActionForm
(2)、 登记表单 struts-config.xml
(3)、 创建分管经理 extends Action(覆盖 execute() 方法)
(4)、 定义流程 struts-config.xml
scope="request" 解释 把表单缓存在仓库Request中
***注意用struts开发时要配置web.xml 配置如下
<web-app>
<servlet>
<servlet-name>controller</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>controller</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
</web-app>
2.文件上传
用到FormFile
具体的操作:
FormFile photo = user.getPhoto();//获取user中的图片流
InputStream is=photo.getInputStream();
String path = application.getRealPath("photo");//路径
FileOutputStream fos = new FileOutputStream(path+"/"+user.getName()+".gif");
int i;
while ((i=is.read())!=-1){
fos.write(i);
}
fos.close();
is.close();
3.中文乱码处理方案
(1)利用filter过滤器
(2)利用request.setCharacterEncoding("GBK");进行强转
(3)利用Struts进行转换(模板模式)(例子留言板3)
方法:继承类RequestProcessor
原因:RequestProcessor是在Form时会调用的九个方法之一,覆盖这个方法可以进行转换
注:在运用图片等上传时request.setCharacterEncoding("GBK");进行中文转换
4.设计模式
java设计模式一共有23种
1,模板模式(由父类定义流程,子类去覆盖)应用很广
5.动态表单(重点)
有人建议所有的表单都可以做成动态表单,可以不要Form
动态表单DynaActionForm
<form-beans>
<form-bean name="loginForm" type="org.apache.struts.action.DynaActionForm">
<!—在下面制定Form的属性 -->
<form-property name="email" type="java.lang.String "/>
<form-property name="password" type="java.lang.String "/>
<!—可以为属性设置默认值 -->
<form-property initial="false" name="rememberMe" type="java.lang.Boolean "/>
</form-bean>
<form-beans>
6.程序设计应尽量降低耦合度,
最好能使程序片分开互不影响,
构架的目的:降低层与层之间的依赖性,容易变化的依赖稳定的。
7.校验
校验有两种(1)用Form.validate()服务器端的校验
(2)配置文件脚本
注:一般的校验都交由客户端处理(javascript)
8.实体关系(重点)
实体关系分为 1:1 /1:n/m:n 三种,注意体会,学会利用关系进行建sql表和处理对象
9.表达式和jstl(重点自学)
1.表达式语言EL
基本 获取本javabean中的对象的值 ${user.name}
Empty操作符 ${empty a} a不存在返回true
判断 ${A?B:C}
page内的属性名和它的值进行映射 ${pageScope.user}
对请求范围内的属性名和值进行映射 ${requestScope.name}
对会话范围内的属性名和值进行映射 ${sessionScope.name}
2.标准标签库jstl
Core标签库
一般用途<c:out><c:set><c:remove><c:catch>
条件标签<c:if><c:choose><c:when><c:otherwise>
迭代标签<c:forEach><c:forTokens>
URL相关的标签<c:import><c:url><c:redirect><c:param>
I18N标签库和国际化标签(不太熟的)