Struts2(一)

本文介绍如何使用Struts2框架搭建简单的Web应用,包括下载jar包、配置web.xml和struts.xml、创建Action类及JSP页面等步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

struts2是一个MVC框架,用来在我们的项目中简化我们的开发流程,采用拦截器的机制处理用户发送过来的请求。用xml配置或注解的方法连接用户请求与对应的处理逻辑。当然,简化了多少还要我们自己用过才能有一个切身的体会啦。

一、下载jar包

首先当然是jar包的下载啦,从struts2的官网Download按钮点进去,接着就点击下图红框那里下载,这个选项下载的就只有jar包,如果想要全部的文件可以选择第一个full Distribution。

接着就解压并打开我们刚才下载的文件,我导入的就只有最基础的一些jar包,如下图所示,我这里使用的是2.5.13的版本。顺便提一下,之前的版本有要求xwork-x.x.x这个jar包,现在他已经合并到了struts2.core这个jar包里面了。

接着我们就可以在我们的项目中使用struts2了,首先在eclipse中建立一个Dynamic Web Project(相当于MyEclipse中的Web Project),把刚才列举到的一些jar包放入我们WEB-INF包下的lib包中。

二、项目配置

配置web.xml

导完jar包后,我们要在项目的web.xml中配置struts2的过利器,将所有的请求都通过struts2来处理,web.xml在WEB-INF包下

<filter>
    <filter-name>struts2</filter-name>
    <filter-class>
        org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter
    </filter-class>
</filter>
<filter-mapping>
    <filter-name>struts2</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

这里提一下filter-class这个参数,在2.5版本之后的包就改成这个了,而使用2.3版本则是另一个参数,这里参考了这个博客:

https://blog.youkuaiyun.com/nttzli/article/details/52729489

配置struts.xml

至此web.xml所需要的配制就结束了,我们还有一个更重要的配置文件就是struts.xml,当然不想使用xml配置也行,还有一种方法就是使用注解,我们这里先讲用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="hellWorld" extends="struts-default">	
        <!-- 注册Action,即处理逻辑类
             name属性:对应前端页面form表单里的action
             class属性:对应处理类的路径
             method属性:执行的方法,可不写,默认的方法是execute() -->
        <action name="helloWorld" class="com.action.HelloAction" method="execute">
            <!-- 返回的结果,根据name属性返回对应的页面,除了jsp页面也能返回其他的如html页面 -->
            <result name="success">/index.jsp</result>		
            <result name="error">/error.jsp</result>
        </action>	
    </package>
</struts>

这里就是我们最简单的一个struts.xml的配置,首先就是<package>标签,他使用name属性给他每个action归类,在action很多的时候很好用,而action就是我们的处理逻辑,result就是我们的返回结果,基本都标在代码里了。

Action类

接着来配置我们的Action类,在src下创建一个名为com.action的包,在里面创建一个类叫HelloAction,代码如下:

package com.action;

import com.opensymphony.xwork2.ActionSupport;

public class HelloAction extends ActionSupport{
	private String name;

	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	
	//执行的方法
	public String execute() throws Exception {
		if ("Yang".equals(name)) {
			return SUCCESS;
		} else {
			return ERROR;
		}
	}
}

这个Action类就相当于一个servlet,对前端页面发送过来的请求进行一些处理,并返回一个字符串,而struts.xml就是通过该字符换来判断要返回哪一个结果(这里是jsp页面)。类里面我们就判断了名字为name的input输入框的输入,这里的name就对应了JSP里表单里的元素的name属性的值,如果元素里的name="aaaa",则这里的定义的变量名也是aaaa。

这个类继承了ActionSuppot类,而ActionSupport类实现了Action接口。因此我们在execute()方法里返回的SUCCESS是Action接口的变量,相当于返回"success"字符串,ERROR同理。当然,因为已经在struts.xml中注册过了,所以我们可以不继承这个类,而这种情况下编写的代码如下,在一开始我们可以先这样实现这个类:

package com.action;

public class HelloAction {
	private String name;

	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	
	//执行的方法
	public String execute() throws Exception {
		if ("Yang".equals(name)) {
			return "success";
		} else {
			return "error";
		}
	}
}

JSP页面

接着我们创建三个JSP页面,hello.jsp、index.jsp和error.jsp,首先hello.jsp代码如下,如果输入框输入的名字匹配则跳转到index.jsp,否则就验证失败,跳转到error.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>
	<h1>Hello Struts2</h1>
	<form action="helloWorld">
		<label for="name">Please enter your name</label><br>
		<input type="text" name="name">
		<input type="submit" value="To Index">
	</form>
</body>
</html>

首先我们这里的form标签的action大家都知道的了,对应了处理类的别名,在struts2中就是对应了struts.xml中Action的名字,通过struts.xml帮我们的页面找到对应的处理逻辑类。而input的name属性的值则是对应了Action中的变量的名字。再创建index.jsp和error.jsp就可以运行我们这个demo了。

三、运行结果

运行成功:

验证失败:

那这样我们的一个struts2的小demo就做完了,当然有错误的话欢迎指正~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值