strut2中Action三种实现方式及参数传递

1.     Action三种实现方式

第一种方式:实现Action 接口

public class LoginAction implements Action{

   @Override

   public String execute()throws Exception {

      System.out.println("登录!");

      return SUCCESS;

   }

}

<!-- 第一种实现方式 -->

              <actionname="login"class="com.bjsxt.action.LoginAction"method="execute">

                     <result>/login.jsp</result>

              </action>

第二种方式: 继承ActionSupport  所有定义在struts.xml中的方法{method=”doLogin”}doLogin方法是没有任何参数的!推荐使用第二种!

public class DoLoginAction extends ActionSupport {

       //     需要自定义方法

       public String doLogin(){

              System.out.println("点我带你飞!轻松上王者");

              return SUCCESS;

       }

}

<!-- 第二种实现方式 -->

           <actionname="doLogin"class="com.bjsxt.action.DoLoginAction"method="doLogin">

                 <result>/success.jsp</result>

           </action>

第三种方式:自定义类返回值必须是 return "success";

public class DemoAction {

//     因为自定义类中没有任何跟Action类有关的返回值

       public String demo(){

              System.out.println("demo登录!");

              return "success";

       }

}

<!-- 第三种实现方式 -->

              <actionname="demo"class="com.bjsxt.action.DemoAction"method="demo">

                     <result>/demo.jsp</result>

              </action>

 

2.     参数传递

简单参数传递

//   自定义变量来接受前台的值,自定义变量的名称,必须跟前台name属性名称一致!必须有gettersetter方法

      private String name;

      private String pwd;

//   需要自定义方法

      public String doLogin(){

           System.out.println("点我带你飞!轻松上王者");

           //   要取得前台的参数

           System.out.println("用户名:"+name);

           System.out.println("密码:"+pwd);

           return SUCCESS;

      }

login.jsp 页面 需要注意的是:提交方式为:post。防止中文乱码问题!

Struts,springmvc 对表单get方式提交的时候,会出现中文乱码问题!

如果是get提交方式:则需要在setter方法中对传递过来的参数进行编码设置

public void setName(String name) throws IOException {

       this.name =new String(name.getBytes("iso-8859-1"),"utf-8");

    }

      <center>

           <h1>登录</h1>

           <form action="doLogin.action"method="post">

                 userName: <input type="text" name="name"/><br>

                 password: <input type="password" name="pwd"><br>

               <input type="submit" value="login"/>

           </form>

      </center>

对象参数传递

public class DoLoginAction extends ActionSupport {

  

   private User user;

  

   public User getUser() {

      return user;

   }

 

   public void setUser(User user) {

      this.user =user;

   }

 

   // 需要自定义方法

   public String doLogin(){

      System.out.println("点我带你飞!轻松上王者");

      // 要取得前台的参数

      System.out.println("用户名:"+user.getName());

      System.out.println("密码:"+user.getPwd());

      return SUCCESS;

   }

}

login.jsp 页面 需要注意的是:name="user.name"

<body>

       <center>

              <h1>登录</h1>

              <form action="doLogin.action" method="post">

                     userName: <input type="text" name="user.name"/><br>

                     password: <input type="password" name="user.pwd"><br>

                  <input type="submit" value="login"/>

              </form>

       </center>

</body>

层级对象调用

public class User {

    private int id;

    private String name;

    private String pwd;

    private Address adr;

}

 

public class DoLoginAction extends ActionSupport {

      private User user;

      public User getUser() {

           return user;

      }

      public void setUser(User user) {

           this.user =user;

      }

      //   需要自定义方法

      public String doLogin(){

           System.out.println("点我带你飞!轻松上王者");

           //   要取得前台的参数

           System.out.println("用户名:"+user.getName());

           System.out.println("密码:"+user.getPwd());

           System.out.println("地址:"+user.getAdr().getName());

           return SUCCESS;

      }

}

login.jsp页面

      <center>

           <h1>登录</h1>

           <form action="doLogin.action"method="post">

                 userName: <input type="text" name="user.name"/><br>

                 password: <input type="password" name="user.pwd"><br>

                 <!-- springMVC struts2一个道理!都是通过对象.调用 -->

                 address: <input type="text" name="user.adr.name"><br>

               <input type="submit" value="login"/>

           </form>

      </center>

 

以上两种方式通用配置文件struts.xml

<struts>

    <packagename="default"namespace="/"extends="struts-default">

       <!-- 第二种实现方式 -->

       <actionname="doLogin"class="com.bjsxt.action.DoLoginAction"method="doLogin">

           <result>/success.jsp</result>

       </action>

    </package>

</struts>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值