Struts2基础应用

来源:互联网 发布:矩阵张量积 知乎 编辑:程序博客网 时间:2024/06/05 05:25

导入Struts2

由于Eclipse不支持Struts2,所以我们使用Struts2需要下载Struts2所需的jar包
Struts2包
http://pan.baidu.com/s/1misIAnu
Struts2源码
http://pan.baidu.com/s/1slB5osd

要想正常使用Struts2 至少需要这5个包
这里写图片描述
将这5个必须的包拖入到项目中的WEB-INF中的lib下。
本项目由于使用Struts2 2.5版本 所以还需要其他包
一共需要的是:
commons-fileupload-1.3.2.jar
commons-lang3-3.4.jar
commons-logging-1.1.3.jar
freemarker-2.3.23.jar
javassist-3.20.0-GA.jar
log4j-api-2.5.jar
ognl-3.1.10.jar
struts2-core-2.5.2.jar
xwork-core-2.2.1.jar
除此之外,还需要手工新建Struts2的配置文件,名为struts.xml,放在src根目录下;
接下来配置web.xml文件,配置代码如下:

<?xml version="1.0" encoding="UTF-8"?><web-app id="WebApp_9" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee                     http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"><filter><filter-name>struts2</filter-name><filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class></filt<filter-mapping><filter-name>struts2</filter-name><url-pattern>/*</url-pattern></filter-mapping>eb-app>

其中

<filter><filter-name>struts2</filter-name><filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareFilter</filter-class></filter>

表示使用过滤器org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter来拦截请求

<filter-mapping><filter-name>struts2</filter-name><url-pattern>/*</url-pattern></filter-mapping>

表示过滤器过滤项目内所有资源。
至此 Struts2的配置已经完成
项目目录如下:
这里写图片描述
部署项目 如果运行错误,应根据错误原因添加其他所需的jar包

编写JSP界面

编写一个JSP,用来容纳表单,放在WebContent目录下,代码如下:

<%@ page language="java" contentType="text/html; charset=utf-8"    pageEncoding="utf-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>Insert title here</title></head><body><form action="LoginAction" method="post">账户:<input type="text" name="account"><br>密码:<input type="text" name="password"><br><input type="submit" value="登录"></form></body></html>

运行login.jsp
这里写图片描述

由于表单提交的Action还未编写,所以填写内容点击登录,会显示404错误;
除了编写login.jsp界面以外,我们还需要编写loginsuccess.jsp和loginfail.jsp页面,用来对登录情况进行跳转
loginsuccess.jsp

<%@ page language="java" contentType="text/html; charset=utf-8"    pageEncoding="utf-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>Insert title here</title></head><body>登录成功</body></html>

loginfail.jsp

<%@ page language="java" contentType="text/html; charset=utf-8"    pageEncoding="utf-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>Insert title here</title></head><body>登录失败</body></html>

编写Action

Action是负责业务逻辑的,所以必须编写业务逻辑代码;
要能够处理业务逻辑,必须满足一个规范,那就是编写execute方法来处理业务逻辑。注意不是重写是编写,并且该方法不要有任何参数。
编写execute方法,是因为Action接受数据后,由框架自动调用它的execute方法;
Action代码如下:

package cn.lystery.Action;import com.opensymphony.xwork2.ActionSupport;public class LoginAction{    private String account;    private String password;    public String getAccount() {        return account;    }    public void setAccount(String account) {        this.account = account;    }    public String getPassword() {        return password;    }    public void setPassword(String password) {        this.password = password;    }    public String execute() throws Exception {        if(password.equals("123"))        {            return "success";        }        return "fail";    }}

在代码中,框架会自动调用setter和getter方法,将表单数据封装在Action中。execute方法根据判断,返回指定字符串;

配置Action

单单一个类是不能处理任何东西的,所以我们还需要对Action进行配置。
下面,我们对struts.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="LoginPackage" extends="struts-default">        <action name="LoginAction" class="cn.lystery.Action.LoginAction">        <result name="success">/loginsuccess.jsp</result>        <result name="fail">/loginfail.jsp</result>        </action>    </package></struts>

package name 该标签名称任意,但是不要重名
extends属性表示继承一个默认的配置文件struts-default
action标签中的name表示Action被提交时的路径,class指定类路径
result标签可以确定虚拟名称和实际页面路径的映射;

测试

到这里,一个基础的Struts2项目已经完成,部署运行这里写图片描述
由于execute方法,我们规定密码123即可登录 按要求输入,点击登录
这里写图片描述
Action已经成功处理
当输入密码不为123时,测试发现跳转到登录失败的界面
这里写图片描述

至此,一个基础的Struts2项目编写完成

0 0