`
gxhslcww
  • 浏览: 76949 次
  • 性别: Icon_minigender_1
  • 来自: 南通
社区版块
存档分类
最新评论

Struts1.3 编程 笔记

阅读更多
12月23日
网站,新闻发布系统:
1 充分理解MVC
2 掌握MVC在JavaEE中实现的方式
3 了解写文档的过程
4 掌握FCKEditor
高级部分:
程序的设计,维护,调试(测试)
框架:
JavaEE轻量级开发
Struts + Hibernate + Spring
JavaEE重量级
EJB2.0------à最初的设计--------让程序员实现的时候,非常的复杂并且有很多的限制
现在EJB3.0出现解决了一些问题
学习框架的目的:
1 标准的程序设计
2 使程序更容易维护
3 便于程序的调试
4降低了代码量
如何来学习框架:
1 了解框架的作用
2 掌握常用的框架(配置方式)------XML
3 掌握框架技术实现原理
SSH---à 使程序员只基于----POJO编程
Struts:
就是MVC设计模式的实现框架
软件开发架构:
Web应用开发架构-----FrameWork
Framework是可重用的,可扩展的,半成品的应用程序
目前流行的web架构
Struts, JATO, JSF, Webwork
Struts的历史:
Apache软件基金下的Jakarta项目子项目,2001年6月发布1.0版本
Struts的基本实现:
MVC中,Struts主要的任务就是实现控制器(C)――struts—config.xml
视图(V)--- struts标签库(tag lib)
至于模型部分:Struts不考虑
模型(M)―――使用DAO + Factory设计模式
2 Struts开发环境的搭建
2.1 包的选择:
1 antlr-2.7.2.jar
2 commons-logging-1.0.4.jar
3 strults-taglib-1.3.9.jar
4 commons-beanutils-1.7.0.jar
5 commons-chain-1.1.jar
6 oro-2.0.8.jar
7 struts-core-1.3.9.jar
8 commons-digester-1.8
解压struts-1.3.9-all包,把以上八个.jar copy到lib下
3 Struts V1的开发过程:
1 新建动态项目MyFirstStruts1
2 修改web.xml 支持Struts
struts-1.3.9-all包下的apps、struts-blank-1.3.9.war copy到webapps下,解压,
3 添加WEB-INF/struts-config.xml
当前WEB-INF的结构/
WEB-INF/
          lib
          struts-config.xml
          web.xml
Struts是一个MVC框架:
M----à
MyFirstStruts1实现一个用户登录功能
1 实现M
src/
com.user.dao;
IUserDAO.java(username,password)
Public Boolean login(User user)
UserDAOImpl.java
DAOFactory.java
com.user.domain;
User.java(username,password)
WebContent/login.jsp
          login_success.jsp
          login_fail.jsp
3 实现C(Strults1):
3.1 实现一个对应的表单类,这个类继承于ActionForm
com.user.struts.form
LoginForm.java
3.2 实现一个Action决定表单的映射这个类继承于Action
src/com.user.struts.action
LoginAction.java
右击source选中倒数第七个
form对应于映射类
actionForm对应于表单类
3.3 配置struts-config.xml决定Action的路径
12月24日
struts-config.xml
action标签中属性的作用:
path= ” ”               //是servlet的映射路径,当访问abc.do被激活
type=“package.class”    //对应struts Action类的绝对路径
scope=”request”         //变量的生命周期
input=”/xxx.jsp”         //当验证表单失败时,跳转的路径
name=”xxx”            //是必须属性,当attribute不存在的时候,它的名字被作为属性的                       名字,它和formbean中的name属性一样
attribute=”xxx”          //是可选属性,当它存在的时候,获得属性名由它决定
validate=”true || false”     //是否进行表单的验证,默认为true
parameter=”xxx”         //获得表单中的组件的name属性
action中的子标签forward标签:
name=      //代表对应path的别名
path=       //代表跳转的路径xxx.jsp
练习:
使用Struts实现一个数据库版本的用户添加功能(Struts1)
User
id,username,password
1 M(DAO + Factory)
2 V
3 C(配置Struts)
2 Struts2的体验
1 配置Struts2的开发环境:
freemarker-2.3.12.jar
struts2-core-2.1.2.jar
ognl-2.6.11.jar
xwork-2.1.1.jar
commons-fileupload-1.2.1
新建项目 MyFirstStruts2
2.1 添加Struts2的支持web.xml
2.2 对应表单类(POJO)
  src/ com.user.struts2.
User.java
Username,password
2.3 struts2配置文件:struts.xml
   路径src/struts.xml
Struts1:可以解决
Struts2:不依赖容器,并且不入侵
12月25日
1 搭建开发环境
2 使用框架WEB.XML
3 实现类--à 依赖框架
4框架配置文件
Struts V1的工作流程:
0 web.xml中的org.apache.struts.action.ActionServlet工作,根据<init-param>读取Struts-config.xml
1 客户端浏览器 xxx.do
1.1 ActionServlet
1.2 RequestProcessor
2 ActionForm接收数据
2.1 struts-config.xml中的action标签
validate=”true” ,将会自动调用ActionForm中的ActionErrors validate( )
   如果出现了错误,就跳转action标签中的input属性指定的路径
报错消息细节实现:读取struts-config.xml中的message-resources标签中指定的资源文件
3 action标签中的指定的type属性类工作
取决于:Action子类中的ActionForward excute( )
3.1 excute( )方法访问Javabean------访问数据库
   根据Javabean返回值决定转发到某一个xxx.jsp取决于action标签中的forward子标签
2 Struts中的错误处理
<message-resources parameter=”MessageResources” />
struts将会到src/MessageResources.properties读取文件
示例:
<message -resources parameter=”com.user.struts.MessageResources” />
src/com/user/struts/MessageResources.properties读取配置文件
显示ActionErrors的错误消息:
一般使用struts的html标签显示
struts标签库:----主要作用:生成HTML(UI)
<%@ taglib uri = http://struts.apache.org/tags-html prefix=”html”%>
2 使用
<html:erroers />
注意:依赖struts-taglib-1.3.9.jar
资源文件的编写:
使用jdk提供的native2ascii指令进行编写
C:\Program Files\Java\jdk1.6.0_06\bin下的native2ascii.exe
3 StrutsV1中的组件分类:
有两类组件:
1 控制器组件:
ActionServlet          //Struts架构的中央控制器
RequestProcessor       //包含了Struts控制器处理servlet请求时所遵循的控制逻辑
Action               //处理业务逻辑
ActionForm           //保存用户表单数据以便于在不同页面间传递
ActionMapping        //用于控制在状态数据改变后的事件处理的方式
ActionForward         //用户指向或者视图选择
2 视图组件相关的工具:
主要包括Struts架构中提供的强大标记库:
struts-html.tld标记库:扩展HTML Form的JSP标记
struts-bean.tld标记库:扩展处理JavaBean的JSP标记
struts-logic.tld标记库:扩展测试属性值的JSP标记
3 控制器中的RequestProcessor的理解
手册在struts-1.3.9\docs\apidocs下
新建项目:MyRequestProcessor
MyFirstStruts1中的代码copy到这个项目下
src/com.user.struts.ctrl.MyRequestProcessor.java
extends RequestProcessor
自定义控制器的实现步骤:
1 xxx class extends RequestProcessor编写规则
2 修改struts-config.xml
<controller
   processorClass=”package.class”>
</controller>
12月26日
ActionForm Bean的生命周期:
控制器接受请求
|
从request或session中取出ActionForm对象
如没有,则自动创建一个
|
调用ActionForm对象的reset()方法
|
将ActionForm对象保存在指定的范围(session/request)
|
将用户提交的表单数据封装在ActionForm对象中
|
如果<action>validate属性为true,则调用
ActionForm的validate()方法
|
将ActionForm对传递给execute()方法
1、Struts的动态表单
实现是通过:org.apache.struts.action.DynaActionForm
实现步骤:
编写:struts-config.xml
<form-beans>
<form-bean name="UserForm" type="org.apache.struts.action.DynaActionForm">
<form-property name="xxx" type="java.lang.String" />
<form-property name="xxx" type="java.lang.String" />
</form-bean>
新建项目:MyDynaActionForm
优点:
可以在开发中少写一个ActionForm类
缺点:
DynaActionForm缺少了验证功能
2 带有验证功能的动态表单
细节:使用struts的验证框架:
org.apache.struts.validator
Validator框架依赖于:commons-validator-1.3.1.jar
这个框架作为Struts的插件(plugin)身份出现
验证框架依赖两个配置文件实现验证规则:
validator-rule.xml          //框架支持配置文件----默认提供
validation.xml            //框架验证规则----自定义
WEB-INF/
使用验证功能的动态表单配置步骤:
1 搭建验证框架的支持环境
1.1 将验证框架的支持加入struts-config.xml,通过<plug-in>标签实现
1.2 validator-rule.xml, validateion.xml 复制到WEB-INF/
注意点:struts-config.xml<action>, 标签中的validate=”true”
2 使用带有验证功能的动态表单:
org.apache.struts.validator.DynaValidatorActionForm
如何使用:
<form-bean name=”UserForm” type=”org.apache.struts.validator.DynaValidatorForm”>
新建项目:MyDynaValidatorActionForm
1 将MyDynaActionForm的代码copy过来
2 搭建验证框架支持
3 修改struts-config.xml
3.1 form-bean type属性
3.2 <plug-in>
4 写入验证规则:validation.xml
Src/ MessageResources.properties
3 使验证框架产生客户端JavaScript验证脚本
login.jsp
login_javascript.jsp
注:使用struts html标签
<html:form action=”login.do” method=”post” >
</html>
12月27日
ActionForm解决
Action
CRUD
C---à Create
R--à Read
U---à Update
D---à Delete
1 解决Action的开发数量
org.apache.struts.actions.DispatchAction
注意:依赖struts-extras-1.3.9.jar支持
实现步骤:
1 新建的Action类extends DispatchAction
注:dispatchAction中的方法要与隐藏域中的value一一对应
新建项目:My_DispatchAction
         WebContent/create.jsp
                   read.jsp
                   update.jsp
                   delete.jsp
         src/com.user.struts.actions.UserDispatchAction.java
2 在视图中加入隐藏域并设定隐藏域的name属性和value属性
3 在struts-config.xml中的action标签中加入parameter属性,属性的值要与隐藏域中的name值一样
优点:大大减少了Action的编写数量
2 StrutsV1开发中的问题:
2.1 验证动态表单,如何获得checkbox的请求
新建项目:My_CheckBoxDynaValidateForm
2.2.1 首先动态表单可以接收多个数据
修改form-bean标签中的:
<form-property name=”like” type=”java.lang.Integer[ ]” />
2.2.2 使用DispatchAction中自定义方法的ActionForm进行动态表单获得
DynaActionForm dyf = (DynaActionForm) form;
Integer[ ] like = (Integer[ ])dyf.get(“like”);
新建项目:My_DynFormDIspathActionFileUpload
动态表单 + DispatchAction的文件上传:
之前:smartUpload.jar
现在:commons-fileupload-1.1.1.jar
      commons-io-1.1.jar
1 准备工作
2 upload.jsp
上传要用org.apache.struts.upload.FormFile
3 测试是否可以获得上传文件的名字
4 保存在什么地方?
docBase=”c:\xxx\xxx\index.jsp”
        c:\xxx\xxx\upload\
path=”/student”
http://ip:8080/student/
4.1 获得当前Web程序在操作系统中的真实路径
12月29日
特殊情况的处理:
表单的重复提交:
通过Action中的:
isTokenValid( )   //判断Token
saveToken( )  //设置Token
新建项目:Struts1_FormReSubmit – Bug
SetToken.jsp(拿到指令牌)----àSetToken.java(Action)---àinsert.jsp--à UserDispatchAction(判断指令牌)
表单重复提交问题:
思路:每当用户在Action进行数据提交时,判断用户是否有token,如果没有,那么不允许数据的提交
实现:给用户一个路径,这个路径分为两步:
第一步:拿到指令牌
第二步:判断指令牌
2.1 有指令牌就进行数据提交,提交完毕后销毁指令牌
2.2 没有指牌可以进行错误消息输出或路径跳转
Struts组件分为两类:
1 控制器
LookupDispatchAction
LookupDispatchAction继承DispatchAction,用于对同一个页面上的多个submit按钮进行不同的响应
Struts1_LookupDispatchAction
新建项目:My_LookupDispatchAction
          WebContent/ index.jsp
one.jsp
two.jsp
MappingDispatchAction
MappingDispatchAction可将同一个Action的不同方法映射成多个Action URL
Struts1-MappingDispatchAtion
新建项目:My_ MappingDispatchAction

2视图---标签
ForwardAction
可自由跳转
Struts1_ForwardAction
新建项目:MyForwardAction
         WebContent/index.jsp
         WEB-INE/Test.jsp
IncludeAction
IncludeAction的用法与ForwardAction的用法比较相似,区别在于ForwardAction将跳转到action定义的资源,而IncludeAction用于引入该action对应的资源
Struts1_IncludeAction
今天目标:
1 解决表单的重复提交问题
2 掌握Struts中的一些其他控制器:
2.1 LookupDispatchAction(一个表单多个submit)
2.2 MappingDispatchAction(一个Action多个URL)
2.3 ForwardAction(自由跳转(WEB-INF/xx.jsp))
2.4 IncludeAction(自由导入WEB-INF/xxx.jsp)
12月30日
异常的处理:
500 //程序抛出异常
404 //访问的页面不存在
新建项目:Errors
WebContent/index.jsp
          404.html
解决:
修改:WEB.xml
回顾StrutsV1中的控制器:
1 Action
2 ActionForm
3 DynaActionForm
4 DynaVaildateForm
5 DispatchAction
6 ForwardAction
验证框架
2 Struts V1中的视图组件:
1 html
2 logic
3 bean
4 tiles
Struts中的html标签:
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %>
<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean" %>
<%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic" %>
<%@ taglib uri="http://struts.apache.org/tags-tiles" prefix="tiles" %>
1 <html:radio>
1.1 ActionForm
1.1.1
Package com.user.form.RadioForm.java extends ActionForm
1.1.2
package com.user.action.RadioAction.java extends Action
1.1.3
struts-config.xml
Radio和ActionForm组合时,没有默认的选中,如果需要那么将ActionForm中的属性赋初始值
1.2 DynaActionForm
如果需要默认选中在<form-property initial=”female”>增加初始化参数
2 多选框checkbox
在StrutsV1中如果需要设置默认选中:
一般使用:
<html:multibox>
3下拉菜单select-à option
<html:select>
<html:option>
html中的UI标签结束
html的其他标签:
<html:errors>         //打印struts所有的错误消息
<html:errors property=”password.null”/>        //打印指定的错误消息
考点:
<html:link />相当于<a href=”xx”></a>
link标签有三种类型:
href:              //指定某个jsp路径
forward:           //需要在struts-config.xml配置
page:              //跳转某个action
新建项目:View
Insert.jsp
select.jsp
link.jsp
结束了StrutsV1 HTML标签中的重点:
<html:radio>
<html:multibox>
<html:select><html:option>
<html:errors>
<html:link>
Bean标签:
<jsp:useBean id = “” class=”” scope=”request”>
<bean:xxx>
新建项目: Struts_Bean
          WebContent/bean.jsp
bean标签的作用:
定义新的bean,复制现有bean来创建新的bean或复制现在的bean的属性来创建新的bean
<bean:message key=”” >
资源文件命名规范:
MessageResources.properties    //默认
如果是英语:en
MessageReources_en.properties    //英语浏览器
如果是英语,美国:en us
MessageResources_en_US.properties
中文:zh_CN
MessageResources_zh_CN.properties
作用:
实现一个国际化的登录页面:
中文:
用户名:
密码:
提交  重置
英文:title:Login
username:
password:
submit  reset
新建项目 homework
12月31日
逻辑标记:
逻辑标记能够有条件的或循环的产生输出文本,并可实现应用程序流程控制
逻辑标记封装在struts-logic.tld的标记库文件中
条件逻辑标记:
第一类条件逻辑标记主要提供数据的比较逻辑,用于条件显示功能,具体包括:
<logic:equal>//=
<logic:notEqual>//!=
<logic:greaterEqual>//>=
<logic:lessEqual>//<=
<logic:lessThan>//<
<logic:greaterThan>//>
新建项目:Equal
Equal.jsp
Match.jsp
Present.jsp
Itearate.jsp
HashMap取值的时候,要根据key或value 取值,取出的值是不规则的
Forward.jsp
回顾Struts标签库:
1 html标签
<html:text>
<html:password>…
<html:radio>
<html:select><html:option>
<html:multibox>
<html:errors><html:errors property=””>
<html:link forward>
<html:link page>
<html:link href>
2 bean标签
<bean:write>
<bean:message>
<bean:define>
<bean:cookie>
<bean:header>
3 logic标签:
3.1 判断
3.2 循环
3.3 跳转
模板框架Tiles
模板标记提供了定义可重用视图的一种简单途径,主要是实现WEB页面布局设计的模板化
<tiles:get/>
<tiles:insert/>
<tiles:put>
需struts-tiles-1.3.9.jar 支持
struts1_tiles_insert
Tiles框架:
模拟网站的划分:
新建项目:MyWeb
          WebContent/header.jsp
nav.jsp
content.jsp
footer.jsp
index.jsp
新建项目:MyFirstTiles
Tiles一般实现步骤:
1 模板编写:layout.jsp
2 使用模板:
新建项目:MyLayoutTiles
新建项目:MyBlogTiles
//体验使用Tiles对原有WEB页面拆分经验
模板:改变的网站所有页面的布局
单独模块:改变网站所有页面的内容
使用Tiles的定义文件,来进行模板的管理和访问路径的指定
作用Tiles定义文件的步骤:
1 编写Tiles定义文件:tiles-defs.xml WEB-INF/
2 在struts-config.xml增加tiles插件支持
细节:web.xml中读取tiles的配置文件
3 自定义路径(Action)
访问tiles-defs.xml中的name(name代表定义文件中的某个模板)
新建项目:MyTilesDefs
         WebContent/
作业:
做一个学生信息管理系统
要求:使用struts
使用validate框架
使用tiles框架
使用视图组件,国际化
程序模块:
1 注册,登录
2 学生的:CRUD
1月5日
分页:
一般分为两类:
1 在数据库中进行分页
select * from tablename limit 0,10;     
//缺点:当用户进行换页时,都需要进行数据库的查询
2 将所有数据查询出来,在List分页
//缺点:当数据量大的时候,用户需要等待一定时间
3两者的结合
项目 Struts1_PageDemo
2 struts-menu的使用:
1 配置struts-menu环境:
commons-lang-2.1.jar
struts-menu-2.4.3.jar
velocity-1.4.jar
velocity-tools-view-1.0.jar
velocity:表现层的一种脚本语言,可以方便的实现无jsp的Web实现
导入struts-menu中所有的包
2 web.xml加入struts-menu支持:
<listener>
<listener-class>net.sf.navigator.menu.MenuContextListener</listener-class>
</listener>
3 copy images,script,styles,template
WebContent/
//struts-menu的菜单配置文件:
1 菜单的显示风格控制
2 菜单控制
4 copy menu-config.xml
WebContent/WEB-INF/
5 与struts关联<plug-in>:
<plug-in className=”net.sf.navigator.menu.MenuPlugIn”>
<set-property property=”menuConfig” value=”/WEB-INF/menu-config.xml” />
</plug-in>
6 在jsp中使用struts-menu:
6.1 导入标签库
<%@ taglib uri="http://struts-menu.sf.net/tag" prefix="menu" %>
6.2 <menu:useMenuDisplayer name=””>  //菜单显示风格
<menu:displayMenu name=”” />    //菜单选项
</menu:useMenuDisplayer>
细节:一些默认的显示风格需要固定的script/xx.js或者style/xx.css支持
struts-menu的优势:
1 菜单的统一管理
2 便利的国际化支持
3动态菜单(数据库---->菜单)
4 权限配置
strutsV1结束:
必须掌握的内容:
1 工作流程
2 控制器组件:
2.1 Action
2.2 DispatchAction
2.3 ForwardAction
<action>标签中每个属性的含义
input, attribute, name(区别),path, parameter
2.4 ActionForward
2.5 ActionMapping
2.6 ActionForm
2.7 DynaActionForm
2.8 DynaValidateForm    //数组的传递,赋初始值
3 验证框架,掌握使用JavaScript验证
<html:form>
</html:form>
为空验证,整型,数字范围,最大值,最小值,email验证
4 视图组件:
4.1 html
4.2 logic
4.3 bean
5 Tiles框架
5.1 模板的定义
5.2 模板定义文件的配置,使用
6 其他功能:、
6.1 文件上传,重复提交,checkbox处理,乱码处理(建过滤器),404,500错误处理,分页
7 了解:struts-menu
明天AJAX
作业:将网站,新闻发布系统升级,由手工的MVC改写为Struts
Hibernate
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics