Advertisement

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下载使用

下载maven安装包,解压即可使用(3.6.0)

在这里插入图片描述

解压完就长这样

在这里插入图片描述

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升级的项目可能存在问题。

全部评论 (0)

还没有任何评论哟~