框架之struts2(二)
来源:互联网 发布:2016淘宝男鞋店铺排行 编辑:程序博客网 时间:2024/05/20 02:54
动作类:
public class CustomerAction extends ActionSupport
implements ModelDriven<CstCustomer>{
private ICustomerService customerService =new CustomerServiceImpl();
private CstCustomer customer =new CstCustomer();
public CstCustomer getModel(){
return customer;
}
/**
* 添加客户
*/
public String addCustomer(){
//保存操作
customerService.saveCustomer(customer);
return"addCustomer";
}
/**
* 添加客户页面的展示
*/
public String addCustomerUI(){
//1.获取客户来源的列表
List<CstBaseDict> basedicts = customerService.findAllCustomerSource();
//2.把查询出来的结果存入请求域中
HttpServletRequest request =ServletActionContext.getRequest();
request.setAttribute("baseDicts",basedicts);
return"addCustomerUI";
}
}
<%@ page language="java"import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib uri="/struts-tags" prefix="s"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>OGNL的入门</title>
</head>
<body>
<%--1.要想使用OGNL,必须在struts2的标签中配置
2.OGNL支持普通的方法调用
<s:property value=""/>它就相当于把标签中value属性的取值输出到浏览器上
value属性的取值是一个OGNL表达式,注意不是一个字符串
如果要想让OGNL表达式就当成普通的字符串来处理的话,需要在外面套上单引号
--%>
<s:property value="OGNL-Expression"/><br/>
<s:property value="'OGNL-Expression'"/><br/><%--由于套上了单引号,所以value的取值就变成了一个普通的字符串--%>
<hr/>
<%--3.OGNL访问静态属性
使用的是@包名.类名@静态属性名称
--%>
<s:property value="@java.lang.Integer@MAX_VALUE"/>
<hr/>
<%--4.普通方法调用--%>
<s:property value="'OGNL-Expression'.length()"/>
<s:property value="'OGNL-Expression'.substring(0,5)"/>
<hr/>
<%--5.静态方法调用:
注意要想访问静态方法,必须开启配置:struts.ognl.allowStaticMethodAccess
--%>
<s:property value="@java.lang.Math@random()"/>
<hr/>
<%--6.使用OGNL操作List
注意:使用struts2的表单标签,必须提供name属性
s:radio标签是创建了一组单选按钮
list属性的取值是一个OGNL表达式,把大括号内的每个元素都当成list中的元素。
--%>
<s:radio list="{'男','女'}" name="gender" label="性别"></s:radio>
<hr/>
<%--7.使用OGNL操作Map
#{key:value,key:value}就相当于创建了一个map集合
无论使用struts2的表单哪个标签,最终在浏览器上能解析的都是html标签。
html标签的value取值是map的key,显示浏览器上的信息是map的value。
--%>
<s:radio list="#{'male':'男','female':'女'}" name="gender" label="性别"></s:radio>
</body>
</html>
ContextMap中存放的主要内容
Key
Value
说明
ValueStack (root)
java.util.List
它是一个list。key不是ValueStack,而是:
com.opensymphony.xwork2.util.ValueStack.ValueStack 。但是我们不用!
application
java.util.Map<String,Object>
ServletContext中的所有属性。
session
java.util.Map<String,Object>
HttpSession中的所有属性。
request
java.util.Map<String,Object>
ServletRequest中的所有属性。
parameters
java.util.Map
参数
attr
java.util.Map
把页面、请求、会话、应用范围内的所有属性放到一起。按照从小到大的范围搜索。
它判断了当前的动作类是否是ModelDriven类型,如果是的话,转成该类型,并且调用了getMode()方法,这时其实调用的是我们动作类重写接口的方法。
拦截器判断了得到的模型是否为null,如果不为null,进行压栈。(而并没有判断为null的情况,这也就是我们为什么要自己实例化模型的原因)。
接下来,就是JSP页面上form表单了,它的input元素中name属性取值全都变成了OGNL表达式,那么就会从栈顶逐个元素往下查找属性名称,并通过params拦截器给属性赋值。由于我们的模型被拦截器压栈了,所以模型跑栈顶去了,这也就是params拦截器能给我们封装成功的原因。a、取ActionContext中key时使用
例如<s:property value="#name" />
b、OGNL中创建Map对象时使用,例如:<s:radio list="#{'male':'男','female':'女'}" />
$
a、在JSP中使用EL表达式时使用,例如${name}
b、在xml配置文件中,编写OGNL表达式时使用。
%
在struts2中,有些标签的value属性取值就是一个OGNL表达式
例如<s:property value="OGNL Expression" />
还有一部分标签,value属性的取值就是普通字符串
例如<s:textfield value="username"/>
如果想把一个普通的字符串强制看成时OGNL,就需要使用%{}把字符串套起来。
例如<s:textfield value="%{username}"/>。
当然在<s:property value="%{OGNL Expression}" />也可以使用,但不会这么用。- 框架之struts2(二)
- 细谈Struts2框架(二)Struts2框架之Scope属性
- Struts2框架学习之二:action详解
- 初识框架之struts2(二)
- javaWeb--struts2框架之二解释
- SSH框架--struts2浅析《二》之配置文件
- Struts2框架(二)配置
- Struts2框架(二)
- Struts2框架进阶(二)
- struts2框架(二)-值栈
- Spring2.5、Struts2、Ibatis开发框架搭建之二
- Spring2.5、Struts2、Ibatis开发框架搭建之二
- 009-Struts2框架拦截器二之方法拦截器
- 暑期ssh框架之struts2学习笔记二
- J2EE系列之Struts2学习笔记(二十)--Struts2验证框架(自定义验证)
- Struts2之验证框架
- Struts2之验证框架
- 框架之struts2(一)
- Linux中task_struct简介
- kali linux增加swap交换空间
- 自用Markdown颜色字体代码
- 编程缩写字典
- c#
- 框架之struts2(二)
- oj1954: C语言实验——for循环打印图形(循环结构)
- 基于openssl的https服务的配置
- mysql的基础学习
- Linux连接MySQL出现1045错误 解决方法
- 定义常量
- 如何合理地估算线程池大小?
- 机器学习中的有监督学习,无监督学习,半监督学习
- php常用数组函数总结