应用struts2的一个登陆小实例,Marker一下

来源:互联网 发布:windows qt安装包下载 编辑:程序博客网 时间:2024/06/06 10:50

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>

至此,完工。第一篇博客,写的毫无技术可言。只是单纯的把代码贴上,标记一下。


0 0