Struts1的框架的原理,开发流程,配置与入门案例

Posted 恵玩科技

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Struts1的框架的原理,开发流程,配置与入门案例相关的知识,希望对你有一定的参考价值。

准备

一)将的Servlet中大量的请求分发的代码写入一个外部文件中,便于灵活配置请求和响应资源

B)将的Servlet中大量分散的方法,使用不同的分控制器类来替代,便于按类型集中控制

框架的定义

一个)别人写好的软件,主要是从事基础性的工作,需要程序员自行修改配置,因此框架是个半成品

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 >>

Struts1的框架的原理,开发流程,配置与入门案例

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的框架的原理,开发流程,配置与入门案例的主要内容,如果未能解决你的问题,请参考以下文章

Struts2入门及工作原理

深入分析JavaWeb 43 -- Struts2开发入门

框架 day65 Mybatis入门(基础知识:框架原理,入门[curd],开发dao层,全局与映射配置)

Struts1.3——Struts入门

Struts2学习笔记

struts2框架 转载 精华帖