博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
struts(一)
阅读量:6143 次
发布时间:2019-06-21

本文共 2597 字,大约阅读时间需要 8 分钟。

一 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的创建是单实例的

转载于:https://www.cnblogs.com/yaobolove/p/4984897.html

你可能感兴趣的文章
阿里云ECS数据盘格式化与挂载图文教程
查看>>
Flexbox响应式网页布局 - W3Schools视频02
查看>>
【手牵手】搭建前端组件库(二)
查看>>
怎么给视频添加音频或配乐
查看>>
怎么转换音乐格式
查看>>
Leaflet-Develop-Guide
查看>>
每隔1s打印0-5
查看>>
Angular6错误 Service: No provider for Renderer2
查看>>
聊聊flink的BlobStoreService
查看>>
洗牌算法具体指的是什么?
查看>>
HBuilder打包手机app的方法
查看>>
解决Mac下SSH闲时自动中断的问题
查看>>
在JavaScript中理解策略模式
查看>>
ArchSummit 深圳 2017 成功举办,探索未来互联网架构
查看>>
不知道如何提升深度学习性能?我们为你整理了这份速查清单
查看>>
Go 2提上日程,官方团队呼吁社区给新特性提案提交反馈
查看>>
技术绩效考量:你们可能都做错了
查看>>
“亲切照料”下的领域驱动设计
查看>>
除了输入法,移动端AI还有哪些想象空间?
查看>>
回家路上想起来关于Js一个有趣的东西
查看>>