选择spring和struts,注意版本,不同的struts版本,过滤器的位置不一样

选择存放位置,并点击完成创建项目,在创建过程中会自动下载相关jar

初始化完成后的目录结构为

修复生成的web.xml文件

1.检查生成的struts2过滤器和选择的版本是否一致(现在我的是不匹配的需要修改StrutsPrepareAndExecuteFilter的位置)

2.spring的监听器ContextLoaderListener,因为没有生成spring-web-4.3.18.RELEASE.jar,所有要下载spring-web-4.3.18.RELEASE.jar,spring框架下载地址https://repo.spring.io/release/org/springframework/spring/

新的web.xml文件为:

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <display-name>struts2</display-name>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list> <listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener> <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>
</web-app>

现在生成的路径还没还没有生成lib里面的jar包,配置IDEA生成路径

在src目录里新建一个处理请求的action,取名叫LoginAction.java

import com.opensymphony.xwork2.ActionSupport;

/**
* @author mx
* @description: TODO
* @date 2019-06-26 10:43
*/
public class LoginAction extends ActionSupport { 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;
} @Override
public String execute() throws Exception {
if (username.equals("admin") && password.equals("123456")) {
return SUCCESS;
} else {
return LOGIN;
} }
}

增加sping容器默认的配置文件(也可以指定文件名,这里就直接使用默认的文件名)applicationContext.xml,在里面注入创建的action

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <bean id="userClass" class="LoginAction" scope="prototype"/> </beans>

在struts.xml配置struts2的映射关系

<?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="default" namespace="/" extends="struts-default">
<action name="Login" class="LoginAction">
<result name="success">/WEB-INF/jsp/success.jsp</result>
<result name="login">/index.jsp</result>
</action>
</package>
</struts>

在WEB-INF目录下面新建jsp目录,然后在创建success.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>${username}登录成功</title>
</head>
<body>
<h1>登录成功!</h1>
</body>
</html>

修改index.jsp文件

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>用户登录</title>
</head>
<body>
<h1>用户登录</h1>
<form action="Login.action" method="post">
<table>
<tr>
<td>用户名:</td>
<td><input type="text" name="username"></td>
</tr>
<tr>
<td>密码:</td>
<td><input type="password" name="password"></td>
</tr>
<tr>
<td colspan="2" style="text-align: center"><input type="submit" value="登录"></td>
</tr>
</table>
</form>
</body>
</html>

本来以为在这点就配置完成了,然后配置tomcat运行项目:

结果出现错误:

ERROR StatusLogger Log4j2 could not find a logging implementation. Please add log4j-core to the classpath. Using SimpleLogger to log to the console...
ERROR Dispatcher Dispatcher initialization failed
java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
at com.opensymphony.xwork2.inject.ContainerImpl$MethodInjector.inject(ContainerImpl.java:289)
at com.opensymphony.xwork2.inject.ContainerImpl$ConstructorInjector.construct(ContainerImpl.java:422)
at com.opensymphony.xwork2.inject.ContainerBuilder$5.create(ContainerBuilder.java:231)
at com.opensymphony.xwork2.inject.Scope$2$1.create(Scope.java:52)
at com.opensymphony.xwork2.inject.ContainerBuilder$3.create(ContainerBuilder.java:106)
at com.opensymphony.xwork2.inject.ContainerBuilder$7.call(ContainerBuilder.java:584)
at com.opensymphony.xwork2.inject.ContainerBuilder$7.call(ContainerBuilder.java:581)
at com.opensymphony.xwork2.inject.ContainerImpl.callInContext(ContainerImpl.java:560)
at com.opensymphony.xwork2.inject.ContainerBuilder.create(ContainerBuilder.java:581)
at com.opensymphony.xwork2.config.impl.DefaultConfiguration.createBootstrapContainer(DefaultConfiguration.java:287)
at com.opensymphony.xwork2.config.impl.DefaultConfiguration.reloadContainer(DefaultConfiguration.java:162)

然后查阅资料,有说,添加classpath下的目录添加一个log4j2.xml,有说映入log4j-core包的,但是最后都没有解决,最新想是不是自动stuts2包的问题,就去官网https://struts.apache.org/download.cgi下载最新的试试,下载文件

先删除原来structs2 的jar

解压下载的文件,引入新的jar

然后在运行tomcat得到正确的页面

输入正确的用户名和密码后,跳转

最新文章

  1. JavaScript-简单的贪吃蛇小游戏
  2. Cocos2d-x 版本小游戏 《是男人就下100层》 项目开源
  3. ubuntu常见问题及解决
  4. Windows内存小结
  5. 如何阻止SELECT * 语句
  6. 54B
  7. How to mount a NFS share?
  8. 起底多线程同步锁(iOS)
  9. JS获取客户端的窗口大小
  10. 记 tower.im 的一次重构
  11. HTTP工作原理
  12. JSP入门 文件上传
  13. Ubuntu 16.04 安装wine QQ
  14. Mysql之单表记录查询
  15. Shiro简介——《跟我学Shiro》
  16. BZOJ1001 洛谷4001 [BJOI2006]狼抓兔子 题解
  17. 做了5年的Android,我转Java后台了!
  18. linux安装python3+selenium
  19. Django | 模型类变更后生成迁移文件,报错:You are trying to add a non-nullable field &#39;BookName&#39; to BookInfo without a default....
  20. Angular features and services overview

热门文章

  1. Star all over again.
  2. Tableau常用函数、功能
  3. 第七次java实验报告
  4. 利用docker搭建本地私有镜像仓库
  5. 自然语言处理工具hanlp定制用户词条
  6. DBGridEh列宽自动适应内容的简单方法
  7. Navicat 连接数据库避免中文显示乱码问题解决
  8. bfs(太空电梯)
  9. CSS3鼠标滑过图片3D旋转动画
  10. IntelliJ IDEA setup JDK无效