Struts学习笔记(一)

.首先讲了struts2的来源,struts是由struts1和webwork整合后叫做struts2.

2.struts1 存在的缺陷:

    ①支持的表现层单一

    ②与servlet API严重耦合,难于测试

    ③代码严重依赖于struts API,属于侵入式设计。

3.在添加了struts配置后,web.xml文件中自动添加一段代码,也就是过滤器的代码

    <filter>
       <filter-name>struts2</filter-name>
       <filter-class> org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
  </filter>
  <filter-mapping>
       <filter-name>struts2</filter-name>
       <url-pattern>*.action</url-pattern>
  </filter-mapping>

4.在struts中配置和servlet的原理是一样的。知识写法不一样而已。

    配置的方式如下:

    <struts>
         <include file="struts-default"></include>
         <package name="system" extends="struts-default">
              <action name="loginaction" class="com.nwsuaf.javaweb.action.LoginAction">     

                //在没有
                   //action name 对应提交的action的名字,class对应提交后要处理的业务逻辑。

                  // result 标签用来判断上面业务逻辑返回的值,并进行匹配跳转到相应的地址。

                   <result name="index">/index.jsp</result>
                   <result name="login">/login.html</result>
              </action>
         </package>
    </struts>   

5.注意在视图页面中写访问路径时要写绝对路径。

6.在struts中接受数据的方法。

    ①在action类中定义与表单中数据项一样的属性。并在该action中为每个属性生成set方法,然后再这个action中就可以获得表单中提交过来的属性了。

    ②当表单中属性很多的时候,我们一般使用一个类来接受数据,将数据直接存放在类对象中,使用方法为:

        Ⅰ.存放数据的类中的属性和表单中属性一致。并生成get和set方法。在action类中定义一个数据类的对象,注意一定要是public的,并且要new。不然获取不到完整的数据.

        Ⅱ.和第一种一样定义一个private的对象,然后写上set方法和get方法(没有get方法获取到一条数据

        Ⅲ.注意:在html中也就是说提交数据的页面中,定义的name要使用“类名.属性”的方式来写,不然在action中获取不到数据。

7.struts中接收数据的方式为Ognl的方式。

        下面就以一个例子来说明一下:

         LoginAction action = new LoginAction(); //生成一个对象,
         OgnlContext context = new OgnlContext(); //得到Ognl的上下文对象
         context.setRoot(action); //设置Ognl的根结点。
  
         Ognl.setValue("user.username", context.getRoot(), "wangxin");
         //设置属性值,第一个参数为:user.username意思为在根节点下面有一个类对象user,其中属性为username,也就是说设置这个属性的值。
         //第二个参数是哪一个根节点。第三个参数为设置的属性值。
         Object value = Ognl.getValue("user.username", context.getRoot());
         // 意思为:在根节点下面得到user.username的属性值。
         System.out.println(value);   

 8.在开发总数据很多的时候我们这样来接收数据,如下所示:

          LoginAction action = new LoginAction();  //声明一个对象,
          OgnlContext context = new OgnlContext(); //得到Ognl的根节点,
          context.setRoot(action); //设置根节点
          HttpServletRequest request=null; //声明一个HttpServletRequest对象,
              Enumeration parameterNames = request.getParameterNames(); //获取这个提交的所有的数据项。
              while (parameterNames.hasMoreElements()) {   //进行循环遍历
                   String name = (String)parameterNames.nextElement(); //取得提交数据的属性名。
                   String value = request.getParameter(name);   //根据属性名来获得属性的值。
                   Ognl.setValue(name, context.getRoot(), value);  //将属性和属性值设置到根节点中去。
               }
          Object value = Ognl.getValue("user.username", context.getRoot()); //获得属性值。 
          System.out.println(value); 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值