-
一 工作原理 在Struts2框架中的处理大概分为以下几个步骤 1 客户端初始化一个指向Servlet容器(例如Tomcat)的请求 2 这个请求经过一系列的过滤器(Filter)(这些过滤器中有一个叫做ActionContextCleanUp的可选过滤器,这个过滤器对于Struts2和其他框架的集成很有帮助,例如:SiteMesh Plugin) 3 接着FilterDispatcher核心过滤器(2.0-2.1.2版本)被调用,【StrutsPrepareAndExecuteFilter(2.1.3版本后开始使用,替代FilterDispatcher)】FilterDispatcher询问ActionMapper来决定这个请是否需要调用某个Action 4 如果ActionMapper决定需要调用某个Action,FilterDispatcher把请求的处理交给ActionProxy 5 ActionProxy通过Configuration Manager询问框架的配置文件,找到需要调用的Action类 6 ActionProxy创建一个ActionInvocation的实例。 7 ActionInvocation实例使用命名模式来调用,在调用Action的过程前后,涉及到相关拦截器(Intercepter)的调用。 8 一旦Action执行完毕,ActionInvocation负责根据struts.xml中的配置找到对应的返回结果。返回结果通常是(但不总是,也可 能是另外的一个Action链)一个需要被表示的JSP或者FreeMarker的模版。在表示的过程中可以使用Struts2 框架中继承的标签。在这个过程中需要涉及到ActionMapper 二 工作流程 1、客户端浏览器发出HTTP请求. 2、根据web.xml配置,该请求被FilterDispatcher接收 3、根据struts.xml配置,找到需要调用的Action类和方法, 并通过IoC方式,将值注入给Aciton 4、Action调用业务逻辑组件处理业务逻辑,这一步包含表单验证。 5、Action执行完毕,根据struts.xml中的配置找到对应的返回结果result,并跳转到相应页面 6、返回HTTP响应到客户端浏览器查看全部
-
要导入的包:(共9个) commons-fileupload(上传下载包) commons-io(输入输出包) commons-lang 3-3.2(基础包) commons-logging(日志包) freemarker(模板引擎,通过模板生成文本输出的通用工具) structs2-core(核心包) xwork-core(一些类基于xwork) ognl(表达式) javassist-3.11.0.GA.jar(解析java类文件的一个包) 之后配置web.xml文档 web项目在启动tomcat时第一个启动的文件就是web.xml 首先定义过滤器 <filter> <filter-name>struct2</filter-name> <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> 这里写完后按住ctrl点击鼠标左键如果可以跳转则证明正确 </filter> filter的映射 <filter-mapping> <filter-name>struct2</filter-name> <url-pattern>/*</url-pattern> /*是所有的都需要过滤 </filter-mapping> 映射与文件的filter-name应该保持一致 之后再src中创建struts的核心xml struts.xml <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd"> <struts> </struts> 之后创建action包 创建action类让其继承ActionSupport Struts2中有一个默认的方法不指定方法名的话有一个execute()方法 之后去配置struts.xml中的action文查看全部
-
运行struts2的环境要求: (1)Servlet API 2.4 (2)JSP API 2.0 (3)Java JDK 1.5 或者以上 使用步奏: (1)将struts 添加到项目中: Apache官网下载struts库文件,解压; 将lib目录下struts.jar文件复制到项目WEB-INF/lib之下; 其他文件则复制到/WEB-INF文件夹下,然后在该文件夹下创建struts-config.xml配置文件. (2)给项目添加struts2支持 (3)创建Action进行测试 Apache Structs官方网站 http://struts.apache.org/ http://people.apache.org/builds/struts/查看全部
-
Struts2发展历史 Struts2不是继承struts1的血统,而是在Webwork上的升级,同时吸收了Strust1和WebWork两者的优势查看全部
-
JSP+JavaBean = Model1:适用于小型网站的开发 JSP+Servlet+JavaBean = Model2:最典型的MVC模式 MVC是模型(Model)、视图(View)和控制器(Controller)的缩写;MVC是一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。在Struts中,Controller就是action。查看全部
-
Struts是什么? 翻译:支柱,支干,来源于旧建筑和旧式飞机使用的金属支架 Struts是流行和成熟的基于MVC设计模式的Web应用程序框架。 使用Struts的目的: 为了帮助我们减少在运用MVC设计模型来开发Web应用时间。查看全部
-
1.s:fielderror输出指定错误信息,而不是输出全部错误信息 在struts2框架中,例如在完成数据类型转换、数据校验时如果出现错误信息,我们会利用ActionSupport类中addFieldError方法来添加错误信息内容(如:在Action中使用this.addFieldError("username" , "用户名已存在!"); )。在JSP页面中利用<s:fielderror/>标签在相应的字段处输出错误信息。(如:JSP页面:<s:textfield name="username" label="用户名"/>,在该处后面使用<s:fielderror/>标签, 那么上面的错误信息也就会显示到username这个输入框的旁边。) 但是,在实际开发中,<s:fielderror/>它会输出全部的错误信息内容。而如果想选择性地输出指定错误信息。我们可以使用如下代码解决: 第一种方法: <s:fielderror> <s:param>username</s:param> <!--显示指定的 username字段的 错误消息--> <s:param>username2</s:param> <!--显示指定的 username2字段的 错误消息--> <s:fielderror/> 第二种方法: <s:fielderror fieldName="username"/> <!--显示指定的 username字段的 错误消息--> <s:fielderror fieldName="username2"/> <!--显示指定的 username2字段的 错误消息-->查看全部
-
<global-results> <result name="error">/error.jsp</result> </global-results> 整个包共用查看全部
-
方面: 1.访问Servlet API 2.Action搜索顺序 3.动态方法调用 4.制定多个配置文件 5.默认action 6.Struts2后缀 7.接受参数 8.处理结果类型 1.访问Servlet API HttpServletRequest HttpServletResponse(Struts2不存在) struts2提供了三种方式: 1.ActionContext 2.实现***Aware接口 3.ServletActionContext 2.Action搜索顺序 http://localhost:8080/struts2/path1/path2/path3/student.action 1.判断package是否存在,如:path1/path2/path3/ 2.(package存在)判断action是否存在,如果不存在则去默认namespace的package里面寻找action 3.如果没有,则报错 2.(package不存在)检查上一级路径的package是否存在(知道默认namespace),重复第一步 3.如果没有,则报错 3.动态方法调用 为了解决一个Action对应多个请求的处理,以免Action太多 1.制定method属性(少用)method="" 2.感叹号方式(不推荐)xxx!add.action 3.通配符方式(推荐使用)*_*和{1}{2} 4.指定多个配置文件 1.<include file="模块.xml"></include> 5.默认action 当用户输入的地址找不到对应的action,那么默认action就起作用了 <package> <default-action-ref name="action名称" /> <action name="" class=""> </action> </package>查看全部
-
(1)在result里面最重要的属性是type类型,type的默认值为dispatcher(转发),这个类型支持JSP视图技术。 (2)Struts2支持多种视图技术,例如JSP、Valocity(模板引擎)、FreeMaker(模板引擎)等。 (3)常用三个:chain,redirect,plaintext。 1、chain:将action和另外一个action链接起来。 2、redirect:重定向(会丢失请求参数)。 3、plaintext:返回网页源代码。 4、stream:返回inputstream用于文件下载。查看全部
-
处理结果的两种类型: 1.局部结果:作为action子元素配置 2.全局结果:作为global-result元素的子元素配置。 处理结果类型-result标签下还有param标签: 1)location:该属性定义了该视图对应的实际视图资源 2)parse:该参数指定是否可以再实际视图名字中使用OGNL表达式,默认值为TRUE,支持OGNL(Object-Graph Navigation Language)表达式 ognl表达式可以在jsp页面去写,也可以在struts2页面中去写,在实际开发中是不常用的,默认情况下ognl是允许的,是打开状态 <param name="parse">true</param> <param name="location">...地址</param> ognl表达式使用:<param name="location">/${#request.path}.jsp</param> 在action类中对应的方法中写request.setAttribute("path","返回的jsp页面名称");查看全部
-
结果类型input的效果 * 1.当参数类型转换错误时,如age输入框中的类型是字母等情况,方法自动返回input * 2.当action中存在addFiledError时: * 1)addFileError放在一般执行方法,addFieldError("", "");语句后面有返回input的语句 * 2)addFileError放在validate()中 *3.FileError的表现形式: * 在jsp页面中使用<s:fielderror/>标签,该标签name属性为addFieldError方法中的参数fieldName,在jsp页面中使用struts标签, * 需要导入标签库 语句:<%@ taglib prefix="s" uri="/struts-tags" %>查看全部
-
Struts2:处理结果是字符串。 注意:<result>/success.jsp</result> 有“/”:绝对路径,开始是整个项目的上下文路径 无“/”:相当于执行该action namespace指定的路径 【Structs2处理流程】 用户请求Structs框架控制器(Action)Structs框架视图资源 返回String,提供代码复用性,有利于框架分离。 【Action中五种内置属性(com.opensymphony.xwork2.Action)】 (1) SUCCESS Action正确的执行完成,返回相应的视图,success是name属性的默认值。 (2) NONE 表示Action正确的执行完成,但并不返回任何事视图。 (3) ERROR 表示Action执行失效,返回错误处理视图。 (4) LOGIN Action因为用户没有登录的原因没有正确执行,将返回该登录视图,要求用户进行登录验证 (5) INPUT Action的执行,需要从前端界面获取参数,INPUT就是代表这个参数输入界面,一般在应用中,会对这些 参数进行验证,如果验证没有通过,将自动返回该视图。查看全部
-
需要记忆~面试会问查看全部
-
结果类型input的效果 * 1.当参数类型转换错误时,如age输入框中的类型是字母等情况,方法自动返回input * 2.当action中存在addFiledError时: * 1)addFileError放在一般执行方法,addFieldError("", "");语句后面有返回input的语句 * 2)addFileError放在validate()中 *3.FileError的表现形式: * 在jsp页面中使用<s:fielderror/>标签,该标签name属性为addFieldError方法中的参数fieldName,在jsp页面中使用struts标签, * 需要导入标签库 语句:<%@ taglib prefix="s" uri="/struts-tags" %>查看全部
举报
0/150
提交
取消