Struts2基础应用

导入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项目编写完成

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值