调用一个action内部的多种方法,写法有很多种,在这会不断的更新调用方法的写法总结。以login demo做例子,这些都是在注解的基础上的。
第一种:
LoginAction:
package com.main.action;
import java.sql.Timestamp;
import javax.annotation.Resource;
import org.apache.struts2.convention.annotation.*;
import com.main.entity.User;
import com.main.service.UserService;
import com.opensymphony.xwork2.ActionSupport;
@Action(value="userLogin")
@Results({
@Result(name="success",location="/success.jsp"),
@Result(name="error",location="/error.jsp")
})
public class LoginAction extends ActionSupport {
/**
*
*/
private static final long serialVersionUID = 1L;
@Resource(name=UserService.USER_SERVICE)
private UserService userService;
private String uName;
private String pwd;
public String getUName() {
return uName;
}
public void setUName(String name) {
uName = name;
}
public String getPwd() {
return pwd;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}
public String execute(){
if(null == uName || null == pwd){
return "error";
}
try {
User user = new User();
user.setUName(uName);
user.setPwd(pwd);
user.setCreateTime(new Timestamp(System.currentTimeMillis()));
userService.addUser(user);
return "success";
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
return "error";
}
}
public String add(){
if(null == uName || null == pwd){
return "error";
}
try {
User user = new User();
user.setUName(uName);
user.setPwd(pwd);
user.setCreateTime(new Timestamp(System.currentTimeMillis()));
userService.addUser(user);
return "success";
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
return "error";
}
}
}
login.jsp:
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'index.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body>
<form action="userLogin" method="post">
用户名:<input name="uName" type="text"><br/>
密码:<input name="pwd" type="password"><br/>
<input type="submit" value="提交"> <input type="reset" value="重置">
<a href="./web/register.jsp">注册一个账号</a>
</form>
</body>
</html>
register.jsp:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'register.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body>
<form action="userLogin!add" method="post">
用户名:<input name="uName" type="text"><br/>
密码:<input name="pwd" type="password"><br/>
<input type="submit" value="注册"><input type="reset" value="重置">
</form>
</body>
</html>
总结:jsp请求后台action时,在action name后面以!为界,加上方法名称即可。不写上方法名称,默认是execute方法。