2、值栈
3、web中怎么拿web对象
1、动态action的实现
1.1、直接在struts.xml中配置action节点的method属性为action中的方法名
<struts> <package name="mypackage" extends="struts-defaut"> <action name="test" class="cn.zhuojingxinxi.web.TestAction" method="save"> </action> </package>
package cn.zhuojingxinxi.web; public class TestAction { public String execute(){ System.out.println("this is execute method```"); return null; } public String save(){ System.out.println("this is save method```"); return null; } public String update(){ System.out.println("this is update method```"); return null; } public String delete(){ System.out.println("this is delete method```"); return null; } }
1.2、 使用通配符来匹配对应的方法 * { }(代码如下)
struts.xml代码:
<struts> <package name="mypackage" extends="struts-default"> <action name="test_*" class="cn.zhuojingxinxi.web.TestAction" method="{1}"> </action> </package>
jsp代码:
<body> <form action="test.action" method="post"> <input type="submit" value="提交" /> </form> <form action="test_save.action" method="post"> <input type="submit" value="保存" /> </form> <form action="test_update.action" method="post"> <input type="submit" value="更新" /> </form> <form action="test_delete.action" method="post"> <input type="submit" value="删除" /> </form> </body>
1.3、在页面上的form表单使用action!method来指定action中的特定方法
struts.xml代码:
<action name="test" class="cn.zhuojingxinxi.web.TestAction"> <result name="success">/success.jsp</result> <result name="error">/error.jsp</result> </action>
jsp页面代码:
<body> <form action="test.action" method="post"> <input type="submit" value="提交" /> </form> <form action="test!save.action" method="post"> <input type="submit" value="保存" /> </form> <form action="test!update.action" method="post"> <input type="submit" value="更新" /> </form> <form action="test!delete.action" method="post"> <input type="submit" value="删除" /> </form> </body>
2、值栈(存放值的栈区)
2.1、它存放的作用域是request
2.2、
3、web中怎么拿web对象
3.1、非IOC
public String save(){ //通过当前action的上下文拿值栈 ValueStack valueStack= ActionContext.getContext().getValueStack(); // 通过值栈的上下文拿值 //1、获得请求对象(HttpServletRequest) HttpServletRequest request= (HttpServletRequest) valueStack.getContext().get(StrutsStatics.HTTP_REQUEST); request.setAttribute("hello", "值存入请求"); //2、获得请求对象 HttpServletRequest request1= (HttpServletRequest)ActionContext.getContext().get(StrutsStatics.HTTP_REQUEST); //3、获得HttpServletRequest对象 HttpServletRequest request2= ServletActionContext.getRequest(); System.out.println("this is save method```"); return null; }
3.2、IOC(set注入)实现ServletRequestAware接口
private HttpServletRequest httpServletRequest; public void setServletRequest(HttpServletRequest arg0) { this.httpServletRequest=arg0; }
源码下载请点这里: