基于maven搭建struts框架项目
前言
上篇博客讲述了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";
}
}
}
测试成功跳转到首页:

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

被折叠的 条评论
为什么被折叠?



