-
当一个项目存在多个Action的时候,如果把所有Action都配置在struts.xml中则会使文件非常的大,因此可以定义多个xml文件,把Action分配到其他的xml文件中,最后在struts.xml中通过<include file="">方式包含进来. 可以在每个xml文件中加上<constant name="struts.i18n.encoding" value="UTF-8"></constant>防止编码问题.查看全部
-
当result标签有指定name属性的话,即<result name="add">/add.jsp</result> 那么Action类的方法的返回值必须要与name值对应,不能是SUCCESS或其他. 当result标签没有指定name属性,即<result>/add.jsp</result> 那么Action类的方法的返回值必须是SUCCESS Strust2中Action类里面提供了基本的静态属性: ERROR SUCCESS INPUT LOGIN NONE 返回这些常用不变的值会返回相对应的String字符串: 静态常量 返回字符串 public static final String ERROR "error" public static final String INPUT "input" public static final String LOGIN "login" public static final String NONE "none" public static final String SUCCESS "success" 在action里面返回Action.SUCCESS相当与返回了一个字符串"success"或直接写return "success"效果是一样的,给Result对象接收.查看全部
-
第三种方法,通过通配符的方式 只需配置一个action,返回多个结果集.结果集也需要定义唯一name值,在action类对应的方法中也要有与name值一一对应的返回值. <action name="helloworld_*" method="{1}" class="com.imooc.action"> <result name="default">/index.jsp</result> <result name="add">/add.jsp</result> <result name="update">/update.jsp</result> </action> 其中需要在action的name属性中用"_"符号来进行分割,用"*"符号来代表匹配值(相当于sql的?预编译) {1}就相当于第一个"*" 访问url的时候填上参数值即可. http://localhost/HelloWorld/helloworld_add.action 则会调用add方法,返回指定的结果集.查看全部
-
第二种方法,通过感叹号方式. 不用配置多个action标签,只需一个即可. 如果使用感叹号方式,则需要开启一个功能,即把properties文件中的某个属性设置为true. 直接在struts.xml中通过<constant name="struts.enable.DynamicMethodInvocation" value="true" ></constant>即可 配置action的时候加上多个结果集.且设置唯一的name值.在Action类中的方法的return返回结果中要与此name值一一对应,为了判断调用哪个结果集. <action name="hellworld" class="com.imooc.action" > <result name="default">result.jsp</result> <result name="add">add.jsp</result> <result name="update">update.jsp</result> </action> public String execute() throws Exception { System.out.println("执行Action"); return "default"; } public String add(){ System.out.println("执行add()"); return "add"; } public String update(){ return "update"; } 在访问action的时候,在action的名字即helloword后面加上"!方法名"即可,就会自动跳转去action标签对应的action类中调用此方法.返回指定结果集. http://localhost:8080/HelloWorld/helloworld!add.action查看全部
-
第一种方法,通过指定method属性配置. Action类的execute方法是action默认调用方法,如果访问action但是却没有指定要访问哪一个方法,此时就会默认访问execute方法. 若一个Action中有多个方法,在Struts.xml文件中,要为每一个方法都单独配置一个action标签. 在包下创建多个action标签,其中name值是唯一的,再配置method属性指定要调用action类的方法名,class值是一样的,因为是同一个action类,只是调用不同的方法,即访问不同的action,调用的只是同一个action类的不同方法.返回的结果集也不同.查看全部
-
动态方法调用 1.指定method属性(要配置多个action标签) 2.感叹号方式(不推荐) 3.通配符方式.查看全部
-
通过ActionContext对象访问Servlet. ActionContext有getContext()静态方法来获取到ActionContext的实例. actioncontext的几个特点: actioncontext是strtuts2新设计出来的存储数据的容器,该容器是个map集合,它里面持有到达各个容器(其它map)的引用,如可以获取标准的4个域容器,还有struts 2自己定义的东西,如valuestack值栈 可以通过actioncontext方便的获取到其它容器,如同一个快捷方式,是struts 2的数据中心。 actioncontext是threadloacl线程绑定的, 当struts 2接受到请求后,就会马上创建一个actioncontext,然后各个位置都可以获取到actioncontext actioncontext意思就是action运行的上下文,负责存储action运行产生的数据 actioncontext它里面有个map集合用来存储数据,但是actioncontext本身作为一个对象,它也有很多其它开发方法 。 actioncontext.getcontext():获取actioncontext里的大map集合 actioncontext.getcontext().getvaluestack() //获取值栈 在Action中,直接使用域对象对应的Map对象来保存和读取数据。 通过ActionContext来获取request、session和application对象 ActionContext context = ActionContext.getContext(); Map request = (Map)context.get("request"); Map session = context.getSession(); Map application = context.getApplication(); request.put("greeting", "欢迎您"); //在请求中放置欢迎信息。 session.put("user", user);//在session中保存user对象 application.put("counter", count);查看全部
-
struts2搜索Action的机制. 1.获得请求路径的URI,例如url是:http://server/struts2/path1/path2/path3/test.action 2.首先寻找namespace为/path1/path2/path3的package,如果存在这个package,则在这个package中寻找名字为test的action,如果不存在这个package则转步骤3; 3.寻找namespace为/path1/path2的package,如果存在这个package,则在这个package中寻找名字为test的action,如果不存在这个package,则转步骤4; 4.寻找namespace为/path1的package,如果存在这个package,则在这个package中寻找名字为test的action,如果仍然不存在这个package,就去默认的namaspace的package下面去找名字为test的action,如果还是找不到,页面提示找不到action。查看全部
-
在action的execute()方法中并没有像Servlet的方法中一样,带有HttpServletRequest等对象.. action中如何访问servlet的API即如何获得request,response,servletContext对象 struts提供了三种方式访问Servlet的Api ActionContext:上下文的类。其中的对象都是以Map形式存储的查看全部
-
最典型的mvc模式查看全部
-
ModelDriven查看全部
-
Domain driven 类似于asp.net mvc 设置模板的引入查看全部
-
java的属性 {get;set;} 自动被调用查看全部
-
模板 jsp 渲染器 ... 控制器 action查看全部
-
深入Struts2的几个方面讲解查看全部
举报
0/150
提交
取消