ognl以及令牌以及开头的一点方法

ValueStack中存储数据

 

得到值栈的第一种方式(真麻烦)

 

ActionContext actionContext = ActionContext . getContext();
Map<String,Object> reqmap = (Map<String, Object>) actionContext.get("request");
ValueStack valueStack = (ValueStack) reqmap.get("struts.valueStack");

 

 

 

第二种方式

 

HttpServletRequest request= ServletActionContext.getRequest();
ValueStack valueStack = (ValueStack)request.getAttribute(“struts.valueStack”);

 

 

 

第三种方式

 

ActionContext actionContext = ActionContext.getCOntext();
ValueStack valueStack = actionContext.getValueStack();

 

 

 

这个第二种第三种有点像昨天那个啊,好像是得到context的方式?

等下我瞅瞅

哦不对 Session ,都是莫名其妙的到request

然后从request里面去出来带引号的名字

 

向值栈中存储数据

valueStack.put(new Student(小黑,20));

这个就放在栈顶了,student类的属性当成name

 

还有一个也能存就是直接放外面用private

 

setValue(String str,Object obj)

加一个#号,就是向ActionContext中存键值对,键是name,值是pipipi

valueStack.setValue(#name,pipipipi);

不加#号,就把第一个属性名覆盖了,如果没有这个属性名,就报错了

valuStack.setValue(name,bibibib);

 

 

set(String key ,Object obj)

封装一个hashmap,把key的值当键,

valueStack.set(stu,new new Student(xiaohua,21);

valueStack.push(new Student(xiaohua,22);

 

我得看看这个setpush有啥用

 

 

这个是JSP页面

本来不想写,实在是不知道写什么了

就勉强强写吧

<s:debug></s:debug>

<s:property value=[0].name/>

<s:property value=[1].name/>

<s:property value=[2].name/>

这个问题就是,我后放入了很多没有用的东西(后放的在最上面)

然后它一个一个开始画框,

1,2,3,4,56

这些取的值永远都是第一个

 

好了我们看看实现原理

 

ActionContext context = ActionContext.getContext();

ValueStack valueStack=context.getValueStack();

Object obj = ValueStack.findValue(name);

out.println(obj);

这原理好特么浅啊。。。。。。。

 

下一项吧

serlvet中的查找顺序

pageContext,request,session,application

Struts中使用el表达式的搜索顺序

request.ValueStack,ActionContext,Session,Applilcation

从值栈找不到,会去actioncontext中查找

 

 

  没有使用var,每次迭代出来的对象放入 值栈的栈顶                     

   

      <s:iterator value="stuts" status="st">
           <tr>
              <td><s:property value="#st.count"/></td>
              <td><s:property value="name"/></td>
              <td><s:property value="age"/></td>
           </tr>
         </s:iterator>  
       </table>
 
  <s:iterator value="stuts.{?#this.age>22}" status="st">
           <tr>
              <td><s:property value="#st.count"/></td>
              <td><s:property value="name"/></td>
              <td><s:property value="age"/></td>
           </tr>
         </s:iterator>  
 
 
     <s:iterator value="stuts" var="stu" status="st">
           <tr>
              <td><s:property value="#st.count"/></td>
              <td><s:property value="#stu.name"/></td>
              <td><s:property value="#stu.age"/></td>
           </tr>
         </s:iterator>

 

 

 

     <!--

            ognl投影:筛选字段                                      

         -->

         <s:iterator value="stuts.{name}" status="st">

           <tr>

              <td><s:property value="#st.count"/></td>

              <td><s:property /></td>

           </tr>

         </s:iterator>  

       </table>

       

自己理解吧贼简单看一遍就懂了但是我现在不想看了嘤嘤嘤

 

 

 

 

哦对这个东西叫令牌,想了半天没想起来

首先在jsp页面上写

<s:token></s:token>

然后再Struts中配置

就是加个拦截器的功效

<interceptor-ref name=token></interceptor-ref>

记得把默认加进去

<interceptor-ref name=defaultStack></

 

啊不写了 还有个什么界面

不管了

 

 

出道题:暂时想的

1:用户登录

(设上用户名密码验证,后台验证)

2:登录后看到一个表

(用ognl看出来)

(这个表就是注册用户表吧)

3:新增用户

(时间格式,后台验证)

(设置回显,设置回显样式)

 

不过拦截器是干嘛来着,哦对,看有没有Session

可以用在show界面前面,ok就这样

也可以想一点别的,关于拦截器

 

 

写项目的小总结,边写边总结,

那估计会写的更慢了。。。

继承的是ActionSupport,实现的是 ModelDriven接口

怎么记不住呢

 

验证器怎么写来着。。。

 

总算被我(在帮助下)找到了原始的文件

验证器源文件:

Web App Libraries

xwork-core-2.3.15.3.jar下(dtd约束也在)

com.opensymphony.xwork2

validator

validators

default.xml

给自己挖的两个坑

只用写 类名-动作名-validation.xml

就可以了

不过是动作名!!动作名!!

记得还要写返回结果,所以才能看到啊(摊手)

<result name=input>/login.jsp</result>

 

C3P0怎么写又忘了。。。。。。。。。。。。

private static DataSource ds = new ComboPooledDataSource();

 

public static DataSource getDataSource(){

return ds;

 

遇到了谜一样的数据库链接失败问题不管了

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值