1、 整个Web框架大致的流程是:首先客户端发送请求,提交JSP页面给Servlet,Servlet根据客户的请求,选择相应的模型层,进行相应的逻辑处理;如果需要使用数据库,则通过DAO进行相应的数据库操作(4)Struts1的组件结构图(5)Struts2的架构/MVCStruts2相关介绍Struts2官网:http:/struts.apache.org/Struts2使用:Struts 2是Struts的下一代产品,是在 struts 和WebWork的技术基础上进行了合并的全新的Struts 2框架。其全新的Struts 2的体系结构与Struts 1的体系结构的差别巨大。Struts 2
2、以WebWork为核心,采用拦截器的机制来处理用户的请求,这样的设计也使得业务逻辑控制器能够与Servlet API完全脱离开,所以Struts 2可以理解为WebWork的更新产品。虽然从Struts 1到Struts 2有着太大的变化,但是相对于WebWork,Struts 2只有很小的变化。Struts2的体系与Struts1体系的差别非常大,因为Struts2使用了WebWork的设计核心,而不是Struts1的设计核心。Struts2中大量使用拦截器来处理用户的请求,从而允许用户的业务逻辑控制器与Servlet API分离。【14.2.2 第一个Struts2程序】1. 搭建Stru
3、ts2环境的步骤:(1) 找到开发Struts2应用需要的jar文件(2) 编写Struts2的配置文件(3) 修改web.xml,加入Struts2 MVC框架启动配置2. 下载struts-2.3.28-all.zip,下载地址:下载后解压3.开发Struts2最少需要的jar【例1】开发一个Struts2应用1. 在MyEclipse下新建一个web project2. 将上述jar文件考到lib目录下3. 从例子中找一个struts.xml,考到src下!DOCTYPE struts PUBLIC -/Apache Software Foundation/DTD Struts Conf
4、iguration 2.0/EN/struts.apache.org/dtds/struts-2.0.dtdstrutspackage name=mypack namespace=/test extends=struts-defaultaction name=helloworld class=my.example.HelloWorldAction method=executeresult name=success/WEB-INF/page/hello.jsp/result/action/package/struts4. 修改web.xmlweb-app version=2.4 xmlns= x
5、mlns:xsi=/www.w3.org/2001/XMLSchema-instance xsi:schemaLocation=filterfilter-namestruts2 org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter/filterfilter-mappingurl-pattern/*/filter-mappingwelcome-file-listwelcome-fileindex.jsp/welcome-file-list/web-app注意:(1)Struts框架是通过Filter启动的。(2
6、)org.apache.struts2.dispatcher.FilterDispatcher $message/body运行时在地址栏输入/localhost:8080/工程名/test/helloworld观察运行结果Package介绍:在struts2框架中使用包来管理Action,包的作用和java中的类包是非常类似的,它主要用于管理一组业务功能相关的action.在实际应用中,我们应该把一组业务功能相关的Action放在同一个包下。配置包时必须指定name属性,该name属性值可以任意取名,但必须唯一,如果其他包要继承该包,必须通过该属性进行引用。包的namespace属性用于定义该
7、包的命名空间,命名空间作为访问该包下Action路径的一部分。Namespace属性可以不配置,如果不指定该属性,默认的命名空间为“”通常每个包都应该继承struts-default包,因为struts2很多核心的功能都是拦截器来实现。当包继承了struts-default才能使用struts2提供的核心功能。Struts-default包是在struts2-core-2.x.x.jar文件中的struts-default.xml中定义。【例2】请求参数的注入1. web.xml不变2. 修改Actionpublic class UserAction private String userna
8、me;private String password;public String getUsername() return username; public void setUsername(String username) this.username = username;public String getPassword() return password;public void setPassword(String password) this.password = password;public String execute() throws Exception / 只有用户名为xxx
9、,密码为123456方可成功登陆 if (username.equals(xxx) & password.equals(123456) return else error3.配置struts.xmlStruts2框架的核心配置文件就是struts.xml,该文件主要负责Struts2应用中各Action的具体实现逻辑。struts.xml会根据不同请求找到具体的Action,然后根据Action返回的逻辑视图名找到具体的物理视图。myloginloginUsermy.example.UserAction/jsp/success.jsp/jsp/error.jsp% taglib prefix=
10、s uri=/struts-tags %String path = request.getContextPath();String basePath = request.getScheme()+:/+request.getServerName()+request.getServerPort()+path+/DOCTYPE HTML PUBLIC -/W3C/DTD HTML 4.01 Transitional/ENhtmlheadbase href=%=basePath%titleMy JSP login.jsp starting page/heads:form action=textfiel
11、d name=username label=用户名/s:textfieldpassword name=password密码passwordsubmit value=确定/reset value=重置form/html【编写success.jsp】Gb2312success.jsp登陆成功!您的用户名是说明:访问action中的属性【编写error.jsp】ISO-8859-1error.jsp error!br在地址栏输入:8080/struts2_example2/jsp/login.jsp验证结果。Action类中get和set方法都要生成。分析这个例子:在地址栏里输入8080/ch2_e
12、xample1/jsp/login.jsp填写了用户名和密码之后,地址栏变为8080/ch2_example1/jsp/loginUser.action过滤器对URL进行解析以便将请求进行正确的映射,http是网络传输协议的名称,localhost为主机名称,8080为web应用端口,ch2_example1为工程名,jsp为目录名,/loginUser.action为要映射模型组件的URL,除去扩展名action,则剩余的URL地址为/loginUser,分别对应模型组件的package对应的命名空间“/”和模型组件的名称loginUser。接下来过滤器StrutsPrepareAndExe
13、cuteFilter将在Struts2的配置文件struts.xml中查找命名空间为“/”的package,然后在此包中寻找名为loginUser的Action模型组件,最后将请求转到Action对应的实现类my.example.UserAction现在接力棒传给模型组件UserAction,负责处理客户请求的是它的execute()方法。execute()方法最终会返回一个代表处理结果的字符串,然后Struts2框架将根据字符串在配置文件struts.xml中此模型组件包含的result选项中寻找匹配的选项,并将此选项对应的视图组件返回到客户端。【14.3.1 认识Action对象】在Str
14、uts2框架中,Action组件不需要继承任何类,实现任何接口,它可以只是一个简单的Java对象,只需要提供一个没有参数的且返回字符串信息的公共方法,作为默认的对请求信息进行处理并返回结果视图的接口。框架还提供了一个Action组件的基类ActionSupport,它在实现了Action接口的同时实现了execute()方法。ActionSupport的定义:/struts.apache.org/2.0.6/struts2-core/apidocs/com/opensymphony/xwork2/ActionSupport.html该类的作用:Provides a default implem
15、entation for the most common actions. See the documentation for all the interfaces this class implements for more detailed information. public class ActionSupportextends Objectimplements Action, Validateable, ValidationAware, TextProvider, LocaleProvider, Serializable【修改例2】1.login.jsp:内容不变页面展示形式为:2.
16、修改UserAction:import com.opensymphony.xwork2.*;public class UserAction extends ActionSupport private String username; private String password; public String getUsername() return username; public void setUsername(String username) this.username = username; public String getPassword() return password; p
17、ublic void setPassword(String password) this.password = password; public String execute() if(!username.equals(password) return INPUT; else return SUCCESS;该execute()方法的作用:如果用户名和密码一致,则返回一个表示登录成功的SUCCESS,否则返回结果字符串INPUT。另外,Action组件还提供了两个字符串属性username和password以及对应的getter/setter方法,这两个属性提供给Struts2框架用来装载用户提交的参数。Web请求中的参数信息将由框架自动填充到这两个属性变量中。Execute()方法中也引用此信息进行业务处理。3.结果界面success.jsp不变: 登陆成功!4.配置文件struts.xml:my
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1