Maven环境搭建与struts2简单测试
Maven环境搭建与struts2简单测试
-
1.Maven简介与作用
-
- 1.1Maven简介
- 1.2 作用
-
2. Maven安装与配置
-
具体操作步骤如下:
- 首先,请下载并安装Maven工具。
- 然后,请根据以下步骤完成相应的操作:
- 第一步:环境变量设置。
- 第二步:执行测试文件。
- 第三步:请根据以下步骤完成对依赖关系的配置:
- 首先,请确认项目的依赖关系路径。
- 然后,请编辑build.gradle文件。
- 最后,请重新运行构建流程以获取正确的依赖关系引用。
-
3.进行创建Maven项目
-
- 3.1 修改eclipse配置
- 3.2 项目创建
-
4. 配置pom.xml
-
- 4.1 struts.xml
- 4.2 struts-base.xml
- 4.3 struts-login.xml
- 4.4 web.xml
-
5.测试代码块与方法
-
- 5.1页面代码块
- 5.2 实体类(反射赋值)
- 5.3 web层action
- 5.4 测试结果
-
6. 总结
-
1.Maven简介与作用
1.1Maven简介
Apache Maven是一种用于项目管理和自动构建的技术工具,并遵循基于项目的对象模型(POM)的设计理念。
1.2 作用
执行与项目相关的操作包括:编译程序、构建步骤、单元测试流程、安装步骤、网站生成流程以及基于Maven的部署方案。
2. Maven安装与配置
2.1 Maven下载使用

解压完就长这样

2.2 环境配置
1.MAVEN_HOME
2.M2_HOME
3.修改path添加maven相关路径
新建一个MAVEN_HOME(变量值是解压完的路径)

新建一个M2_HOME(变量值是解压完的路径)

接下来去path里面新增一下(这里系统不一样可能添加方式也不一样)

放在这里方便复制使用
%MAVEN_HOME%\bin
%M2_HOME%\bin
2.3 exe测试
通过打开exe进行一个代码测试(像这样显示了版本号,就代表成功了)

同样放在这方便复制测试
mvn –version
2.4 对jar包的仓库进行一个配置


在使用记事本来编辑代码时会遇到样式混乱的问题难以直接修改。接着安装了notepad++软件并打开了它后就可以方便地进行修改了。

然后还要修改一个源(也就是jar包的下载位置)

源代码(方便复制使用)
<mirror>
<id>alimaven</id>
<mirrorOf>central</mirrorOf>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
</mirror>
3.进行创建Maven项目
3.1 修改eclipse配置



3.2 项目创建






创建完继续下一步修改


这里会出现一个配置web的xml


最后操作


