提交信息表单页面 login.jsp
<form action="login"> userName:<input type="text" name="userName"> userPsw:<input type="text" name="userPsw"> <input type="submit" value="login"> </form>注意两个input的标签name为“userName”、“userPsw”,则其表单处理类,此处是LoginAction类应有对应名称的属性以及set方法
action处理类 LoginAction.java
package com.action; import com.opensymphony.xwork2.Action; /** * @author WenSe * @date 2018/10/25 13:40 */ public class LoginAction { private String userName; private String userPsw; public String login(){ System.out.println(userName + "/"+userPsw); return Action.SUCCESS; } public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } public String getUserPsw() { return userPsw; } public void setUserPsw(String userPsw) { this.userPsw = userPsw; } }获取信息页面 success.jsp
<body> 欢迎${userName} </body>struts.xml
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN" "http://struts.apache.org/dtds/struts-2.5.dtd"> <struts> <package name="login" namespace="/" extends="struts-default"> <action name="login" class="com.action.LoginAction" method="login"> <result name="success">/success.jsp</result> </action> </package> </struts>
当把属性都包装为在一个类中时,就可以使用对象驱动模型,在上面的基础上,需做以下修改
新建user类,并提供无参构造方法 public class User { private String name; private String psw; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPsw() { return psw; } public void setPsw(String psw) { this.psw = psw; } }2.action处理类声明user变量(不创建),并提供get、set方法
public class LoginAction { private User user; public String login(){ System.out.println(user.getName() + "/"+user.getPsw()); return Action.SUCCESS; } public User getUser() { return user; } public void setUser(User user) { this.user = user; } }3.jsp页面form表单中的相应input的name属性值改为 处理类中的对象.属性
<form action="login"> userName:<input type="text" name="user.name"> userPsw:<input type="text" name="user.psw"> <input type="submit" value="login"> </form>jsp页面要获取对象属性值时,也要用 处理类中的对象.属性 格式
<body> 欢迎${user.name} </body>
在jsp中的属性前要加对象限定,显得臃肿,此时,可用模型驱动,在上面的基础上,再做修改即可
1.处理类 实现 ModelDriven<T> 接口,实现getModel方法,并创建User对象
public class LoginAction implements ModelDriven<User> { private User user; @Override public User getModel() { return user = new User(); } public String login(){ System.out.println(user.getName() + "/"+user.getPsw()); return Action.SUCCESS; } }2.此时jsp页面中,就可以直接写属性名称,类似属性驱动时
<form action="login"> userName:<input type="text" name="name"> userPsw:<input type="text" name="psw"> <input type="submit" value="login"> </form> <body> 欢迎${name} </body>