struts(一)

一 strucs是实现了基于JavaEEWeb应用的MVC设计模式的应用框架;
  MVC这个词必须好好解释一下

  M:model(模型)   V: view(视图)  C: Controller(控制器)
特点:
功能:获取参数
调用Model处理
响应内容到客户端

以下是一个关于struts2的xml文件详解
<struts>
<!-- 是否支持动态方法调用 -->
<constant name="struts.enable.DynamicMethodInvocation" value="false" />
<!-- 卡发模式:true表示卡发阶段 -->
<constant name="struts.devMode" value="true" />

<!-- 包:
name="default" 包名
namespace="/" 访问路径 这"/"表示现对路径
extends="struts-default" 继承自struts-default

-->
<package name="default" namespace="/" extends="struts-default">
<!-- 配置控制器,在没有配置class属性的时候,当前这个hello这个action是有struts提供的默认的
控制器,它只有一个方法execute(),返回"success;
-->
<action name="index">
<result name="success">/hello.jsp</result>
</action>

<action name="first" class="com.yc.web.action.FirstAction">
<result name="hello">/hello.jsp</result>
<result name="bye">/bye.jsp</result>
</action>
</package>
</struts>


二 对于struts的返回值(Action的创建)
(1)自己自定义返回值
(2)实现Action接口
如 Action.SUCCESS;Action.NONE
在struts.xml可以直接用success 或 none 来接收
(3)继承ActionSupport (ActionSupport实现Action接口)
如 Action.SUCCESS;Action.NONE
在struts.xml可以直接用success 或 none 来接收

三 对于struts的三种传参方式
强调:生命周期: 构造方法-》setXXX()/getXXX()方法 -> execute()方法
(1)以参数的形式传参
传的部分:
<input type=“xx" name="参数名">
接的部分
在Action中直接提供参数的set方法

(2)以对象的形式进行传参
传的部分:
<input type=“xx" name="对象名.参数名">
接的部分
a.创建这个接收参数的注入类
b.在Action中定义这个类属性,并提供get和set两个方法

(3) 以struts提供的ModelDriven进行传参
传的部分:
<input type="xx" name="参数名">
接的部分:
class XXXAction implements ModelDriven{
public Object getModel(){
return 对象名;
}
}

四 struts的作用域(对象的操作)
1 使用RequestAware,SessionAware,ApplicationAware接口,来注入三个Map
2 通过ServletActionContext取HttpServletRequest对象

还有就是以map的形式去表示上面的两种方式

eg:

//获取标准的j2ee作用域对象
private Map<String,Object> request;
private Map<String,Object> application;
private Map<String,Object> session;

public StudentAction(){
request=(Map<String,Object>)ActionContext.getContext().get("request");
session=ActionContext.getContext().getSession();
application=ActionContext.getContext().getApplication();
}

public String execute(){
//将这个学生保存到request,session,application
request.put("student",student);
session.put("student", student);
application.put("student", student);

return Action.SUCCESS;

}


通过ServletRequestAware接口,来注入HttpServletRequest对象接口

eg:
request=ServletActionContext.getRequest();
response=ServletActionContext.getResponse();

session=request.getSession();
application=session.getServletContext();

 

五 通配符的表示

  eg:

  <action name="student_*" class="com.yc.web.actions.StudentAction" method="{1}"></action>

  *表示0个或多个,有点类似于正则表达式

  


总结:struts 是多实例的,会每次都创建一次,所以类似DBhelp的属性设为全局就没问题
而Servlet的创建是单实例的

posted @ 2015-11-21 22:08  Animationer  阅读(203)  评论(0编辑  收藏  举报