Struts工作原理和入门小实例

来源:互联网 发布:淘宝上的死飞耐用吗 编辑:程序博客网 时间:2024/04/26 22:39

Struts的工作原理及实例说明
一.MVC引入
1.m即model,是模型层;v即view,是视图层;c即controller,是控制层。
2.mvc的工作原理
这里写图片描述
控制器:收集客户发送的请求并决定选择哪个模型来完成该请求。
模型层:完成客户请求所需的逻辑处理。
视图层:将模型层得到的数据以一定的格式呈现给用户。
3.mvc的优点
(1).低耦合:将各功能模块代码进行分离,降低了代码的耦合度,利于系统的维护。
(2).提高代码的复用:一个完成相应功能的模型可以重复利用,可以被多个视图使用,提高代码的复用。
二.Java mvc优秀代表 struts的引入
1.struts的工作原理
这里写图片描述

(1)客户端提交一个HttpServletRequest请求(.action或JSP页面)
(2)请求被提交到一系列Filter过滤器。
(3)FilterDispatcher是Struts2控制器的核心,它通常是过滤器链中的最后一个过滤器
(4)请求发到FilterDispatcher后,FilterDispatcher询问ActionMapper是否需要调用某个Action来处理这个Request(一般根据URL后缀是否为.action来判断)
(5)如果ActionMapper决定需要调用某个Action,FilterDispatcher则把请求交到ActioProxy,由其进行处理.
(6)ActionProxy通过Configuration Manager(它会访问struts.xml)询问框架的配置文件,找到需要调用的Action类.
(7)ActionProxy创建一个ActionInvocation实例,而ActionInvocation通过代理模式调用Action,(在调用之前会根据配置文件加载相关的所有Interceptor拦截器)
(8)Action执行完毕后,返回一个result字符串,此时再按相反的顺序通过Interceptor拦截器.
(9) 最后ActionInvocation负责根据struts.xml中配置的result元素,找到与返回值对应的result,决定进行下一步输出.
(10)将模型层经过逻辑运算得到的数据带到前端页面(.jsp,.html等)
2.web.Xml配置文件

struts2 org.apache.struts2.dispatcher.ng.filter.StrutsPrepare AndExecuteFilter


struts2
/*

3.struts.Xml配置文件解析
(1)Package:表示一个逻辑单元,或者模块名称。所以我们可以把同一个模块的action配置到一个package里面。
(2)action
Name属性:请求的url路径。
Class属性必须写完整的包名+类名.
method属性方法名。
(3)路径
绝对路径写法:/项目名称/namespace/actionname.action
相对路径写法:namespace/actionname.action
三.一个简单的struts项目的开发
1.导jar包
struts2-core-2.2.1.jar:Struts2框架的核心类库。
xwork-core-2.2.1.jar:Xwork核心类库,Struts2在其上构建。
ognl-3.0.jar:对象图导航语言(Object Graph Navigation Language), 它是一种功能强大的表达式语言(Expression Language,简称为 EL),通过它简单一致的表达式语法,可以存取对象的任意属性, 调用对象的方法,遍历整个对象的结构图,实现字段类型转化等功能。
freemarker-2.3.16.jar:Struts 2的UI标签的模板使用FreeMarker编写。
commons-fileupload-1.2.1.jar:文件上传组件,2.1.6版本后必须加入此文件。
commons-io-1.3.2.jar:IO输入输出流组件,主要完成文件的读写功能。
javassist-3.7.ga.jar:Javassist是一个开源的分析、编辑和创建Java字节码的类库。(在struts-2.2.1\apps\struts2-blank-2.2.1.war下的lib中找)
commons-logging-1.0.4.jar:ASF出品的日志包,Struts2框架使用这个日志包来支持Log4J和JDK 1.4版本之上的日志记录。
2.配置web.xml文件
配置过滤器,对用户的请求进行过滤,
3.action类
package action;
publicclass LoginAction {
private String username;
private String password;
publicString getUsername() {
returnusername;
}
publicvoid setUsername(String username) {
this.username = username;
}
public String getPassword() {
returnpassword;
}
publicvoid setPassword(String password) {
this.password = password;
}
/**
* 登录
*/
public String login(){
if(username.equals(“admin”)&&password.equals(“ok”))
{
return”success”;
}
else{
return”fail”;
}
}
}

4.创建struts.xml文件,注册Action类。

<?xmlversion="1.0"encoding="UTF-8" ?><!DOCTYPE struts PUBLIC"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN""http://struts.apache.org/dtds/struts-2.0.dtd"><struts><packagename="user"namespace="/"extends="struts-default"><actionname="login"class="action.LoginAction"method="login"><resultname="success">/success.jsp</result><resultname="fail">/fail.jsp</result></action></package><!-- Add packages here --></struts>

5.创建JSP文件。

<!DOCTYPE html><html><head><metacharset="UTF-8"><title>Insert title here</title></head><body><formaction="login.action">    用户名:<inputtype="text"name="username"/><br>    密码:<inputtype="password"name="password"/><br>    <inputtype="submit"value="登录"/></form></body></html>
0 0
原创粉丝点击