Java Struts2 框架入门详解(三)简单的实例

限时加码!20+主流AI编程工具免费用 购周边加赠Coding Plan Lite,Claude Code、Cursor等即刻畅享,学习进阶更高效! 阅读详情

使用 Struts 时,此框架将为您提供一个控制器 Servlet (ActionServlet),它在 IDE 中包含的 Struts 库中定义,并自动在 web.xml 部署描述符中注册,如下所示。该控制器 Servlet 使用 struts-config.xml 文件将传入请求映射到 Struts Action 对象,并实例化与暂时存储窗体数据的操作相关联的任何 ActionForm 对象。Action 对象在使用窗体 Bean 中存储的任何数据的同时,使用其 execute 方法处理请求。一旦 Action 对象处理了请求,它就将存储任何新数据(即,存储在窗体 Bean 或单独的结果 Bean 中),并将结果转发到相应的视图中。

Struts 工作流

在 NetBeans IDE 中开发 Struts 应用程序与开发任何其他类型的 Web 应用程序类似。但是,您要使用 IDE 提供的 Struts 支持来补充 Web 开发工具包。例如,在 IDE 中使用模板创建 Struts Action 对象和 ActionForm Bean。创建后,IDE 会自动在 struts-config.xml 文件中注册这些类,并让您使用源代码编辑器右键单击菜单中的菜单项非常轻松地扩展此文件。由于许多 Web 应用程序将 JSP 页用于视图,因此 Struts 还提供了定制标记库,以便于与 HTML 窗体进行交互。在 IDE 的源代码编辑器中,您可以调用代码完成功能和 Javadoc 支持,以帮助有效地使用这些库。

以下步骤说明了如何创建收集用户数据的简单窗体、执行简单验证以及在成功页上输出数据。

设置 Struts 应用程序

在 IDE 中,Struts 只是一个附带 Struts 库和配置文件的普通 Web 应用程序。在 IDE 中,您可以像创建其他任何 Web 应用程序那样,使用新建 Web 应用程序向导创建 Struts 应用程序,此外,还需要一个表明希望将 Struts 库和配置文件包含在应用程序中的步骤。

  1. 从主菜单中,选择 "File"(文件)> "New Project"(新建项目)(Ctrl-Shift-N 组合键;在 Mac 上为 ⌘-Shift-N 组合键)。在 "Categories"(类别)列表中选择 "Java Web",然后在 "Projects"(项目)列表中选择 "Web Application"(Web 应用程序)。单击 "Next"(下一步)。
  2. 在 "Name and Location"(名称和位置)面板中,输入 MyStrutsApp 作为项目名称,然后单击 "Next"(下一步)。
  3. 在 "Server and Settings"(服务器和设置)面板中,选择您要将应用程序部署到的服务器。这里仅列出了已在 IDE 中注册的服务器。(要注册服务器,请单击 "Server"(服务器)下拉列表旁边的 "Add"(添加)。)另请注意,所部署应用程序的上下文路径是 /MyStrutsApp。单击 "Next"(下一步)。
  4. 在 "Frameworks"(框架)面板中选择 "Struts"。
    显示在新建 Web 应用程序向导的 "Frameworks"(框架)面板中的 Struts 选项

    出于本教程的目的,请勿更改此面板下部区域中的任何配置值。向导会显示以下配置选项。

    • Action Servlet Name(操作 Servlet 名称):应用程序中使用的 Struts 操作 Servlet 的名称。web.xml 部署描述符包含操作 Servlet 条目,并指定相应的特定于 Struts 的参数(如 Struts 库中 Servlet 类的路径,以及应用程序中 struts-config.xml 配置文件的路径)。
    • Action URL Pattern(操作 URL 模式):指定映射到 Struts 操作控制器的传入请求模式。这会在部署描述符中生成一个映射条目。默认情况下,只映射 *.do 模式。
    • Application Resource(应用程序资源):用于指定将在 struts-config.xml 文件中用来本地化消息的资源包。默认情况下,它是 com.myapp.struts.ApplicationResource
    • Add Struts TLDs(添加 Struts TLD):用于生成 Struts 标记库的标记库描述符。标记库描述符是一个 XML 文档,其中包括有关整个标记库以及每个单独标记的附加信息。通常,此操作是不必要的,因为您可以参阅联机 URI,而不是本地 TLD 文件。
  5. 单击 "Finish"(完成)。IDE 将在您的文件系统中创建项目文件夹。与 IDE 中的任何 Web 应用程序一样,此项目文件夹中包含所有的源代码和 IDE 的项目元数据(如 Ant 构建脚本)。但是除此之外,您的 Web 应用程序在其类路径上还具有所有的 Struts 库。这些 Struts 库不仅位于应用程序的类路径上,而且还包含在项目中,并且在稍后构建项目时将与项目打包在一起。

