-
结果类型input的效果 * 1.当参数类型转换错误时,如age输入框中的类型是字母等情况,方法自动返回input * 2.当action中存在addFiledError时: * 1)addFileError放在一般执行方法,addFieldError("", "");语句后面有返回input的语句 * 2)addFileError放在validate()中,则不需要return INPUT; *3.FileError的表现形式: * 在jsp页面中使用<s:fielderror></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就是代表这个参数输入界面,一般在应用中,会对这些 参数进行验证,如果验证没有通过,将自动返回该视图。查看全部
-
接收参数三个方法,推荐使用ModeIDriven接收 第一种接收参数的方法:直接在action类中创建相应的属性和getter和setter,和前端的name名字相同。eg:前端的username,在action类中就要建立一个private String username; Struts会自动映射为这个属性赋值 第二种接受参数的方法:使用DomainModel,将username 和password两个属性封装为一个类User(必须是标准的JavaBean),在action中声明这个属性:private User user; 同时必须为user设置getter和setter;在前端中的name需要设置为user.name和user.password,才能映射成功。如果private User user=new User();是没有办法映射成功的 第三种接收参数的方法:使用ModelDriven<T>接口,这个action必须实现这个接口的public T getModel()方法。此时声明的属性必须实例化,eg: private User user = new User(); 同时不需要getter和setter。前端的name也只需要写username和password就可以,不需要再加域了。这种方法时最推荐的方法,因为可以减少前后端的耦合 注意: 1、使用Action的属性接受参数,在Action中定义需要接受的属性,并写它的set/get方法。 2、使用DomainModel接受参数,创建实体类定义需要接受的属性,并set/get方法,在Action中创建实体类名属性。并在界面进行指定。 3、使用ModelDriver接受参数,在Action中实现ModelDriver<实体类名>接口,并实现方法返回当前需要转换的对象,删除set/get方法,并对 对象 进行实例化,并取消指定。 4、获取List集合中的参数。获取多个参数查看全部
-
Struts2后缀,默认是.action或者是空值 如何要设置,请在Struts2的三大核心文件中设置 在strts.xml中的配置语句 <constant name = "strts.action.extension" value = "xxx,xx,yyy"></constant>//name是固定的,value是指定的后缀,可以是空值 在struts.properties中的配置 struts.action.extension = xxxx,xxx,xx//可以配置多个,以,号分隔 在web.xml中的配置 <filter>//过滤器 <init-param>过滤器中假如<init-param> <param-name>struts.action.extension</param-name>//struts.action.extension为固定 <param-value>do</param-value>//do为可选后缀 </init-param>//结束init-param </filter>//结束过滤器查看全部
-
默认Action,在网页找不到原来输入的网址的情况下,跳转的页面 新建 <default-action-ref name = "xxx"></default-action-ref>//这是默认跳转指令,name中的名字可以自定义 <action name= "xxx">//这里的name必须跟<default-action-ref>中的name一样 <result>xxxx.jsp</result>//需要默认跳转到的jsp页面 </action>//结束action查看全部
-
指定多个配置文件,如果项目比较大,xml配置文件比较多,那么可以在struts.xml中使用include标签,将多个配置文件包括进来。 <include file="***.xml"> </include> <constant name="struts.i18n.encoding" value="UTF-8"> </constant> 注意: 1.被include的标签一定要符合struts的dtd规范。也就是说被include的xml文件的内部格式要符合struts的xml文件规范。 2.xml文件的编码格式要相同,如果是utf-8,那么都是utf-8。查看全部
-
动态方法调用: 动态方法调用是为了解决一个Action对应多个请求的处理,以免Action太多。 三种方式:指定method属性、感叹号方式(不推荐)、通配符方式(推荐使用) 1:<action name="add" method="add" class="com.imooc.action.HelloWorldAction"> 2:<constant name="struts.enable.DynamicMethodInvocation" value="false"> </constant> <action name="helloWorld" class="com.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(或update).action 3: 第一个*代替{1},第二个*代替{2},result里的name是Action的返回值,action的里method是Action里的方法名,调用某个方法时最后目标就输入 {1}_{2}.action;这样可以访问多个Action里的方法. <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_add.action查看全部
-
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覆盖掉查看全部
-
Struts2访问servlet API的三种方式:查看全部
-
学习内容几个方面查看全部
-
struts.properties内容 1.#指定默认编码集,对于请求参数带有中文的情况应该设置成GBK或GB2312,默认值UTF-8 2.struts.i18n,encoding = GB2312 3.#是否每次HTTP请求到达时,都重新加载国际化资源文件,默认值false 4.struts.i18n.reload = true 5.#当struts.xml改动后,是否重新加载该文件。在开发阶段建议将此属性设置为“true”,提高开发效率,默认为false 6.struts.configuration.xml.reload =true 7.#是否使用Struts2的开发模式,可以获得更多报错信息,便于调试。在开发阶段设置为true。默认为false 8.struts.devMode = true 9.#设置浏览器是否缓存静态页面,开发阶段设置为false,以获得最新响应。默认值为true 10.struts.serve.static.browserCache = true 11.#指定后缀为.action形式的请求可被Struts2处理,可配置多个请求后缀,比如.do,.struts2等,配置时多个后缀用逗号隔开 12.struts.action.extension = action,do,struts2 13.#配置服务器运行时的端口号。一般情况下改属性不修改,如果端口号占用则重新分配端口号,默认值80 14.struts.url.http.port = 8080查看全部
-
Struts.xml文件的标签 <struts> <include file="">包含其他的独立xml配置文件 <package提供了将多个action组织为一个模块的方式 名字必须唯一, name:package名称 extends:继承父package名称 abstract:设置package的属性为抽象的package不能定义action,值true:false namespace:定义package命名空间影响到URL的地址,例如命名空间为/test,那么访问的地址为http://localhost:8080/struts2/test/xx.action **以下介绍都是写在<package>与</package>之间的** <interceptor>定义拦截器 name:拦截器名称 class:拦截器类路径 <interceptor-stacck name="">定义拦截器栈 <default-interceptor-ref name="">定义默认拦截器 定义全局result配置 <global-results> <result name="error">/error.jsp</result> </golbal-result> <action> name:action名称,影响//localhost:8080/struts2/xx.action class:对应类的路径 method:调用action的方法名 在action中可以定义拦截器,定义返回result,定义参数例如URL查看全部
-
Struts.properties核心文件,自动加载,放在与Struts.xml文件相同的路径即可,也可以不需要查看全部
-
struts.xml核心文件查看全部
-
web.xml核心文件:查看全部
举报
0/150
提交
取消