struts2开发流程及详细配置

Struts2开发流程及详细配置

简介

Struts2是一种基于MVC设计模式的web框架,它是从Struts1框架升级而来。与Struts1相比,Struts2更加灵活、可扩展和易于使用。Struts2的开发流程涉及到安装、配置和实现。该攻略旨在帮助开发者了解Struts2框架的开发流程及详细配置。

开发流程

下面是Struts2的基本开发流程:

  1. 确认开发环境:开发者需要安装JDK、Tomcat和Eclipse。

  2. 创建一个Struts2项目:通过Eclipse新建一个Web项目,在项目中导入Struts2包。

  3. 配置Struts2框架:在项目根目录下创建struts.xml文件,配置该文件以定义应用程序的基础架构,包括拦截器、动作映射和结果。

  4. 创建动作类:创建动作类,在该类中实现从页面传递的数据并与业务逻辑进行交互,最终生成结果,可以通过在动作类中定义setter和getter方法以获取或设置数据值。

  5. 创建视图:开发者需要为应用程序定义一个视图或一组视图来呈现结果,这一步需要创建相应的JSP页面。

  6. 配置访问页面:在struts.xml文件中配置相应的动作映射,将请求映射到具体的动作类及其方法。

  7. 运行应用程序:在启动Tomcat服务器之前,开发者需要通过配置web.xml文件将Struts2作为Web项目的默认Servlet,这样Tomcat服务器才能将请求转发给Struts2框架进行处理。

详细配置

配置Struts2框架

在src目录下新建struts.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>
  <constant name="struts.action.extension" value="html"/>
  <constant name="struts.devMode" value="true"/>

  <!-- 定义interceptor -->
  <interceptors>
    <interceptor name="myInterceptor" class="com.example.MyInterceptor"></interceptor>
  </interceptors>

  <!-- 定义action映射 -->
  <action name="hello" class="com.example.HelloAction">
    <interceptor-ref name="myInterceptor"/>
    <result name="success">/hello.jsp</result>
  </action>

</struts>

该文件中包含了以下配置信息:

  1. 声明默认扩展名,这里为.html。

  2. 声明是否处于开发模式,默认为false,开发者可以在开发阶段设置为true开启调试模式。

  3. 配置拦截器,声明了名称为myInterceptor的拦截器。

  4. 定义动作映射,名称为Hello,将请求映射到HelloAction动作类中的方法。

其中,HelloAction类和MyInterceptor类均需要开发者自行创建。

创建动作类

动作类是Struts2应用程序中的核心组件之一,它处理与业务逻辑相关的操作并响应请求。下面是一个简单的HelloAction示例:

package com.example;

public class HelloAction{
    private String message;   // 定义message变量

    public String execute()throws Exception{
        message="Hello world";   // 对message进行值的赋值

        return "success";    // 返回结果名
    }

    public String getMessage(){
        return message;   // 返回message变量
    }

    public void setMessage(String message){
        this.message = message;   // 设置message变量
    }
}

通过以上代码,我们可以创建一个执行Hello world字符串输出的操作。

创建视图

开发者需要为应用程序定义一个视图或一组视图来呈现结果,这一步需要创建相应的JSP页面。下面是一个简单的hello.jsp示例:

<%-- hello.jsp --%>
<html>
<head>
  <title>Hello page</title>
</head>
<body>
  ${message}
</body>
</html>

在hello.jsp中定义了一个message变量,它将被动态输出到页面上。

配置动作映射

在struts.xml文件中添加如下代码,将请求映射到HelloAction类及其方法:

<action name="hello" class="com.example.HelloAction">
  <result name="success">/hello.jsp</result>
</action>

示例

示例一:Hello World

下面是一个简单Hello World的示例实现:

  1. 安装JDK、Tomcat和Eclipse。

  2. 使用Eclipse新建一个Web项目,并导入Struts2包。

  3. 在该项目的src目录下新建HelloAction类,代码如下:

package com.example;

public class HelloAction{
    private String message;
    public String execute()throws Exception{
        message="Hello world";
        return "success";
    }
    public String getMessage(){
        return message;
    }
    public void setMessage(String message){
        this.message = message;
    }
}
  1. 在该项目的WebContent目录下新建hello.jsp页面,代码如下:
<%-- hello.jsp --%>
<html>
<head>
  <title>Hello page</title>
</head>
<body>
  ${message}
</body>
</html>
  1. 在src目录下新建struts.xml文件,配置动作映射,代码如下:
<action name="hello" class="com.example.HelloAction">
  <result name="success">/hello.jsp</result>
</action>

该配置将请求映射到HelloAction类及其方法,并使用hello.jsp页面展示结果。

示例二:表单验证

下面是一个表单验证的示例实现:

  1. 安装JDK、Tomcat和Eclipse。

  2. 使用Eclipse新建一个Web项目,并导入Struts2包。

  3. 在该项目的src目录下新建Person类,代码如下:

package com.example;

import java.util.Date;

public class Person {
    private String name;
    private Integer age;
    private Date birthday;
    private String email;
    // 这里省略getter和setter方法
}
  1. 在该项目的src目录下新建RegisterAction类,代码如下:
package com.example;

import com.opensymphony.xwork2.ActionSupport;
import java.util.Date;

public class RegisterAction extends ActionSupport{
    private Person person;

    public String execute() throws Exception{
        // 业务逻辑处理
    }

    public Person getPerson(){
        return person;
    }
    public void setPerson(Person person){
        this.person = person;
    }

