这里涉及到三种传递:
属性,实体,list传值的流程:
加载web.xml---输入页面(jsp)--struts.xml(分辨出交给哪个action)
---action(处理后)--返回struts.xml--最后交给jsp页面
第一步配置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>/*</url-pattern>
</filter-mapping>
第二步配置struts.xml
<!-- 动态方法调用 -->
<constant name="struts.enable.DynamicMethodInvocation" value="true" />
<!-- 开发模式 -->
<constant name="struts.devMode" value="true" />
<package name="default" namespace="/" extends="struts-default">
<!-- 当页面传递的类型不匹配出错时,设置全局 -->
<global-results>
<result name="input">/error.jsp</result>
</global-results>
<action name="user" class="cn.test.LoginAction">//选择对应的action
<result name="success">/success.jsp</result>//用于返回界面
</action>
</package>
第三步创建一个UserInfo.java
这是一个实体类
第四步创建一个Loginaction.java
public class LoginAction extends ActionSupport {
// 属性接收参数
private String name;
private String pass;
// 实体类接收参数
private UserInfo user;
// List接收参数
private List<UserInfo> list;
// 默认传递给execute,可以改变的
@Override
public String execute() throws Exception {
System.out.print(name + "---" + pass);
return "success";
}
// 下面的都是用于传递值的方法
public String add1() throws Exception {
// 这个user就是上面的那个UserInfo user
System.out.print(user);
return "success";
}
public String add2() throws Exception {
// 此处的list封装了login页面的数据(UserInfo)
for (UserInfo user : list) {
System.out.print(user);
}
return "success";
}下面还有 <span style="font-family: Arial, Helvetica, sans-serif;">name </span><span style="font-family: Arial, Helvetica, sans-serif;">pass </span><span style="font-family: Arial, Helvetica, sans-serif;">user </span><span style="font-family: Arial, Helvetica, sans-serif;">list</span><span style="font-family: Arial, Helvetica, sans-serif;">的</span><span style="font-family: Arial, Helvetica, sans-serif;">get/set方法,就不列出来了</span>
第五步创建可以传递值的页面login.jsp
<h1>属性接收参数</h1><hr/>
<form action="user" method="post">
账号:<input type="text" name="name"><br>
密码:<input type="password" name="pass"><br>
<input type="submit" value="登录">
</form>
<h1>实体类接收参数</h1><hr/>
<form action="user!add1" method="post">
账号:<input type="text" name="user.name"><br>
密码:<input type="password" name="user.pass"><br>
<input type="submit" value="登录">
</form>
<h1>List接收参数</h1><hr/>
<form action="user!add2" method="post">
账号:<input type="text" name="list[0].name">
密码:<input type="password" name="list[0].pass"><br>
账号:<input type="text" name="list[1].name">
密码:<input type="password" name="list[1].pass"><br>
<input type="submit" value="登录">
</form>
第六步交给获得处理结果的jsp页面
<%@ taglib prefix="s" uri="/struts-tags" %>//这个是struts标签,用于下面的iterator
对应execute方法:
<span style="white-space:pre"> </span><h1>属性接收</h1><hr />
账号:${name}<br>
密码:${pass}<br>
<strong><span style="font-size:14px;"></span></strong><pre name="code" class="html">对应add1方法:
<h1>实体类接收</h1><hr />账号:${user.name}<br> 密码:${user.pass}<br>
<strong><span style="font-size:14px;"></span></strong><pre name="code" class="html">对应add2方法:
<h1>List接收</h1><hr /><s:iterator value="list" status="s">//迭代器索引:${s.index}--序号:${s.count}-- 姓名:${name } 密码:${pass }<br /></s:iterator>