-
在Struts2框架中的处理大概分为以下几个步骤 1 客户端初始化一个指向Servlet容器(例如Tomcat)的请求 2 这个请求经过一系列的过滤器(Filter)(这些过滤器中有一个叫做ActionContextCleanUp的可选过滤器,这个过滤器对于Struts2和其他框架的集成很有帮助,例如:SiteMesh Plugin) 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响应到客户端浏览器查看全部
-
action在return 的时候有success,none,error,login,input默认值查看全部
-
struts2后缀 三种配置方式: 1.在struts.xml中增加常量constant <constant name="struts.action.extension" value="action,do,struts2"></constant> 2.在struts.properties中配置:struts.action.extension=action,do,struts2 3.在web.xml的过滤器中配置init-param参数 <init-param> <param-name>struts.action.extension</param-name> <param-value>do,action,strtus2</param-value> </init-param> ps: 在struts.xml中配置如果value="",则后缀不加才可以正常显示。 如果在struts.xml中不配置,则浏览器访问action加不加后缀都可以访问查看全部
-
默认的Action 【找不到默认action的原因和解决方法】 <default-action-ref name="index"></default-action-ref> <action name="index" > <result>/error.jsp</result> </action> <action name="log_*" method="{1}" class="com.wayne.action.LoginAction"> <result name="login">/login.jsp</result> <result name="logout">/logout.jsp</result> </action> 通配符会覆盖掉默认action,所以不能有【*_*】这样子的action,要改成【log_*_*】这类型的命名,否则,【*_*】里面的第一个*就包括了所有的字符,直接进入了这个action进行处理,无法进入默认的action了。查看全部
-
struts.xml中包含的内容; 1.全局属性 2.用户请求和响应Action之间的对应关系 3.Action可能用到的参数和返回结果 4.各种拦截器的配置 可以在struts.xml中用constant元素来代替struts.properties文件中的key-value对 每个package包里可以定义多个action查看全部
-
要导入的包:(共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 jar 包下载地址 http://struts.apache.org/ http://people.apache.org/builds/struts/查看全部
-
指定多个配置文件 项目比较大,xml配置文件比较多,那么可以在struts.xml中使用include标签,将多个配置文件包括进来。 <include file="***.xml"> </include> <constant name="struts.i18n.encoding" value="UTF-8"> </constant> ps: 1.被include的标签一定要符合struts的dtd规范。也就是说被include的xml文件的内部格式要符合struts的xml文件规范。 2.xml文件的编码格式要相同,如果是utf-8,那么都是utf-8。查看全部
-
动态方法调用 动态方法调用是为了解决一个Action对应多个请求的处理,以免Action太多。 三种方式:指定method属性、感叹号方式、通配符方式 1. <action name="addAction" method="add" class="com.imooc.action.HelloWorldAction"> http://localhost:8080/HelloWorld/addAction.action 2. <constant name="struts.enable.DynamicMethodInvocation" value="true"> </constant> <action name="helloworld" class="com.imooc.action.HelloWorldAction"> <result >/result.jsp</result> <result name="add">/add.jsp</result> <result name="update">/update.jsp</result> </action> http://localhost:8080/HelloWorld/helloworld!add.action 3. <action name="*_*" method="{2}" class="com.imooc.action.{1}Action"> <result >/result.jsp</result> <result name="add">/{2}.jsp</result> <result name="update">/{2}.jsp</result> </action> http://localhost:8080/HelloWorld/HelloWorld_update.action查看全部
-
Struts2的核心文件:struts.xml,web.xml.查看全部
-
struts2的环境需求查看全部
-
Struts是什么? Struts是流行和成熟的基于mvc设计模式的web应该程序框架。 使用struts的目的: 为了帮助我们减少在运用mvc设计模式来开发Web应用的时间 jsp+javabean = model1; jsp+servlet+javabean = model2; MVC是模型视图控制器(Model View Controller),一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面。查看全部
-
mvc查看全部
-
http://localhost:8080/product_one/hellowworld.jsp可以进入result.jsp页面 http://localhost:8080/product_one/aaa/ddd/ccc/hellowworld.jsp也可以进入result.jsp页面 Action搜索顺序: http://localhost:8080/struts2/path1/path2/path3/student.action 第一步:判断package是否存在,如:path1/path2/path3/ 如果package存在 第二步:则判断该package中action是否存在,如果不存在则去默认namespace的package里面寻找action 第三步:如果没有,则报错 如果package不存在: 第二步:检查上一级路径的package是否存在(直到默认namespace),重复第一步 第三步:如果没有则报错 如果请求为/login.action,系统会根据根命名空间("/")中查找名为login的Action,如果在根命名空间中找到了名为login的Action,则该Action处理用户的请求;否则系统将转为在默认命名空间中寻找名为login的Action,如果默认的命名空间中有名为login的Action,则由该Action处理用户的请求。如果两个命名空间中都找不到名为login的Action,那么系统将出现错误。 注意:命名空间只有一个级别。如果请求的URL是/bookservice/search/get.action系统将先在/bookservice/search的命名空间下查找名为get的Action,如果在该系统命名空间内找到名为get的Action,则由该Action处理该用户的请求;如果在该命名空间中没有找到名为get的Action,系统将直接进入默认的命名空间中查找名为get的Action,而不会在bookservice的命名空间下查找名为get的Action。 可以多个包使用同一个命名空间,但是相同的命名空间相当于同一个模块,也就是同一个包。 一个包中可以有name值相同的action,但是后面的action会把前面同名的action覆盖掉查看全部
-
Servlet API: httpRequest、httpResponse、servletContext 3个API对应jsp面向对象:request、response、application Servlet中可以直接调用Servlet API struts2 struts2 Action中execute没有任何参数,也就是不存在Servlet API struts2 提供了3种方式访问Servlet API: 1.ActionContext类 2.实现***Aware接口 3.ServletActionCotext类查看全部
举报
0/150
提交
取消