    // 验证表单输入参数
    public void validate(){
        if(getPerson()!=null && person.getAge()< 0){
            addFieldError("person.age","年龄输入不正确!");
        }
        if(getPerson()!=null && person.getBirthday()==null){
            addFieldError("person.birthday","生日不能为空!");
        }
        if(getPerson()!=null && person.getName()==null || "".equals(person.getName().trim())){
            addFieldError("person.name","姓名不能为空!");
        }
        if(getPerson()!=null && person.getEmail()==null || "".equals(person.getEmail().trim())){
            addFieldError("person.email","邮箱不能为空!");
        }
    }
}
  1. 在该项目的WebContent目录下新建register.jsp页面,并添加表单验证,代码如下:
<%-- register.jsp --%>
<html>
<head>
  <title>Register page</title>
</head>
<body>
  <s:form action="register">
    <s:textfield name="person.name" label="姓名"></s:textfield>
    <s:textfield name="person.age" label="年龄"></s:textfield>
    <s:textfield name="person.birthday" label="生日"/>
    <s:textfield name="person.email" label="邮箱"></s:textfield>
    <s:submit value="提交"/>
  </s:form>
</body>
</html>
  1. 在src目录下新建struts.xml文件,配置动作映射,代码如下:
<action name="register" class="com.example.RegisterAction">
  <result name="input">/register.jsp</result>
  <result name="success">/success.jsp</result>
</action>

该配置将请求映射到RegisterAction类及其方法,并在该类中添加了表单验证,将错误信息显示在页面上。

结论

以上就是Struts2的开发流程及详细配置的完整攻略,希望对您有所帮助。注意,这只是一个简单的Struts2示例,实际应用中可能需要更复杂的代码和配置。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:struts2开发流程及详细配置 - Python技术站

(0)
上一篇 2023年5月20日
下一篇 2023年5月20日

相关文章

  • Mybatis下动态sql中##和$$的区别讲解

    针对”Mybatis下动态sql中##和$$的区别讲解”这个问题,下面是完整的攻略: 1. ##和$$的基本区别 1.1 ##和$$分别代表什么 Mybatis中的#{}和${}都是用来表示动态sql的。其中,#{}叫做“预编译”。#{}可以防止SQL注入攻击,是使用Mybatis的推荐方式。 在#{}中使用的参数会被自动进行占位符处理,不需要手动添加占位符…

    Java 2023年5月19日
    00
  • java文件操作之Path,Paths,Files

    Java文件操作之Path、Paths、Files Java中的Path、Paths和Files是比较常用的文件操作类,提供了丰富的API用于文件的读写、复制、移动、删除等操作。 Path Path是java.nio包中的一个接口,代表一个文件系统中的路径。在创建一个Path对象时,可以向它传递一个字符串表示路径,这个字符串中可以使用反斜杠也可以使用正斜杠作…

    Java 2023年5月19日
    00
  • 使用spring boot 整合kafka,延迟启动消费者

    下面是使用Spring Boot整合Kafka,延迟启动消费者的详细攻略,由以下步骤组成: 添加Kafka依赖 在Spring Boot项目中,需要在pom.xml文件中添加Kafka的依赖,可以通过以下方式添加: <dependency> <groupId>org.springframework.kafka</groupId&…

    Java 2023年5月20日
    00
  • Java实现JDBC连接数据库简单案例

    下面我将详细讲解Java实现JDBC连接数据库简单案例的完整攻略。 第一步:导入JDBC驱动 JDBC驱动包可以从官网下载,下载完成后需要将其导入到项目中。导入方式有两种,分别是将其放入CLASSPATH中或者将其直接加入项目中,本文采用第二种方式。 第二步:建立数据库连接 在Java中使用JDBC驱动连接数据库,需要调用驱动程序提供的DriverManag…

    Java 2023年5月19日
    00
  • 基于php缓存的详解

    下面是基于PHP缓存的完整攻略: 什么是PHP缓存? PHP缓存是一种将PHP脚本解释成二进制代码并缓存在内存或者硬盘中,以便下次直接使用缓存结果的机制。由于PHP代码的解析、编译和执行比较耗时,所以使用缓存机制可以大大提高PHP程序的运行效率和响应速度。 常用的PHP缓存方式 1. APC缓存 APC(Alternative PHP Cache)是PHP官…

    Java 2023年6月16日
    00
  • jsp实现购物程序

    在这里我将会为你详细讲解“JSP实现购物程序”的完整攻略。整个攻略包含以下步骤: 数据库设计与创建 创建JavaBean封装商品信息 创建购物车类 编写购物车的相关业务处理代码 编写JSP页面实现购物功能 下面我将会逐一为你详细说明每一步。 1. 数据库设计与创建 首先需要设计并创建一个商品信息的数据库表。一般情况下,商品信息表包含商品ID、名称、价格等基本…

    Java 2023年6月15日
    00
  • 什么是程序计数器?

    程序计数器(Program Counter Register)是一种用于存储当前线程正在执行的指令地址的内存区域。程序计数器是线程私有的,每个线程都有自己程序计数器。在 Java 虚拟机中,程序计数器一种较小的内存区域,其通常为几个字节。 程序计数器的主要作用是记录当前线程正在执行的指令地址,以便在发生线程切换时能够恢复执行。在 Java 虚拟机中,线程切换…

    Java 2023年5月12日
    00
  • 解决JSP开发中Web程序显示中文三种方法

    讲解“解决JSP开发中Web程序显示中文三种方法”的完整攻略,包含以下内容: 问题描述 在JSP开发过程中,遇到中文输出乱码的情况较常见。所以,有必要了解如何解决JSP开发中Web程序显示中文的问题。 解决方法 解决Web程序中显示中文的问题有多种方法,一般来说可以采用以下三种: 方法一:使用response.setContentType()方法设定字符编码…

    Java 2023年6月15日
    00
合作推广
合作推广
分享本页
返回顶部