4. 配置pom.xml
获取 jar 包至仓库
可以通过访问该网站 https://mvnrepository.com/ 进行搜索获取所需 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.tanle</groupId>
<artifactId>strutsmaven</artifactId>
<packaging>war</packaging>
<version>0.0.1-SNAPSHOT</version>
<name>strutsmaven Maven Webapp</name>
<url>http://maven.apache.org</url>
<properties>
<servlet.version>4.0.1</servlet.version>
<junit.version>3.8.1</junit.version>
<struts.version>2.5.16</struts.version>
</properties>
<dependencies>
<!-- junit -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${junit.version}</version>
<scope>test</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
<!-- servlet -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>${servlet.version}</version>
<scope>provided</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.struts/struts2-core -->
<!-- struts -->
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-core</artifactId>
<version>${struts.version}</version>
</dependency>
</dependencies>
<build>
<finalName>strutsmaven</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>
4.1 struts.xml
核心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>
4.2 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>
<!-- 开启开发者模式
struts.devMode该属性设置Struts 2应用是否使用开发模式。
如果设置该属性为true,则可以在应用出错时显示更多、更友好的出错提示。
该属性只接受true和flase两个值,该属性的默认值是false。
通常,应用在开发阶段,将该属性设置为true,当进入产品发布阶段后,则该属性设置为false。
-->
<constant name="struts.devMode" value="true"></constant>
<!-- 开启自动加载配置文件
struts.configuration.xml.reload该属性设置当struts.xml文件改变后,
系统是否自动重新加载该文件。该属性的默认值是false。
-->
<constant name="struts.configuration.xml.reload" value="true"></constant>
<!-- 代表包 name=包名称
extends:继承
abstract:是否抽象类
namespace
-->
<package name="struts-base" extends="struts-default" abstract="true">
</package>
</struts>
4.3 struts-login.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>
<package name="struts-login" extends="struts-base">
<!-- *代表方法名,method="{1}"代表name="helloAction_*"中的*,也就是方法名 -->
<action name="userAction" method="submission" class="com.tanle.web.UserStruts" >
<!--
name:代表result名称,与action中的返回值对应
type:代表result类型,转发或重定向。默认转发(dispatcher)
-->
<result name="index">/index.jsp</result>
<result name="login" type="redirect">/login.jsp</result>
</action>
</package>
</struts>
4.4 web.xml
<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.tanle.util.EncodingFiter</filter-class>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!-- struts2中央控制器 -->
<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>
5.测试代码块与方法
5.1页面代码块
<%@ 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>登录</title>
</head>
<body>
<form action="userAction.action" method="post">
用户名:<input type="text" name="username"/></br>
密码:<input type="password" name="password"/></br>
<input type="submit" value="登录"/>
</form>
</body>
</html>
5.2 实体类(反射赋值)
package com.tanle.entity;
public class User {
private String username;
private String password;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public User() {
super();
}
public User(String username, String password) {
super();
this.username = username;
this.password = password;
}
@Override
public String toString() {
return "User [username=" + username + ", password=" + password + "]";
}
}
5.3 web层action
package com.tanle.web;
import java.io.IOException;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts2.ServletActionContext;
import org.apache.struts2.interceptor.ServletRequestAware;
import org.apache.struts2.interceptor.ServletResponseAware;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ModelDriven;
import com.tanle.entity.User;
public class UserStruts implements ModelDriven<User>{
//在action中定义的属性必须定义该属性的set和get方法
/*private String username;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}*/
//注入式获取表单中的值(通过反射)
private User user=new User();
/** * 非注入式 耦合(与servlet关系紧密)
*/
private HttpServletRequest req = ServletActionContext.getRequest();
private HttpServletResponse resp=ServletActionContext.getResponse();
@Override
public User getModel() {
// TODO Auto-generated method stub
return user;
}
/** * 非注入式使用测试
* @return
* @throws IOException
*/
public String submission() throws IOException {
if("admin".equals(user.getUsername())&&"123456".equals(user.getPassword())) {
resp.getWriter().print("<script>alert('登录成功');</script>");
req.setAttribute("username", user.getUsername());
return "index";
}else {
resp.getWriter().print("<script>alert('账户或者用户名不正确');</script>");
return "login";
}
}
/** * 非注入的解耦方式
*/
/*public String submission() throws IOException {
ActionContext context = ActionContext.getContext();
Map<String, Object> contextMap = context.getContextMap();
if("admin".equals(user.getUsername())&&"123456".equals(user.getPassword())) {
contextMap.put("username", user.getUsername());
return "index";
}else {
return "login";
}
}*/
/** * 注入式耦合测试 在类中实现了ServletRequestAware,ServletResponseAware
*/
/*public String submission() throws IOException {
if("admin".equals(user.getUsername())&&"123456".equals(user.getPassword())) {
resp.getWriter().print("<script>alert('登录成功');</script>");
req.setAttribute(arg0, arg1);
return "index";
}else {
resp.getWriter().print("<script>alert('账户或者用户名不正确');</script>");
return "login";
}
}*/
//注入式耦合测试 在类中实现了ServletRequestAware,ServletResponseAware
//已经自己定义好了
/*@Override
public void setServletResponse(HttpServletResponse respone) {
this.resp=respone;
}
@Override
public void setServletRequest(HttpServletRequest request) {
this.req=request;
}*/
}
5.4 测试结果


6. 总结
通过指定坐标位置进行删除操作 ( jar无法获取 ,建议手动完成操作)
修改pom文件后出现配置信息未正确应用提示 ( Maven -> Update Project)
在 web 项目属性设置中缺少必要的Servlet组件,并非所有功能均支持从版本号Web 2.x升级至Web 3.x。
其中基于JDK 1.x到JDK 1.x升级的项目可能存在问题。
