ideal创建Struts 2.x项目

本文介绍如何使用IDEA创建Struts2项目,并详细解析Struts2的工作原理及流程。通过一个简单的登录示例,展示了Struts2中Action、拦截器、配置文件等关键组件的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ideal创建Struts 2.x项目

一、 目录

二、 Struts 2原理

Struts 2webwork的工作方式相似,使用拦截器作为处理用户请求的控制器。在Struts 2中有一个核心控制器FilterDispatcher,相当于Struts 1.x中的ActionServlet类,负责处理用户的请求,Struts 2的工作流程如下:

 1. 客户端浏览器发送请求到服务端,以page.action页面的形式。
 2. 核心控制器FilterDispatcher接收请求后,根据后面的扩展名,来决定是否调用Action,以及调用哪个Action。
 3. 在调用Action的execute方法之前,Struts 2会调用一系列的拦截器以提供一些通用的功能,如workflow、验证或文件上传等功能。被称为拦截器链。
 4. 之后就会调用execute方法,执行用户相关操作,如数据库操作,业务处理等。
 5. 根据execute方法的返回值,会将处理结果返回到浏览器,可以是HTML页面、JSP页面、图像或其他web资源。

Struts 2原理图

Struts 2原理图

Struts 2源码

Struts 2源码:https://github.com/apache/struts


三、 ideal创建过程


下面用一个简单登陆(没有整合database)的demo简述struts 2的流程

四、 struts 2的工作流程Demo:

表现层:login.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<head>
    <title>用户登录</title>
</head>
<body>
    <s:form action="login">
        <s:textfield label="用户" name="username"/>
        <s:password label="密码" name="password"/>
        <s:submit value="登录"/>
    </s:form>
</body>
</html>

逻辑层:LoginAction.java

package main.action;

import com.opensymphony.xwork2.Action;
import com.opensymphony.xwork2.ActionContext;
import java.util.Map;
public class LoginAction implements Action{

    private String username;
    private String password;

    private static Map<String, String> users = new java.util.
    HashMap<String, String>();

    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;
    }

    static {
        users.put("bill", "123");
        users.put("wong", "123");
        users.put("song", "123");
    }

    @Override
    public String execute() throws Exception {
        try{
            // 获得ActionContext对象,可以通过该对象实例访问Servlet API
            ActionContext ctx = ActionContext.getContext();
            // 获得Map对象,可以通过用这个Map对象访问ServletContext对象
            Map application = ctx.getApplication();
            // 获得Map对象,可以用这个Map对象访问HttpSession对象
            Map session = ctx.getSession();
            // 从ServletContext对象中获得计数器变量,应用计数器
            Integer counter = (Integer) application.get("counter");
            // 将用户名保存进HttpSession对象中
            session.put("username", getUsername());
            String pw = users.get(username);

            if (pw == null){
                ctx.put("info", "该用户不存在,登录失败");
                return ERROR;
            } else {
                if (pw.equals(getPassword())){
                    if (counter == null){
                        counter = 1;
                    } else {
                        counter++;
                    }
                    application.put("counter", counter);
                    ctx.put("info", "已成功登录");
                    return SUCCESS;
                } else {
                    // 将处理结果保存在HttpServletRequest对象中
                    ctx.put("info", "该用户不存在,登录失败");
                    return ERROR;
                }
            }
        }
        catch (Exception e){
            return ERROR;
        }
    }

最重要的就是在struts.xml中配置action

<action name="login" class="main.action.LoginAction">
    <result name="success">/success.jsp</result>
    <result name="error">/error.jsp</result>
    <!--<interceptor-ref name="defaultStack"/>
    <interceptor-ref name="authorization"/>-->
</action>

显示结果的页面success.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>登陆成功</title>
</head>
<body>
    本站访问次数:${applicationScope.counter}<p/>
    用户名:${sessionScope.username}<p/>
    ${requestScope.info}
</body>
</html>
<think>好的,用户想了解如何使用IntelliJ IDEA 2024.1创建Java Web项目。我需要根据提供的引用内容来整理步骤。首先,引用[2]提到安装和配置教程,可能涉及软件的基本设置。引用[1]和[3]都提到了添加Web支持和配置Tomcat,这些是关键步骤。 第一步应该是创建项目。用户可能需要选择Java Enterprise或者普通的Java项目,然后添加Web支持。根据引用[1],在项目上右键选择Add Framework Support,然后勾选Web Application。接下来,配置Tomcat服务器,引用[3]中的servlet部署涉及Tomcat,所以需要指导用户如何添加本地Tomcat实例。创建Servlet类时,需要配置web.xml或者使用注解,引用[3]中的init方法可能涉及Servlet的生命周期,但用户可能更关注如何创建和映射Servlet。 需要检查步骤是否覆盖项目创建、添加Web支持、部署Tomcat、创建Servlet和运行测试。可能遗漏的部分是项目结构的说明,比如web目录的位置,以及如何部署到Tomcat。另外,确保步骤适用于IDEA 2024.1,引用[2]是最新版的安装配置,所以界面应该不会有太大变化。最后,要提醒用户检查依赖和SDK配置是否正确。可能还需要提到如何访问项目,比如通过浏览器输入URL。如果有常见的错误,比如404或者类找不到,可能需要简单的排错提示,但用户的问题主要是创建步骤,所以可能不需要深入。</think>### 使用 IntelliJ IDEA 2024.1 创建 Java Web 项目的步骤 #### 1. **创建项目** - 打开 IDEA 2024.1,选择 `File` → `New` → `Project`。 - 在左侧菜单中选择 `Java Enterprise`(或 `New Project` → 普通 Java 项目后续手动添加 Web 支持)。 - 确保勾选 `Web Application`(若未直接显示,可后续手动添加)[^1][^3]。 #### 2. **添加 Web 支持(若未自动生成)** - 右键项目名 → `Add Framework Support` → 勾选 `Web Application` → 确认 `Create web.xml`。 - 此时项目会生成 `web` 目录,包含 `WEB-INF` 和 `web.xml` 文件[^1]。 #### 3. **配置 Tomcat 服务器** - 点击右上角 `Add Configuration` → `+` → 选择 `Tomcat Server` → `Local`。 - 在 `Deployment` 标签页中,点击 `+` → `Artifact` → 选择项目的 war 包。 - 确保 `Application context` 设置正确(例如 `/demo`)。 #### 4. **创建 Servlet 类** - 在 `src` 目录下新建包(如 `com.example`),右键包 → `New` → `Servlet`。 - 输入类名(如 `HelloServlet`),IDEA 会自动生成 `doGet`/`doPost` 方法。 - 在 `web.xml` 中添加 Servlet 映射(或使用 `@WebServlet` 注解)[^3]。 #### 5. **编写测试代码并运行** ```java @WebServlet("/hello") public class HelloServlet extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException { response.getWriter().write("Hello, JavaWeb!"); } } ``` - 点击工具栏中的 `Run` 按钮启动 Tomcat,浏览器访问 `http://localhost:8080/项目名/hello`。 #### 6. **验证项目结构** - 最终目录结构应包含: ``` src/ web/ WEB-INF/ web.xml index.jsp out/ (编译输出目录) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值