Struts1的框架的原理,开发流程,配置与入门案例
Posted 恵玩科技
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Struts1的框架的原理,开发流程,配置与入门案例相关的知识,希望对你有一定的参考价值。
0 准备
一)将的Servlet中大量的请求分发的代码写入一个外部文件中,便于灵活配置请求和响应资源
B)将的Servlet中大量分散的方法,使用不同的分控制器类来替代,便于按类型集中控制
1 框架的定义
一个)别人写好的软件,主要是从事基础性的工作,需要程序员自行修改配置,因此框架是个半成品
B)该软件是类的集合,主要为某一功能服务
C)框架只适合于一定的领域范围,Struts1的框架只适合于网络领域
2 Struts1 开发步骤
A)参见<< Struts1的开发步骤.TXT >>
1创建day27的web应用
2加入strust1.3相关的jar包到WEB-INF / lib /目录下(至少10个)
3修改WEB-INF / web.xml和struts-config.xml文件
的web.xml文件内容如下:
<web应用程序>
的<servlet>
<servlet的名称>动作</ servlet的名称>
<servlet的类> org.apache.struts.action.ActionServlet </ servlet的类>
<INIT-PARAM>
<PARAM名称>配置</ PARAM名称>
<PARAM值> /WEB-INF/struts-config.xml </ PARAM值>
</ INIT-param>
<负载上启动> 2 </负载上启动>
</ servlet的>
<servlet的映射>
<servlet的名称>动作</ servlet的名称>
<URL模式> *做</ URL模式> [Struts1的核心控制器默认接收的请求为*。做]
</ servlet的映射>
</ web的应用>
的struts-config.xml文件内容如下:
<的struts-config>
<动作的映射>
<动作
路径=” /注册”(用户请求的路径,/表示当前网络应用,无需写。做)
类型=” cn.itcast.web.struts1.action.RegisterAction” />(该请求由哪个分控制器处理)
</动作的映射>
</的struts-config>
4写一个register.jsp页面
<form action =“/ day27 / register.do”method =“post”>
5写一个分控制器RegisterAction.java,该分控制器一定要扩展Action类,覆写execute()方法
//分控制器
公共类RegisterAction扩展行动{
//覆写执行()方法
@覆盖
公共ActionForward执行(
ActionMapping映射,
ActionForm表单,
HttpServletRequest请求,
HttpServletResponse响应)
抛出异常{
request.setCharacterEncoding(“UTF-8”);
字符串用户名= request.getParameter(“用户名”);
System.out.println(“用户名:”+用户名);
返回null;
}
}
6部分放置该Web应用,访问register.jsp页面
* 3 自动封装用户的请求数据
开发RegisterForm的步骤:
一)写一个类扩展的ActionForm
b)中写实例变量,该实例变量与参数名一致,大小写不同
C)为每个实例变量提交二传手和吸气方法,框架会使用的setter方法将参数传入,在行动中使用的getter方法取
出参数值
d)在的struts-config.xml文件中配置
<形状豆>
<形式豆
NAME =” registerForm”(RegisterForm的在域中名字)
类型=” cn.itcast.web.struts1.form.RegisterForm” />(RegisterForm的全路径名)
</形状豆>
<动作的映射>
<动作
路径=” /注册”
类型=” cn.itcast.web.struts1.action.RegisterAction”
NAME =” registerForm”(表示使用哪个的ActionForm的名字)/>
</动作的映射>
* 4个基于struts-config.xml中的配置转发或重定向
返回ActionForward(“需要跳转的页面”,“false表示转发”或“true表示重定向”)
ActionForm的默认放置在请求域中。
<动作
路径=” /注册”
类型=” cn.itcast.web.struts1.action.RegisterAction”
NAME =” registerForm”
范围=”请求”>
<前进
NAME =” toSuccessJsp(与行动一致的普通字符串)”
路径=” /的success.jsp(跳转的真实路径)”
重定向=”假”(假转发真重写,默认为假)/>
注意:在struts-config.xml中文件中,/表示当前网络应用,即day27
</动作>
* 5 读支柱源码和描述支柱工作流
一)struts1中的核心控制器本质上就是一个标准的HttpServlet的。
B)参见<< struts1的工作流.JPG和struts1的代码创建图.JPG >>
6 struts-config.xml 配置文件常用属性的使用
<动作
path =“/ register(用户请求的路径)在jsp中使用”
类型=“cn.itcast.RegisterAction(该请求对应的分控制器全路径)控制器的相对位置”
NAME =“把UserFormBean(需要使用的ActionForm中的名字)“
范围=”请求(ActionForm的放置在哪个域对象中)”
属性=“myformbean”(绑定到域对象中的ActionForm的名字,不写的话,默认与名字属性值一致)
包括=”的welcome.jsp(包含的页面”
forward =“welcome.jsp(转发的页面)在浏览器直接输入* .do可以转发到配置的页面”
unknown =“true(表示如果所有的路径路径都配对,执行未知为true所有的页面,类似于省略的Servlet配置)”
参数=“方法(请求参数)”类似于,HREF =” / day27 / findAllType?方法= findAllType”
类名=“<行动标签底层处理类>,一般不用变”
输入=” register.jsp(如果验证错误,则进入输入属性所指示的页面)”
validate =“true(true表示需要验证(数据格式)ActionForm,false表示无需验证ActionForm)”>
如果验证正确,则进入动作对应的的execute()方法
如果验证错误,则进入输入属性所指示的页面
<forward name =“hello(跳转的字符串,与Action中一致)”
路径=” /的success.jsp(跳转的真实页面路径)”
重定向=”假”(跳转的方式,要么重定向,要么转发,默认假转发)/>
</动作>
7 struts 专用标签<html:link />的使用
a)导入struts标签包IDEA中会自动导入
B)在需要使用标签的JSP页面通过<@标签库%>引入
C)<html:链路>标签的好处如下:
>>具有<A>标签功能
>>具有URL重写功能,即当浏览器禁用饼干时,依然可以使用
>>具有非英文网址自动编码,自动域中检索
* 8 表单项数据格式校验
一)写一个类扩展的ActionForm
b)中重写的validate()方法
c)中的ActionErrors表示错误集合
d)ActionMessage的(“显示的错误消息”,假)表示一个错误消息
E)ActionMessage的(“显示的消息的键,值要么查询资源文件”,真)表示一个错误消息
* 9 错误信息显示[传统/现代]
一)传统:
ActionErrors errors =(ActionErrors)request.getAttribute(“org.apache.struts.action.ERROR”);
如果(错误!= NULL){
Iterator <ActionMessage> it = errors.get(“username”);
而(it.hasNext()){
ActionMessage am = it.next();
String info = am.getKey();
out.write(“<font color ='red'>”+ info +“</ font>”);
}
}
B)现代:
使用<HTML:错误/>一次性将所有的错误消息显示出来
注意:需要使用message.properties属性资源文件,在struts-config.xml中文件中配置如下代码:
<message-resources parameter =“cn / itcast / web / struts1 / config / message”/>
c)中对于日期检证,需要使用
DateLocaleConverter dlc = new DateLocaleConverter(Locale.CHINA,“yyyy-MM-dd”);
dlc.convert(this.birthday);
思考:
1)如何对中文乱码进行处理
2)如何进行数据显示,例如:下拉框,复选框。
分而治之:
不同的控制器有不同的功能
0准备
一)将的Servlet中大量的请求分发的代码写入一个外部文件中,便于灵活配置和响应需求
b)
1.框架的定义
一个)别人写好的软件,主要是从事基础性工作,需要程序员做配置功能
B)该软件是类的集合,主要为某一功能服务
c)中框架只适合于某一领域范围
2.Struts1的开发步骤
A)参见文末
3.自动封装用户的请求数据
开发参数收集器的步骤:
一)写一个类扩展的ActionForm
b)中写一个实例变量,该实例变量与参数名一致,大小写相同
c)中为每个实例变量提交设定器和吸气剂方法,框架会使用设置器方法将参数传入
4.基于的struts-config的重定向
6.Struts的工作流程
背景:
2001年Web框架,基础性服务程序员在基础服务上定制服务1.0祖先
WebWord框架
2007,8年Struts2框架= Struts1(40%)+ WebWork(60%)[流行]
1.2
2011年JSF框架(JavaEE5规范之一)经过三个版本的革命1.3
问题:
特点
好处
不足
例子:
注册
jsp->核心控制器 - > struts-config.xml
- >分控制器RegisterAction
实战:
10个LIB包
开发步骤
1.创建一个day27的网络应用
2.将struts1.3相关的罐包加载到LIB目录下
3.修改web.xml和struts-config.xml
注意:Struts1的核心控制器默认接收的请求是*。做
1创建day27的web应用
2加入strust1.3相关的jar包到WEB-INF / lib /目录下(至少10个)
3修改WEB-INF / web.xml和struts-config.xml文件
的web.xml文件内容如下:
<web应用程序>
的<servlet>
<servlet的名称>动作</ servlet的名称>
<servlet的类> org.apache.struts.action.ActionServlet </ servlet的类>
<INIT-PARAM>
<PARAM名称>配置</ PARAM名称>
<PARAM值> /WEB-INF/struts-config.xml </ PARAM值>
</ INIT-param>
<负载上启动> 2 </负载上启动>
</ servlet的>
<servlet的映射>
<servlet的名称>动作</ servlet的名称>
<URL模式> *做</ URL模式> [Struts1的核心控制器默认接收的请求为*。做]
</ servlet的映射>
</ web的应用>
的struts-config.xml文件内容如下:
<的struts-config>
<动作的映射>
<动作
路径=” /注册”(用户请求的路径,/表示当前网络应用,无需写。做)
类型=” cn.itcast.web.struts1.action.RegisterAction” />(该请求由哪个分控制器处理)
</动作的映射>
</的struts-config>
4写一个register.jsp页面
<form action =“/ day27 / register.do”method =“post”>
5写一个分控制器RegisterAction.java,该分控制器一定要扩展Action类,覆写execute()方法
//分控制器
公共类RegisterAction扩展行动{
//覆写执行()方法
@覆盖
公共ActionForward执行(
ActionMapping映射,
ActionForm表单,
HttpServletRequest请求,
HttpServletResponse响应)
抛出异常{
request.setCharacterEncoding(“UTF-8”);
字符串用户名= request.getParameter(“用户名”);
System.out.println(“用户名:”+用户名);
返回null;
}
}
6部分放置该Web应用,访问register.jsp页面
传统转发方法
的request.getRequestDispatcher()向前(请求,响应)。
支柱框架的方法
配置一个动作,使用虚假表示转发,真表示重定向
EL表达式使用方法$ {registerForm。参数}
维护的最高目标是不修改任何源代码
作业:
以上是关于Struts1的框架的原理,开发流程,配置与入门案例的主要内容,如果未能解决你的问题,请参考以下文章