前言:这是本人学习的结果,欢迎转载,欢迎交流,但转载务必给出本文章的链接地址:http://blog.csdn.net/youqishini/article/details/7051421,谢谢~
前两节虽说用到了Struts2,但是还没有用到Struts2的精髓。真正的Struts2都是将action写在struts.xml配置文件中,这样便于管理与action的多次使用。
下面将通过一个登陆的小例子来演示Struts2的基本配置流程,会了这些说明你对Struts2有了一个基本的了解,算是入门了。
同样此次项目以前是在以前的项目基础上进行。
一.添加Struts2所需要的jar包,本项目中添加的jar包如下所示:
其中所必需的jar包为:commons-logging-1.1.jar,freemarker-2.3.13.jar,ognl-2.6.11.jar,struts2-core-2.1.6.jar,xwork-2.1.2.jar.
二.在web.xml中添加Struts2的过滤器,如下所示:
<filter> <filter-name>struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
web.xml配置文件用来配置这个项目的servlet容器的属性。Filter和filter-mapping用来建立Struts2的FilterdIspathcher.filter的映射方式是 “/*”,这就意味着所有的请求都将被Struts2的FilterDispatcher类处理。
三.登录页面login.jsp,代码如下:
<%@ page language="java"contentType="text/html; charset=gb2312" pageEncoding="gb2312"%> <%@ taglib prefix="s"uri="/struts-tags"%> <!DOCTYPE html PUBLIC "-//W3C//DTDHTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type"content="text/html; charset=gb2312"> <title>登陆</title> </head> <body> <s:form action="login"> 登陆 <s:textfield name="username"label="用户名" ></s:textfield> <s:password name="passworld"label="密 码"></s:password> <s:submit value="登陆"></s:submit> </s:form> </body> </html>
这里面注意Struts2标签的使用,看的简单却很强大。
四.Action的文件LoginAction.java,代码如下所示:
package com.iman.action; import com.opensymphony.xwork2.ActionSupport; public class LoginAction extends ActionSupport { private String username; private String passworld; public Stringlogin(){ if(username.equals("admin") && passworld.equals("123")){ return SUCCESS; } return ERROR; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassworld() { return passworld; } public void setPassworld(String passworld) { this.passworld = passworld; } }
注意的是“SUCCESS”和“ERROR”是Struts2常用的5个属性之一,而usernamer和passworld都要以setter和getter的形式”,否则将不能被jsp页面接受。
五.登陆成功后的页面loginSuccess.jsp,代码如下:
<%@ page language="java"contentType="text/html; charset=gb2312" pageEncoding="gb2312"%> <%@ taglib prefix="s" uri="/struts-tags"%> <!DOCTYPE html PUBLIC "-//W3C//DTDHTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type"content="text/html; charset=gb2312"> <title>登录成功</title> </head> <body> <s:property value="username"/>,恭喜您,登陆成功! </body> </html>
六.登陆失败后的页面loginError.jsp:
<%@ page language="java"contentType="text/html; charset=gb2312" pageEncoding="gb2312"%> <!DOCTYPE html PUBLIC "-//W3C//DTDHTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type"content="text/html; charset=gb2312"> <title>登录失败</title> </head> <body> 对不起,用户名或密码错误! </body> </html>
其中loginSuccess.jsp和loginError.Jsp都是在WebContent下新建一个results文件夹后将其放在这个文件夹里
七.开始在struts.xml里面配置,代码如下:
<?xml version="1.0"encoding="UTF-8"?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD StrutsConfiguration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd"> <struts> <package name="default" extends="struts-default"namespace="/"> <action name="login" class="com.iman.action.LoginAction" method="login"> <result name="success">/results/loginSuccess.jsp</result> <result name="error">/results/loginError.jsp</result> </action> </package> </struts>
其中action的name对应form表单的action,method对应Java类Action中方法,如果登陆成功将跳转到loginSuccess.jsp页面,失败则跳转到loginError.jsp页面。
好了,经过这么一通编写、配置,可以运行了,打开服务器并部署项目,打开浏览器,在地址栏输入:http://localhost:8000/Struts2Tutorial/login.jsp运行页面如下:
我们设置的用户名为admin,密码为123,如果输入正确后则跳转到loginSuccess.jsp页面中:
如果失败则跳转到loginError.jsp页面:
如果你成功运行了,说明你配置正确了,算是入门了,至于Struts2其他的重要特性在将后还是要学习的。
看的出来Struts2真的很强大,当然这只是最基本的用法,后面将学习更加实用的东西!
最后附上本项目的结构图: