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属性名称一致!必须有getter,setter方法 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> |