此项目在 IDE 中打开。"Projects"(项目)窗口是项目源的主入口点。它显示重要项目内容的逻辑视图。例如,如果展开新项目中的若干节点,则项目可能显示如下:

包含新创建的项目的 "Projects"(项目)窗口

注:使用 "Files"(文件)窗口("Window"(窗口)> Files"(文件))可以通过基于目录的视图来查看所有项目内容。

特定于 Struts 的配置文件以及应用程序的部署描述符就放置在 "Configuration Files"(配置文件)文件夹中。打开部署描述符(双击 web.xml 文件节点使其显示在源代码编辑器中)。为了进行 Struts 处理,为 Struts 控制器 Servlet 提供了一个映射。

<servlet>
    <servlet-name>action</servlet-name>
    <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
    <init-param>
        <param-name>config</param-name>
        <param-value>/WEB-INF/struts-config.xml</param-value>
    </init-param>
    <init-param>
        <param-name>debug</param-name>
        <param-value>2</param-value>
    </init-param>
    <init-param>
       <param-name>detail</param-name>
       <param-value>2</param-value>
    </init-param>
    <load-on-startup>2</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>action</servlet-name>
    <url-pattern>*.do</url-pattern>
</servlet-mapping>

在以上代码中,Struts 控制器 Servlet 名为 action,并在 Struts 库 (org.apache.struts.action.ActionServlet) 中定义。将其设置为处理所有满足 *.do映射的请求。此外,Servlet 的初始化参数通过 struts-config.xml 文件指定,同时包含在 WEB-INF 文件夹中。

创建 JSP 页

首先为应用程序创建两个 JSP 页。第一个页面中显示一个窗体。第二个页面是登录成功时返回的视图。

创建登录页

  1. 右键单击 MyStrutsApp 项目节点,选择 "New"(新建)> "JSP",然后将新文件命名为 login。单击 "Finish"(完成)。此时将在源代码编辑器中打开 login.jsp 文件。
  2. 在源代码编辑器中,将 <title> 和 <h1> 标记(或 <h2> 标记,取决于您使用的 IDE 版本)的内容更改为 Login Form
  3. 将以下两个 taglib 指令添加到文件顶部:
    <%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean" %>
    <%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %>

    许多 Web 应用程序将 JSP 页用于 MVC 范例中的视图,因此 Struts 提供定制标记库,以便于与 HTML 窗体进行交互。通过使用 IDE 的代码完成支持,这些库可以轻松地应用到 JSP 文件。在源代码编辑器中键入代码时,IDE 会提供 Struts 标记的代码完成以及 Struts Javadoc。您还可以通过按 Ctrl-空格键,手动调用代码完成功能:

    源代码编辑器中提供的 Struts 标记的代码完成和 Javadoc

    Bean 标记库为您提供了大量标记,在将窗体 Bean(即 ActionForm Bean)与从窗体中收集的数据关联时,这些标记非常有用。html 标记库在视图和 Web 应用程序所必需的其他组件之间提供了一个接口。例如,下面您将使用 Struts 的 <html:form> 标记替换常用的 html form 标记。这样做的一个好处是使服务器查找或创建一个 Bean 对象,该对象对应于为 html:form 的 action 元素提供的值。

  4. 在 <h1>(或 <h2>)标记下,添加以下代码:
    <html:form action="/login">
    
       <html:submit value="Login" />
    
    </html:form>

    无论何时在源代码编辑器中完成键入,都可以通过右键单击并选择 "Format"(格式化)(Alt-Shift-F 组合键)来整理代码。

  5. 在 IDE 右侧区域的组件面板("Window"(窗口)> "Palette"(组件面板))中,将 "Table"(表)项从 "HTML" 类别拖动至 <html:submit value="Login" /> 行上方的某个位置。将显示 "Insert Table"(插入表格)对话框。将行设置为 3,列设置为 2,其他所有设置都保留为 0。在本教程中,稍后您将附加样式表来影响表的显示。
    源代码编辑器中显示的 "Create Table"(创建表)对话框 
    单击 "OK"(确定),然后可以选择重新设置代码格式(Alt-Shift-F 组合键)。现在,login.jsp 中的窗体显示如下:
    <html:form action="/login">
        <table border="0">
            <thead>
                <tr>
                    <th></th>
                    <th></th>
                </tr>
            </thead>
            <tbody>
                <tr>
                    <td></td>
                    <td></td>
                </tr>
                <tr>
                    <td></td>
                    <td></td>
                </tr>
                <tr>
                    <td></td>
                    <td></td>
                </tr>
            </tbody>
        </table>
    
        <html:submit value="Login" />
    
    </html:form>

    注:可以安全地删除 <thead> 表行,因为它不会在本教程中使用。

  6. 在第一个表行中,输入以下内容(更改的内容以粗体显示):
    <tr>
        <td>Enter your name:</td>
        <td><html:text property="name" /></td>
    </tr>
  7. 在第二个表行中,输入以下内容(更改的内容以粗体显示):
    <tr>
        <td>Enter your email:</td>
        <td><html:text property="email" /></td>
    </tr>
    通过 html:text 元素,您可以将此窗体中的输入字段与下一步中将创建的窗体 Bean 中的属性相匹配。例如,property 的值必须与此窗体关联的窗体 Bean 中声明的字段相匹配。
  8. 将 <html:submit value="Login" /> 元素移动到第三个表行的第二列,以便第三个表行如下所示(更改的内容以粗体显示):
    <tr>
        <td></td>
        <td><html:submit value="Login" /></td>
    </tr>

在此阶段,您的登录窗体会显示如下:

<html:form action="/login">
    <table border="0">
        <tbody>
            <tr>
                <td>Enter your name:</td>
                <td><html:text property="name" /></td>
            </tr>
            <tr>
                <td>Enter your email:</td>
                <td><html:text property="email" /></td>
            </tr>
            <tr>
                <td></td>
                <td><html:submit value="Login" /></td>
            </tr>
        </tbody>
    </table>
</html:form>

创建成功页

  1. 右键单击 MyStrutsApp 项目节点,选择 "New"(新建)> "JSP",然后将新文件命名为 success。在 "Folder"(文件夹)字段中,单击邻近的 "Browse"(浏览)按钮,然后从显示的对话框中选择 WEB-INF。单击 "Select Folder"(选择文件夹)以在 "Folder"(文件夹)字段中输入 WEB-INF。客户端请求不能直接访问 WEB-INF 文件夹中包含的任何文件。为了能够正常显示 success.jsp,它必须包含处理过的数据。单击 "Finish"(完成)。
  2. 在源代码编辑器中,将新创建页面中的内容更改为以下内容:
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>Login Success</title>
    </head>
    <body>
        <h1>Congratulations!</h1>
    
        <p>You have successfully logged in.</p>
    
        <p>Your name is: .</p>
    
        <p>Your email address is: .</p>
    </body>
  3. 将 Bean 标记库指令添加到文件顶部:
    <%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean" %>
    
  4. 添加以下 <bean:write> 标记(更改的内容以粗体显示):
    <p>Your name is: <bean:write name="LoginForm" property="name" />.</p>
    
    <p>Your email address is: <bean:write name="LoginForm" property="email" />.</p>
    
    通过使用 <bean:write> 标记,您可以利用 Bean 标记库来定位要创建的 ActionForm Bean,并显示为 name 和 email 保存的用户数据。

创建 ActionForm Bean

Struts ActionForm Bean 用于保留请求之间的数据。例如,如果用户提交一个窗体,则数据会暂时存储在窗体 Bean 中,以便它可以重新显示在窗体页面中(如果数据的格式无效或登录失败),或者显示在登录成功页中(如果数据通过验证)。

  1. 右键单击 MyStrutsApp 项目节点,然后选择 "New"(新建)> "Other"(其他)。在 "Categories"(类别)下选择 "Struts",然后在 "File Types"(文件类型)下选择 "Struts ActionForm Bean"。单击 "Next"(下一步)。
  2. 为 "Class Name"(类名)键入 LoginForm。然后在 "Package"(包)下拉列表中选择 com.myapp.struts 并单击 "Finish"(完成)。

    IDE 将创建 LoginForm Bean,并在源代码编辑器中将其打开。默认情况下,IDE 为它提供了一个名为 name 的 String,以及名为 number 的 int。这两个字段都具有为其定义的存取方法。而且,IDE 会将一个 Bean 声明添加到 struts-config.xml 文件中。如果您在源代码编辑器中打开 struts-config.xml 文件,将看到以下声明(由向导添加):

    <form-beans>
        <form-bean name="LoginForm" type="com.myapp.struts.LoginForm" />
    </form-beans>
    

    IDE 在 struts-config.xml 文件中提供导航支持。按住 Ctrl 键并将鼠标悬停在 LoginForm Bean 的全限定类名上。此名称将变为一个链接,使您能够直接导航至源代码编辑器中的该类:

    Struts 配置文件中显示的导航支持
  3. 在源代码编辑器中的 LoginForm Bean 中,创建字段以及随附的存取方法,这些方法与 login.jsp 中创建的 name 和 email 文本输入字段相对应。由于已在 LoginForm 框架中创建 name,因此只需要实现 email

    将以下声明添加到 name 下(更改的内容以粗体显示):

    private String name;
    private String email;

    要创建存取方法,请将光标放在 email 上,然后按 Alt-Insert 组合键。

    源代码编辑器中显示的 "Insert Code"(插入代码)菜单

    选择 "Getter and Setter"(getter 和 setter),然后在显示的对话框中选择 email : String 并单击 "Generate"(生成)。将生成 email 字段的存取方法。

    注:可以删除 number 的声明和存取方法,因为它不会在本教程中使用。

创建 Action 类

Action 类包含应用程序中的业务逻辑。收到窗体数据后,将由 Action 对象的 execute 方法处理数据,并确定处理过的数据要转发到的视图。由于 Action 类是组成 Struts 框架的必要部分,因此 NetBeans IDE 为您提供了一个向导。

  1. 在 "Projects"(项目)窗口中,右键单击 MyStrutsApp 项目节点,然后选择 "New"(新建)> "Other"(其他)。从 "Struts" 类别中,选择 "Struts Action"(Struts 操作),然后单击 "Next"(下一步)。
  2. 在 "Name and Location"(名称和位置)面板中,将名称更改为 LoginAction
  3. 在 "Package"(包)下拉列表中选择 com.myapp.struts
  4. 在 "Action Path"(操作路径)中键入 /login。该值必须与为 login.jsp 中 <html:form> 标记的 action 属性所设置的值相匹配。请确保设置与以下屏幕快照中显示的一样,然后单击 "Next"(下一步)。 
    新建 Struts 操作向导
  5. 在此向导的第三步中,可以选择将 Action 类与窗体 Bean 相关联。请注意,以前创建的 LoginForm Bean 作为“ActionForm Bean 名称”的一个选项列出。对面板进行以下调整:
    • 删除 "Input Resource"(输入资源)字段的正斜杠
    • 将 "Scope"(范围)设置为 "Request"(请求)(在 Struts 中,"Session"(会话)是默认范围设置。)
    • 取消选择 "Validate ActionForm Bean"(验证 ActionForm Bean)选项
    单击 "Finish"(完成)。将生成 LoginAction 类并在源代码编辑器中打开文件。另请注意,以下 action 条目将添加到 struts-config.xml 文件:
    <action-mappings>
        <action name="LoginForm" path="/login" scope="request" type="com.myapp.struts.LoginAction" validate="false"/>
        <action path="/Welcome" forward="/welcomeStruts.jsp"/>
    </action-mappings>
    name 和 scope 属性适用于与此操作关联的窗体 Bean。具体说来,当传入请求与 /login 相匹配时,Struts 框架就会自动实例化 LoginForm 对象,并使用请求中发送的窗体数据填充此对象。validate 的默认值设置为 true。此设置通知框架调用窗体 Bean 的 validate 方法。但是您在向导中取消选择了此选项,因为您将在下一步中手动编码简单验证,这不需要 validate 方法。

实现验证

在源代码编辑器中,浏览 LoginAction 类并查看 execute 方法:

public ActionForward execute(ActionMapping mapping, ActionForm form,
    HttpServletRequest request, HttpServletResponse response)
    throws Exception {

    return mapping.findForward(SUCCESS);
}

注意 SUCCESS 的定义(列在 LoginAction 类声明的下方):

private final static String SUCCESS = "success";

目前,mapping.findForward 方法设置为无条件地向名为 success 的输出视图转发任何请求。此设置并不是很令人满意;您希望首先对传入数据执行某种验证以确定是发送 success 视图,还是发送其他任何视图。

访问 Bean 数据并准备转发条件

  1. 在 execute 方法的主体中键入以下代码:
    // extract user data
    LoginForm formBean = (LoginForm)form;
    String name = formBean.getName();
    String email = formBean.getEmail();
    为了使用传入的窗体数据,需要使用 execute 的 ActionForm 参数,并将其强制转换为 LoginForm,然后应用先前创建的 getter 方法。
  2. 键入以下条件子句以对传入数据执行验证:
    // perform validation
    if ((name == null) ||             // name parameter does not exist
        email == null  ||             // email parameter does not exist
        name.equals("") ||            // name parameter is empty
        email.indexOf("@") == -1) {   // email lacks '@'
    
        return mapping.findForward(FAILURE);
    }
    在此阶段,execute 方法会显示如下:
    public ActionForward execute(ActionMapping mapping, ActionForm form,
            HttpServletRequest request, HttpServletResponse response)
            throws Exception {
    
        // extract user data
        LoginForm formBean = (LoginForm) form;
        String name = formBean.getName();
        String email = formBean.getEmail();
    
        // perform validation
        if ((name == null) || // name parameter does not exist
                email == null || // email parameter does not exist
                name.equals("") || // name parameter is empty
                email.indexOf("@") == -1) {   // email lacks '@'
    
            return mapping.findForward(FAILURE);
        }
    
        return mapping.findForward(SUCCESS);
    }
  3. 将 FAILURE 的声明添加到 LoginAction 类中(更改以粗体显示):
    private final static String SUCCESS = "success";
    private final static String FAILURE = "failure";
    

如果用户同时提供了 name 和 email 字段的条目,并且输入的电子邮件地址中包含“@”符号,则 execute 方法将使用以上逻辑将请求转发到 success 视图。否则,将转发 failure 视图。您可以将 failure 视图设置为指回窗体页面,允许用户再次输入格式正确的数据,详细信息请参见下面的将 forward 条目添加到 struts-config.xml

设置错误消息

如果返回登录窗体,则最好通知用户登录已失败。您可以实现此功能,方法是在窗体 bean 中添加 error 字段,并将相应的 <bean:write> 标记添加到 login.jsp 中的窗体。最后,在 Action 对象中,将错误消息设置为显示在选择了 failure 视图的事件中。

  1. 打开 LoginForm 并将 error 字段添加到类中:
    // error message
    private String error;
  2. 为 error 添加 getter 方法和 setter 方法,如上所述
  3. 修改 setter 方法使它如下所示:
    public void setError() {
        this.error =
            "<span style='color:red'>Please provide valid entries for both fields</span>";
    }
    
  4. 打开 login.jsp 并进行以下更改:
    <html:form action="/login">
        <table border="0">
            <tbody>
                <tr>
                    <td colspan="2">
                        <bean:write name="LoginForm" property="error" filter="false"/>
                        &nbsp;</td>
                </tr>
                <tr>
                    <td>Enter your name:</td>
                    <td><html:text property="name" /></td>
                </tr>
    
  5. 在 LoginAction 中,在 if 条件子句中添加一条语句,以便在转发 failure 条件之前设置错误消息(更改的内容以粗体显示):
    if ((name == null) ||             // name parameter does not exist
        email == null  ||             // email parameter does not exist
        name.equals("") ||            // name parameter is empty
        email.indexOf("@") == -1) {   // email lacks '@'
    
        formBean.setError();
        return mapping.findForward(FAILURE);
    }
    

完成的 LoginAction 类现在应该如下所示:

public class LoginAction extends org.apache.struts.action.Action {

    private final static String SUCCESS = "success";
    private final static String FAILURE = "failure";

    public ActionForward execute(ActionMapping mapping, ActionForm form,
            HttpServletRequest request, HttpServletResponse response)
            throws Exception {

        // extract user data
        LoginForm formBean = (LoginForm)form;
        String name = formBean.getName();
        String email = formBean.getEmail();

        // perform validation
        if ((name == null) ||             // name parameter does not exist
            email == null  ||             // email parameter does not exist
            name.equals("") ||            // name parameter is empty
            email.indexOf("@") == -1) {   // email lacks '@'

            formBean.setError();
            return mapping.findForward(FAILURE);
        }

        return mapping.findForward(SUCCESS);

    }
}

将 forward 条目添加到 struts-config.xml 中

为了让应用程序能够使 JSP 页与 LoginAction 的 execute 方法所返回的转发条件相匹配,您需要将 forward 条目添加到 struts-config.xml 文件中。

  1. 在源代码编辑器中打开 struts-config.xml,右键单击 LoginForm 的 action 条目中的任何位置,然后选择 "Struts" > "Add Forward"(添加转发)。 
    显示在 struts-config.xml 的右键单击菜单中的 Struts 选项
  2. 在 "Add Forward"(添加转发)对话框的 "Forward Name"(转发名称)中,键入 success。在 "Resource File"(资源文件)字段中输入 success.jsp 的路径(即 /WEB-INF/success.jsp)。此对话框现在应如下所示: 
    "Add Forward"(添加转发)对话框 
    单击 "ADD"(添加)。请注意,以下 forward 条目已添加到 struts-config.xml 中(更改的内容以粗体显示):
    <action name="LoginForm" path="/login" scope="request" type="com.myapp.struts.LoginAction" validate="false">
        <forward name="success" path="/WEB-INF/success.jsp"/>
    </action>
    
  3. 执行相同的操作以添加 failure 的转发条目。将 "Resource File"(资源文件)路径设置为 /login.jsp。以下 forward 条目将添加到 struts-config.xml(更改的内容以粗体显示):
    <forward name="success" path="/WEB-INF/success.jsp"/>
    <forward name="failure" path="/login.jsp"/>
    

配置和运行应用程序

IDE 使用 Ant 构建脚本来构建和运行 Web 应用程序。当您基于在新建项目向导中输入的选项创建项目时,IDE 会生成构建脚本。在构建并运行应用程序之前,需要将应用程序的默认入口点设置为 login.jsp。(可选)您还可以向项目中添加简单的样式表。

设置欢迎页

  1. 在 "Projects"(项目)窗口中,双击 web.xml 部署描述符。源代码编辑器顶部列出的标签为您提供了 web.xml 文件的界面。单击 "PAges"(页面)标签。在 "Welcome File"(欢迎文件)字段中,输入 login.jsp
    部署描述符界面 
    现在单击 "Source"(源)标签可查看此文件。注意 login.jsp 现在已列在 welcome-file 条目中:
    <welcome-file>login.jsp</welcome-file>
    

附加样式表

  1. 向项目中添加简单的样式表。执行此操作的一个简单方法是将此样例样式表保存到您的计算机上。复制此文件(Ctrl-C 组合键),然后在 IDE 中,选择 "Projects"(项目)窗口中的 "Web Pages"(Web 页)节点,然后按 Ctrl-V 组合键。此文件即添加到项目中。
  2. 将样式表链接到您的 JSP 页,方法是在 login.jsp 和 success.jsp 的 <head> 标记之间添加一个引用:
    <link rel="stylesheet" type="text/css" href="stylesheet.css">
    

运行应用程序

  1. 在 "Projects"(项目)窗口中,右键单击该项目节点并选择 "Run"(运行)。IDE 将构建 Web 应用程序并使用您在创建此项目时所指定的服务器对其进行部署。浏览器将打开并显示 login.jsp 页。键入一些会验证失败的数据,即将任一字段保留为空或输入缺少 "@" 符号的电子邮件地址: 
    浏览器中显示的包含样例数据的 login.jsp 

    单击 "Login" 之后,登录窗体页会重新显示,其中包含一条错误消息: 
    显示的具有错误消息的 login.jsp 

    尝试输入应该通过验证的数据。单击 "Login" 之后,您将会看到成功页: 
    显示的包含输入数据的 success.jsp
Struts2框架入门案例 Struts2 框架介绍 官网: https://struts.apache.org/ Struts2是Apache组织下一个基于MVC设计模式的Web应用框架Struts2Struts的下一代产品,是Struts1 + WebWork合并的全新框架Struts2采用拦截器Filter为核心机制,就一个开源的轻量级的,应用于表示层(Web层、View)的框架Struts2... 阅读详情

相关推荐

Java Struts框架全教程:从基础到实战

本文还有配套的精品资源,点击获取 简介:Java Struts是一个MVC框架,用于构建高效、可扩展的Web应用程序。本教程旨在帮助开发者深入了解Struts框架及其实际应用,涵盖基础概念、配置、视图层开发、模型实现、控制器编程、异常处理、国际化以及性能优化等方面。通过阅读详细指导和完成实战项目,学习者可以深入掌握Struts框架的使用,提升Web应用开发技能。 ...

weixin_32480007的博客 1820

Struts2 入门学习总结一

一、Struts2简介 Struts2是一个基于MVC设计模式的Web应用框架,它本质上相当于一个servlet,在MVC设计模式中,Struts2作为控制器(Controller)来建立模型与视图的数据交互。Struts2Struts的下一代产品,这个框架充分发挥了Struts1和WebWork这两种技术的优势,抛弃原来Struts1的缺点,使得Web开发更加容易。 struts2还有以下...

vel970912的博客 1万+

Struts2框架实现用户登录实例详解

Web开发中,用户输入验证是保证数据安全与系统稳定性的关键步骤。验证框架能够集中管理验证规则,提升开发效率,降低维护成本。Struts2框架内置了强大的验证框架,它基于XWork验证框架,通过注解或XML配置文件来定义验证规则,实现了灵活且可扩展的验证机制。在Struts2中,可以通过注解或XML文件两种方式来定义验证规则。在Action中,使用@Validate注解指定需要验证的方法,并且使用等注解在字段上定义具体的验证规则。

weixin_26907223的博客 798

ActionServlet的初始化过程

一:介绍在tomcat的启动过程中,tomcat会读取/WEB-INF/web.xml文件中的配置信息进行一些初始化的工作,而Struts的启动工作就从这里开始.web.xml文件中有如下的配置信息:actionorg.apache.struts.action.ActionServletconfig/WEB-INF/struts-config.xmldebug3

wl_ldy的专栏 3390

Java框架(二)——Structs

Structs是Java框架之一,Struts是采用JavaServlet/JavaServer Pages技术,开发Web应用程序的开放源码的Framework。采用Structs开发是基于MVC的应用框架。        首先简单再说一下MVC(Model/View/Controller):       M是指数据模型,在Structs中通常由ActionForm Bean表示

许德鹏 7008

java 大结构之Struct

java框架分别是struct,spring和Hiberate。这里我们先来看看struct。 目前,运用广泛的是struct2,及MVC框架。M是指model,V是指view,C是指controller。主要是使用一个名为FilterDispatcher的过滤器来处理客户端的请求。 其工作流程如下: 1、判断客户端是否以.action请求,如果不适,直接交由servlet引擎

github_36601823的博客 1万+

Struts2框架简单入门

Struts2入门

qq_42640067的博客 7729

java struts2 框架 入门简介

目录 一、Struts2框架执行流程 二、Struts2的快速入门 1.导入jar包 2.配置web.xml文件 3.配置struts.xml文件 4.创建Action来完成逻辑操作 Struts2配置详解 Struts2配置文件加载顺序 struts.xml文件配置介绍 package配置 action配置 result配置 扩展 常量配置 四、Struts2Action详解 Action创建方式() Action的访问方式 五、Struts2框架封装数据

whatday的专栏 2539

Struts2简单实例

本文使用Struts2演示一个最最简单的登录的实例,旨在初步了解Struts2. 首先,看一下实例的目录结构 需要引入的JAR包如下图 web.xml的内容: <web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema

梦想起飞的地方,必须用心去经营 2760

Struts2框架入门实战项目Struts2Demo详解

我不这么认为。尽管 Spring Boot 已成为主流,但在许多银行、政府、ERP 系统中,Struts2 依然是坚挺的存在。而且它的设计思想——拦截器链、POJO 开发、OGNL 绑定、配置驱动——至今仍在影响着现代框架的发展。更重要的是,理解 Struts2,就是理解 MVC 的本质。当你掌握了它的运行机制,再去学 Spring MVC 或其他框架时,你会发现:原来它们只是换了个名字,做的事情其实差不多 😄所以,别急着淘汰它。

weixin_36431145的博客 703

简单Struts2实例(入门)

   功能:本实例实现的功能是从输入界面输入用户名和密码,若用户名和密码正确转到成功界面,否则转到失败界面。   实现:   第一步:创建一个Web工程   在MyEclipse,通过菜单File->New->Web Project,在Project Name输入工程名称Strut2Travel,点解确定完成创建一个工程。   简注:MyEclipse属于一个IDE继承开发环境,可以快速的创建

hntyzgn2010的专栏 2万+

完整的struts2框架应用实例

一、有关struts的配置,上一篇文章已经介绍过了,这里不再赘述,直接进入主题;        配置网址:()

linshenshijianlu的博客 1万+

Java Struts2框架

Struts2框架Struts2框架技术Struts2框架简介Struts2的组成与工作原理搭建Struts2框架Struts框架文件目录介绍下载配置Struts2框架Struts2入门案例——基于Struts2任意两个数据的代数和Struts框架配置文件Struts框架业务控制器——ActionStruts2的OGNL表达式、标签库、国际化Struts拦截器Struts2的文件上传和下载Struts2的输入验证案例——实现客户注册 Struts2框架技术 Struts框架提供了一种基于MVC体系结构的

weixin_44949462的博客 1723

Struts2框架实践:入门到精通的小例子

本文还有配套的精品资源,点击获取 简介:Struts2是一个基于MVC模式的Java Web应用框架,本实例将深入探讨其核心特性如拦截器、国际化支持、重复登录防范、Token机制,以及与myEclipse集成、Action/Result、配置文件(struts.xml)JSP视图技术的使用。通过实践这些关键知识点,开发者将提升在构建和维护Java Web应用方面的能力。 ...

weixin_32287387的博客 1398

JAVA框架入门

写在前面: 最近接到某公司的电话面试,其中问到了JAVA框架的相关知识,发现自己对于这个方面了解实在太少,故从网上阅读了很多文章,最后将概念整理出来,从基本入门开始对JAVA框架再认识。 一、基本概念 了解框架的定位可以帮助我们更好的找到学习的切入点 1.Spring: 依赖注入(DI)又称为控制反转(IO...

一将终成 3204

Java Web SSH-Struts 2框架复习

Java Web SSH-Struts 2框架复习 一、   自定义MVC框架 1.        Struts2和MVC Struts2是一种基于MVC的Web应用框架,下面看看Struts2和MVC的关系。这里只是先讲一下Struts2是如何跟MVC对应的,其中一些名词所代表的具体功能,比如前端控制器(FilterDispatcher)、动作(Action)、结果(Result)等。

SteveJrong's Blog 1941

Java Struts2 框架入门详解(一)MVC架构详解以及Struts基本概述

Apache Struts 2 是一个简洁的,可扩展的框架,它用来创建企业级的 Java web 应用程序。框架的目的是随着时间的积累从构建,部署,维护应用程序上简化整个开发周期。Apache Struts 2 最初被称为 WebWork 2

FENG_LIN的博客 3013

struts2简单入门demo

前言: 相信大家知道Struts2也是一个mvc框架。那么接下来就不多说废话,直接开始进行简单的环境搭建,写一个demo直观一点。 一、使用idea开发工具来创建一个Struts2项目 二、将需要的jar包导入到lib中 Struts的官网点击下载下载所需jar包:此处用的是struts-2.5.20-min-lib.zip。下载完毕后,将jar包复制到lib里面。然后右键将jar包添加到库中去...

Abdullahi_kanye的博客 834

Struts2框架原理及官方示例深度解析

本文还有配套的精品资源,点击获取 简介:Struts2是一个功能强大的Java Web应用程序框架,它遵循MVC架构设计,提供了丰富的特性,包括动作调度、国际化、异常处理和插件扩展。本文将通过官方实例深入分析Struts2的核心概念和配置细节,包括 struts.xml 配置文件、ActionJSP页面、结果型和拦截器等组件的实现。掌握这些知识对于开发高...

weixin_28793831的博客 1924
上一篇: Java Struts2 框架入门详解(二)Struts的环境配置
下一篇: Java Struts2 框架表单中文乱码的解决方案
weifenglin1997
博客等级 码龄10年 387粉丝 67原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值