start.jsp :
<%@ page contentType="text/html;charset=UTF-8" pageEncoding="UTF-8"%>
<html>
<head>
<title>Insert title here</title>
</head>
<body>
<a href="sample">
<s:form/>
<s:textfield/>
<s:password/>
<s:checkbox/>
<s:radio/>
标签用法</a>
</body>
</html>
struts.xml :
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.1.7//EN"
"http://struts.apache.org/dtds/struts-2.1.7.dtd">
<struts>
<package name="demo" extends="struts-default">
<action name="sample" class="action.SampleAction">
<result name="success">/showInfo.jsp</result>
</action>
</package>
</struts>
SampleAction.java :
public class SampleAction {
private String username;
private String password;
private int age;
private String email;
private String gender;
private boolean married;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public boolean isMarried() {
return married;
}
public void setMarried(boolean married) {
this.married = married;
}
public String execute(){
username="tom";
password="1234";
age=25;
email="helloworld@sina.cn";
gender="M";
married=true;
return "success";
}
}
showInfo.jsp :
<%@ page contentType="text/html;charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<html>
<head>
<title>Insert title here</title>
</head>
<body>
<s:form action="sample" theme="simple">
姓名:<s:textfield name="username"></s:textfield><br>
密码:<s:password name="password" showPassword="true"></s:password><br>
年龄:<s:textfield name="age"></s:textfield><br>
邮箱:<s:textfield name="email"></s:textfield><br>
性别:<s:radio list='#{"F":"女","M":"男"}' name="gender"></s:radio><br>
婚否:<s:checkbox name="married"></s:checkbox>
</s:form>
<s:debug></s:debug>
</body>
</html>
展开Debug:
我们如果不使用框架,一般流程是Servlet接受用户请求,调用模型处理请求,得到处理结果,可以将结果绑定到request上接着转发到某个视图页面,在页面中取出数据,进行展现。现在使用了Struts2,XxxAction就相当于Servlet,此处为了简单起见,没有调用模型处理请求得到数据,而是直接在Action中构造了一些数据,然后转发到视图。我们并没有将数据绑定到request或session上,为什么能在视图里访问这些数据呢?
答案就是Value Stack里始终存放当前Action,而这些数据都在Action中,页面访问数据时采用ognl语法。这就是Struts2的做法。