struts2版本:2.3.15.3
在应用struts2时,
1)下载struts2版本,将其/lib下的以下jar文件拷贝到你所建项目的WEB-INF/lib目录下
struts2-core-2.3.15.3.jar
xwork-core-2.3.15.3.jar
commons-logging-1.1.3.jar
freemarker-2.3.19.jar
ognl-3.0.6.jar
2)在项目文件夹下新建三个jsp文件,分别为login.jsp、login_success.jsp、login_failure.jsp
login.jsp:
<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>login.jsp page</title>
</head>
<body>
<s:form action="LoginAction" namespace="/check">
<s:textfield name="uname" label="USER"></s:textfield>
<s:textfield name="upassword" label="PASSWORD"></s:textfield>
<s:submit value="SUBMIT"></s:submit>
</s:form>
</body>
</html>
login_success.jsp:
<html>
<head>
<title>成功登陆</title>
</head>
<body>
<h1>恭喜!登陆成功</h1>
</body>
</html>
login_failure.jsp:
<html>
<head>
<title>登陆失败</title>
</head>
<body>
不好意思,登陆失败!<h1><s:property value="sum" /></h1>
</body>
</html>
在login.jsp中使用了struts2标签库,<%@ taglib prefix="s" uri="/struts-tags"%>。表单中action="LoginAction"制定了当点击提交按钮后交给LoginAction这个类来处理。因此,现在我们来书写这个类LoginAction。
LoginAction.java:
package action;
import action.LoginCheck;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ActionContext;
public class LoginAction extends ActionSupport{
private String uname;
private String upassword;
public void setUname(String name){
this.uname = name;
}
public void setUpassword(String pwd){
this.upassword = pwd;
}
public String getUname(){
return this.uname;
}
public String getUpassword(){
return this.upassword;
}
public void validate(){
if(getUname()==null||"".equals(getUname().trim())){
this.addFieldError("uname","USERNAME is null!");
}
if(getUpassword()==null||"".equals(getUpassword().trim())){
this.addFieldError("upassword","PASSWORD is null!");
}
}
public String execute() throws Exception{
LoginCheck lc = new LoginCheck();
if(lc.isLogin(uname,upassword)){
ActionContext.getContext().getSession().put("login","true");
return "success";
}
else
return "error";
}
}
这里注意:LoginAction类继承自ActionSupport。所以前面得有improt导入相应的包。它有两个私有成员变量,他们的名称必须和login.jsp中表单中的两个textfield的name属性
一样,通过重写execute()方法,根据初始化一个LoginCheck类的实例,调用isLogin()方法返回一个字符串,成功是“success",失败是"failure"。下面是
LoginCheck.java:
package action;
public class LoginCheck{
public boolean isLogin(String uname,String upassword){
if(uname.equals("james")&&upassword.equals("1234"))
return true;
else return false;
}
}
那么如何根据返回的字符串来调用相应的页面呢,这就需要struts2.xml的配置了。
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<package name="login" extends="struts-default" namespace="/check">
<action name="LoginAction" class="action.LoginAction">
<result name="success">/login_success.jsp</result>
<result name="error">/login_failure.jsp</result>
<result name="input">/login.jsp</result>
</action>
</package>
</struts>
至此,完工。第一篇博客,写的毫无技术可言。只是单纯的把代码贴上,标记一下。