struts2-1(环境的搭建与第一个列子)

 

Struts2笔记:

一:简单的例子

1.       导入jarStruts2-core-2.0.6.jarxwork-2.0.1.jarognl-2.6.11.jar

2.       配置web.xml

<display-name>Struts 2.0 Hello World</display-name>
    <filter>
        <filter-name>struts2</filter-name>
        <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>struts2</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

 

3.    src中加入struts.xml

<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE struts PUBLIC

    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"

    "http://struts.apache.org/dtds/struts-2.0.dtd">

 

<struts>

 

  <!-- Struts 2Action必须放在指定的包空间下定义 -->

  <package name="com.dyp.struts2" extends="struts-default">

  <!-- 定义loginAction,该Action的实现类为lee.Action -->

  <action name="Login" class="com.dyp.struts2.action.LoginAction">

      <!-- 定义处理结果和资源之间映射关系。 -->

      <result name="error">/error.jsp</result>

      <result name="success">/welcome.jsp</result>

      <!-- 定义input的逻辑视图名,对应login.jsp页面 -->

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

  </action>

 

  <action name="Friend" class="com.dyp.struts2.action.FriendAction">

      <!-- 如果处理结果返回login,进入login.jsp页面 -->

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

      <!-- 如果处理结果返回success,进入showBook.jsp页面 -->

      <result name="success">/showFriend.jsp</result>

  </action>

 

  </package>

 

 

</struts>

4.    登录jsp

<!-- 使用form标签生成表单元素 -->

     <s:form action="Login">

         <!-- 生成一个用户名文本输入框 -->

         <s:textfield name="username" label="用户名" />

         <!-- 生成一个密码文本输入框 -->

         <s:textfield name="password" label="  " />

         <!-- 生成一个提交按钮 -->

         <s:submit value="登录" />

     </s:form>

 

5.    Action

import com.opensymphony.xwork2.ActionContext;

import com.opensymphony.xwork2.ActionSupport;

 

public class LoginAction extends ActionSupport {

 

  public void validate() {

     //如果用户名为空,或者用户名为空字符串

        if (getUsername() == null || getUsername().trim().equals(""))

        {

            //添加表单校验错误

            addFieldError("username", "user.required");

        }

 

        //当密码为空,或者密码为空字符串时,添加表单校验错误

        if (getPassword() == null || getPassword().trim().equals(""))

 

        {

            addFieldError("password", "pass.required");

        }

  }

 

  //下面是Action内用于封装用户请求参数的两个属性

  private String username;

  private String password;

 

  //username属性对应的getter方法

  public String getUsername()

  {

     return username;

  }

 

  //username属性对应的setter方法

  public void setUsername(String username)

  {

     this.username = username;

  }

 

  //password属性对应的getter方法

  public String getPassword()

  {

     return password;

  }

 

  //password属性对应的setter方法

  public void setPassword(String password)

  {

     this.password = password;

  }

 

  //处理用户请求的execute方法

  public String execute() throws Exception

  {

     //当用户请求参数的username等于scott,密码请求参数为tiger时,返回success字符串

     //否则返回error字符串

     if (getUsername().equals("scott")

            && getPassword().equals("tiger") )

     {

          ActionContext.getContext().getSession().put("user" , getUsername());

         return "success";

     }

     else

     {

         return "error";

     }

  }

 

}

 

6.    welcome界面

<h2>欢迎${sessionScope.user},您已经登录!</h2>

  <h2><a href="Friend.action">查看好友</a></h2>

7.    FriendAction

import com.dyp.struts2.services.FriendServices;

import com.opensymphony.xwork2.Action;

import com.opensymphony.xwork2.ActionContext;

 

public class FriendAction implements Action {

 

  private String[] friends;

 

  public String[] getFriends() {

     return friends;

  }

 

  public void setFriends(String[] friends) {

     this.friends = friends;

  }

 

  public String execute() throws Exception {

     //获取Session中的user属性

        String user = (String)ActionContext.getContext().getSession().

            get("user");

        //如果user属性不为空,且该属性值为scott

        if (user != null && user.equals("scott"))

        {

            FriendServices fs = new FriendServices();

            //将业务逻辑组件的返回值设置成该Action的属性

            this.setFriends(fs.getFriends());

            return SUCCESS;

        }

        else

        {

            return LOGIN;

        }

 

 

  }

 

}

8.    业务处FriendServices

public class FriendServices {

  //以一个常量数组模拟了从持久存储设备(数据库)中取出的数据

    private String[] users =

       new String[]{

       "dyp" ,

       "祝叶",

       "dypzy",

       "dt"

    };

   

    //业务逻辑方法,该方法返回全部图书

    public String[] getFriends()

    {

       return users;

    }

 

}

9.    showFriend.jsp

<caption>

            ${sessionScope.user}的好友

         </caption>

         <s:iterator value="friends" status="index">

            <!-- 判断序号是否为奇数 -->

            <s:if test="#index.odd == true">

                <tr style="background-color: #cccccc">

            </s:if>

            <!-- 判断迭代元素的序号是否不为偶数 -->

            <s:else>

                <tr>

            </s:else>

            <td>

                书名:

            </td>

            <td>

                <s:property />

            </td>

            </tr>

         </s:iterator>

     </table>

 

如果不用struts2的标签,那么需要用下面的处理方式

<%@page import="java.util.*,com.opensymphony.xwork2.util.*"%>

<%

            //获取封装输出信息的ValueStack对象

            ValueStack vs = (ValueStack) request

                   .getAttribute("struts.valueStack");

            //调用ValueStackfineValue方法获取Action中的books属性值

            String[] friends = (String[]) vs.findValue("friends");

            //迭代输出全部图书信息

            for(int i=0;i<friends.length;i++)

            {

         %>

         <tr>

            <td>

                姓名:

            </td>

            <td><%=friends[i]%></td>

         </tr>

         <%

            }

         %>

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值