基于maven搭建struts2框架项目

使用maven构建Struts2项目步骤详解
本文档详细介绍了如何基于maven搭建Struts2框架项目,从添加框架依赖到配置web.xml,再到创建必要的XML配置文件,如struts.xml和struts-base.xml。重点讲解了过滤器配置、模块化XML文件的组织以及Action的配置,提供了一个登录功能的配置示例。

前言

上篇博客讲述了maven的环境搭建,这次我需要基于maven搭建一个struts项目。

struts2框架简述

Struts2 是基于MVC设计模式的web应用程序框架,最初是以WebWork框架和Struts框架为基础,通过提供增强和改进的Struts框架,进而实现简化web技术人员开发工作的目标。

详细部分请去相关文档:https://www.w3cschool.cn/struts_2/struts_architecture.html

搭建项目之添加框架依赖

添加相关框架依赖我们得去pom.xml当中,注意在这个文档当中需要良好的网络,因为你第一次添加完相关的jar包依赖保存后,他是会自动去中央仓库(之前配置环境时配置的源仓库)下载jar包的,:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.zengjing</groupId>
  <artifactId>mavenDemo</artifactId>
  <packaging>war</packaging>
  <version>0.0.1-SNAPSHOT</version>
  <name>mavenDemo Maven Webapp</name>
  <url>http://maven.apache.org</url>
  
  <properties>
  	<servlet.version>4.0.1</servlet.version>
  	<junit.version>3.8.1</junit.version>
  	<struts2.version>2.5.16</struts2.version>
  </properties>
  
  <!-- Junit  -->
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>${junit.version}</version>
      <scope>test</scope>
    </dependency>
    
    <!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
	<dependency>
	    <groupId>javax.servlet</groupId>
	    <artifactId>javax.servlet-api</artifactId>
	    <version>${servlet.version}</version>
	    <scope>provided</scope>
	</dependency>
	 
	
	
	<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
	<dependency>
	    <groupId>mysql</groupId>
	    <artifactId>mysql-connector-java</artifactId>
	    <version>5.1.44</version>
	</dependency>
	
	<!-- https://mvnrepository.com/artifact/org.apache.struts/struts2-core -->
	<dependency>
	    <groupId>org.apache.struts</groupId>
	    <artifactId>struts2-core</artifactId>
	    <version>${struts2.version}</version>
	</dependency>
	
	
    
  </dependencies>
   <build>
    <finalName>mavenDemo</finalName>
    <plugins>
    	<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-compiler-plugin</artifactId>
				<version>3.7.0</version>
				<configuration>
					<source>1.8</source>
					<target>1.8</target>
					<encoding>UTF-8</encoding>
				</configuration>
			</plugin>
    </plugins>
  </build>

</project>

那么上面的配置代码是不需要我们自己手动打的,我们可以去https://mvnrepository.com/当中搜索需要的依赖,将其对应的配置文件复制到pom.xml当中的标签当中,如下:
在这里插入图片描述
加载完的jar包依赖我们可以在maven Dependencies当中查看:
在这里插入图片描述

项目配置

到这里相关的环境配置我们是基本结束,搭建struts项目的第一步我们得先去web.xml当中配置struts2框架的filter,因为struts2框架的启动就是基于过滤器,这个过滤器就相当于mvc当中的总控制器servlet的配置。

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns="http://java.sun.com/xml/ns/javaee"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
	id="WebApp_ID" version="3.0">
  <display-name>Archetype Created Web Application</display-name>

//注册一个过滤器
	<filter>
		<filter-name>encodingFilter</filter-name>
		<filter-class>com.zengjing.util.EncodingFilter</filter-class>
	</filter>
//过滤器的映射
	<filter-mapping>
		<filter-name>encodingFilter</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>


	<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>*.action</url-pattern>
	</filter-mapping>

</web-app>


这个过滤器的filter-class属性是:
在这里插入图片描述
然后创建项目需要的xml文件(都在src/main/resources),必须要有的struts.xml和struts-base.xml,另外两个是我所建立的功能模块对应的xml文件:
在这里插入图片描述

struts.xml(这里面是用include标签引入不同的模块功能所对应的xml名字,第一个必须是struts-base.xml,后面顺序一般来说没什么讲究):

<?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE struts PUBLIC
	"-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
	"http://struts.apache.org/dtds/struts-2.5.dtd">
<struts>
	<include file="struts-base.xml"></include>
	<include file="struts-hello.xml"></include>
	<include file="struts-login.xml"></include>
</struts>

struts-base.xml(首先是要开启开发者模式和自动加载配置文件,这个文件是所有模块配置文件的基础,它是继承于struts-default):

<?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE struts PUBLIC
	"-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
	"http://struts.apache.org/dtds/struts-2.5.dtd">
<struts>
	<!-- 开启开发者模式 -->
	<constant name="struts.devMode" value="true"></constant>

	<!-- 开启自动加载配置文件 -->
	<constant name="struts.configuration.xml.reload" value="true"></constant>
	

	<!-- 
		name:包名
		extends:继承
		abstract:是否是抽象类
		namespace:命名空间
	 --> 
	<package name="struts-base" extends="struts-default" abstract="true"  >
		<global-allowed-methods>regex:.*</global-allowed-methods>
	</package>
</struts>

struts-hello.xml就不说了,那个是我测试环境是否搭建成功的一个显示功能

主要我来讲一个登录(struts-login.xml),这种功能模块对应的xml文件里面一般来说就是package标签,它继承于我上面讲的基础的struts-base,里面是相关action的配置,name是路径,method是所携带的方法,和mvc还有所不同的是跳转页面的配置标签是result:

<?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE struts PUBLIC
	"-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
	"http://struts.apache.org/dtds/struts-2.5.dtd">
<struts>
	<package name="struts-login" extends="struts-base" >
		<action name="loginAction_*" method="{1}" class="com.zengjing.action.UserAction">
			<!-- 
				name:跳转路径
				type:重定向或者转发 默认是转发
			 -->
			<result name="success" type="dispatcher" >/index.jsp</result>
			<result name="error" type="dispatcher" >/error.jsp</result>
		</action>
	</package>
</struts>

这个简单的登录配置文件对应的action是,action和之前的mvc也有一点不一样,这里面可以写参数(必须写对应的get/set方法),这个参数是可以获取到jsp界面传过来的对应的参数名一样的参数,也可以写对象模型来接收对应的参数(这个优先级高于前者):

EL表达式由小到大:page->request->session->application
OGNL表达式由上往下:(值栈,先进后出的数据结构)

package com.zengjing.action;

import com.opensymphony.xwork2.ModelDriven;
import com.zengjing.entity.User;

public class UserAction implements ModelDriven<User>{
	
	private User user=new User();
	
	@Override
	public User getModel() {
		// TODO Auto-generated method stub
		return user;
	}
	
	private String userName;
	
	
	public String getUserName() {
		return userName;
	}


	public void setUserName(String userName) {
		this.userName = userName;
	}


	public String login() {
		System.out.println(userName);
		System.out.println(user);
		if(user.getUserName().equals("jiang")&&user.getPassWord().equals("666")) {
			return "success";
		}else {
			return "error";
		}
		
	}



}

测试成功跳转到首页:
在这里插入图片描述

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值