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日

相关文章

  • java时区转换的理解及示例详解

    Java时区转换的理解及示例详解 什么是时区 时区(Time Zone),又称作区时,是因为地球是一个球体,而地球又不停地自转和公转的结果,使得地球的不同地区同一时刻看到的太阳高度角不同。地球表面被分为24个正负时区,本初子午线所在的地区是格林威治标准时间,标志着世界统一时间的起点,中国属于东八区,与标准时间差8个小时。 如何在Java程序中进行时区转换 J…

    Java 2023年5月20日
    00
  • 浅谈Spring-boot事件监听

    浅谈Spring-boot事件监听 在Spring-boot应用程序中,通过定义和处理事件可以很方便地实现系统之间的解耦操作。Spring-boot框架提供了多种事件和事件监听器,我们可以使用它们来对应用程序某些事件做出响应。 Spring-boot事件监听器 Spring-boot框架提供了用于监听应用程序中一些事件的抽象类。它们都继承自Applicati…

    Java 2023年5月15日
    00
  • 浅谈java面向对象(类,封装,this,构造方法)

    浅谈Java面向对象 类 在Java中,类可看做是一个数据类型,它包含了数据和方法。数据称为类的属性,而方法则是类的行为。 在代码实现中,通过使用关键字“class”来定义一个类,类的命名应遵循驼峰命名法。下面是一个简单的类的定义示例: public class Person { private String name; private int age; p…

    Java 2023年5月26日
    00
  • java开发命名规范总结

    Java开发命名规范总结 在Java开发中,好的变量、方法、类的命名可以提高代码的可读性和可维护性,也是Java开发人员必须熟悉和掌握的基本规范之一。本文将介绍Java命名规范的常见规则,帮助Java开发人员合理命名。 变量命名规范 可读性为上 变量命名应该明显、具有可读性和可理解性,且要体现变量的含义和作用。一般建议使用英文单词或拼音加上数字或下划线来表示…

    Java 2023年5月26日
    00
  • 详解servlet配置load-on-startup的作用

    下面是详解servlet配置load-on-startup的作用的完整攻略: 什么是load-on-startup 在Java Web中,一个servlet通常在客户端请求它时才会被加载并初始化,但某些时候我们希望它在服务器启动时就被加载和初始化,而不是在客户端请求它时再进行初始化。load-on-startup就是一种配置方式,用来在服务器启动时就加载和初…

    Java 2023年6月15日
    00
  • MyBatis批量查询、插入、更新、删除的实现示例

    接下来我将为您详细讲解如何实现MyBatis批量查询、插入、更新、删除的操作。 1. 批量查询 在MyBatis中,批量查询通常使用select list方式实现,下面是一个简单的示例: <select id="getUserListByIds" resultType="User"> SELECT * FR…

    Java 2023年5月19日
    00
  • Spring Boot 多数据源处理事务的思路详解

    Spring Boot 多数据源处理事务的思路详解 为什么需要多数据源 在实际应用中,我们可能需要连接多个数据库来完成不同的业务需求,例如:用户数据存在 MySQL 数据库中,订单数据存在 MongoDB 数据库中,而且不同的数据源可能有不同的事务管理机制,为了更好地处理多数据源事务,我们需要进行多数据源处理。 Spring Boot 多数据源处理事务方案 …

    Java 2023年6月3日
    00
  • springboot框架中如何整合mybatis框架思路详解

    在Spring Boot框架中整合MyBatis框架,需要经过以下主要步骤: 添加依赖:在pom.xml中添加Spring Boot和MyBatis相关的依赖。需要添加spring-boot-starter-web,mybatis-spring-boot-starter,mysql-connector-java等依赖。 <dependencies&gt…

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