【快速搭建系列】idea快速搭建struts2框架和测试

idea快速搭建struts2框架和测试示例

步骤

搭建环境

新建一个maven项目

添加maven依赖

pom.xml
<!-- ****************struts2框架包*************** -->
<!-- struts2-core -->
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-core</artifactId>
<version>2.3.33</version>
</dependency>



<!-- ****************可选*************** -->
<!-- lombok -->    
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.16.8</version>
</dependency>
<!-- jstl -->
<dependency>
<groupId>javax.servlet.jsp.jstl</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<!-- jsp-api -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jsp-api</artifactId>
<version>2.0</version>
<scope>provided</scope>
</dependency>
<!-- servlet-api -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
<scope>provided</scope>
</dependency>

然后建好java和resources根目录包

请添加图片描述

然后这个时候可以看到当右键resources根目录时多了一个Struts Config的选项

这时就可以新建一个名为struts的struts配置文件了(因为导了包)

请添加图片描述

如果之前没有在idea中用过struts2的话需要先下载插件:

idea左上角file—settings

请添加图片描述

然后左边Plugins,输入struts2,下载一下插件

请添加图片描述

在web.xml设置struts2的过滤器

web.xml
<!DOCTYPE web-app PUBLIC
 "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
 "http://java.sun.com/dtd/web-app_2_3.dtd" >

<web-app>
    <display-name>Archetype Created Web Application</display-name>

    <!-- struts2的过滤器 -->
    <filter>
        <filter-name>struts2</filter-name>
        <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>struts2</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

    <!-- 欢迎页面 -->
    <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>

</web-app>

然后创建如图项目结构

请添加图片描述

tips:因为只有struts2框架所以没办法连后端数据库,所以dao和service就这样空着了

然后先来写一个测试是否能够访问的小例子

测试

测试运行

action相当于controller

在action包下创建一个测试action

TestAction.java
package com.r.action;

/**
 * @Author Tuerlechat,
 * @Date 2022/11/8
 */
public class TestAction {
    public String execute() {
        System.out.println("TestAction类被调用了。");
        return "test";  //返回的结果
    }
}

然后在webapp中新建一个test.jsp

test.jsp
<%--
  Created by IntelliJ IDEA.
  User: Tuerlechat,
  Date: 2022/11/8
  Time: 19:27
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Test</title>
</head>
<body>
<h2>我是test页面</h2>
</body>
</html>

然后配置struts2的配置文件

struts.xml
<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE struts PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
        "http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
    <!-- package的name随便起一个就行,但唯一
    	 namespace命名空间是用来访问映射路径的根路径,可用于模块划分,比如namespace="/user",则访问路径为/user/test
    	 extends:继承的类 一般默认为"structs-default"不继承则无法使用struts核心功能 在struts-core包中  -->
    <package name="test" namespace="/" extends="struts-default">
        <!-- action的name是访问路径-->
        <action name="test"
                class="com.r.action.TestAction"
                method="execute">
            <!-- 当结果是test时转到test.jsp页面 -->
            <result name="test">/test.jsp</result>
        </action>
    </package>

</struts>

这时候可能会爆红,但不需要管

然后部署tomcat,运行

运行结果

请添加图片描述

控制台显示

请添加图片描述

可以看到控制台显示的时候说明成功访问了test路径,也就是成功进入到了TestAction这个类中的方法

说明搭建struts2框架环境成功

登录小例子
HelloStrutsAction.java
package com.r.action;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
import com.r.model.User;
import lombok.Getter;
import lombok.Setter;

import java.util.Map;

/**
 * @Author Tuerlechat,
 * @Date 2022/11/8
 */
@Getter
@Setter
public class HelloStrutsAction extends ActionSupport {

    private User user;

    @Override
    public String execute() throws Exception {
        System.out.println("用户名:" + user.getUserName());
        System.out.println("密码:" + user.getPassword());

        if ("admin".equals(user.getUserName()) && "1234567".equals(user.getPassword())) {
            // 将user对象保存在session中
            Map<String, Object> session = null;
            session = ActionContext.getContext().getSession();
            session.put("user_session", user);
            return "success";
        } else {
            return "fail";
        }
    }

}

实体类

User.java
package com.r.model;

import lombok.Data;

@Data
public class User {
    private String userName;
    private String password;

}

前端页面

login.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
	<title>登录</title>
</head>

<body>
<form action="hello.action" method="post">
	用户名:<input type="text" name="user.userName" /><br />
	密&nbsp;码:<input type="password" name="user.password" /><br />
	<input type="submit" />
</form>
</body>
</html>
success.jsp
<%@ page contentType="text/html;charset=UTF-8"  isELIgnored="false" language="java" %>
<html>
<head>
    <title>登录成功</title>
</head>

<body>
欢迎您,${sessionScope.get("user_session").userName}
</body>
</html>
fail.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
  <title>登录失败</title>
</head>

<body>
用户名或密码不匹配。
</body>
</html>

struts2配置文件

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

<!-- 关闭测试环境 -->
<!--<constant name="struts.devMode" value="false" />-->
<!-- 做动态action处理配置 -->
<!--<constant name="struts.enable.DynamicMethodInvocation" value="true"></constant>-->

    <package name="helloworld" namespace="/" extends="struts-default">

      <action name="hello" 
            class="com.r.action.HelloStrutsAction"
            method="execute">
            <result name="success">/success.jsp</result>
            <result name="fail">/fail.jsp</result>
      </action>
      <action name="test"
            class="com.r.action.TestAction"
            method="execute">
            <result name="test">/test.jsp</result>
      </action>
   </package>
</struts>
运行结果

登录页面

请添加图片描述

登录成功

请添加图片描述

登录失败

请添加图片描述

问题

开启服务器即开启无限404报错循环模式

无论是action,jsp,html什么都不行

全部404,而且后端不报错

解决方法

说明是项目结构有问题

具体原因不清楚

点击idea左面file下的Project Structure

请添加图片描述

然后点击Facets,添加Struts2

请添加图片描述

然后ok

请添加图片描述

然后按图步骤添加

请添加图片描述

请添加图片描述

请添加图片描述

这两个项目结构配置,添加删除,然后tomcat也重新配置一下,无限循环到好了为止(一般是重新改一次就好了)

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Tuerlechat,

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值