Struts2教程简介,从入门到精通

广告 X
OK欧意app

欧意最新版本

欧意最新版是全球三大交易所之一,注册即送最高6万元礼包

APP下载  官网地址

亲爱的小伙伴们大家好,今天小编来为大家谈谈Struts2教程简介,从入门到精通,接下来我们进入正题,请往下看!

Struts2是一个基于MVC模式开发的Java网络应用框架。相比较于Struts1,它更轻量级,进一步**了开发难度和实现成本,成为了企业级后端开发领域中广泛使用的框架之一。

1. Struts2框架的优势

当今,无论是企业级互联网应用,还是金融,教育,医疗等各行各业,都需要**率,稳定性和扩展性兼备的后端开发。而Struts2框架正是提供了这样的功能:

1. MVC思想:将Java Web项目分离成Model(数据模型),View(用户界面)和Controller(控制器)三个部分,在不同的Java类中执行,避免了代码耦合,逻辑清晰明确。

2. 表单验证:Struts2提供了强大的AJAX验证框架,使得前端表单验证可以在不刷新网页的情况下快速完成,增加了用户体验。

3. 支持RESTful:极大地方便了页面传值,且方便地将参数映射自动化。

4. **化支持:支持资源**化,具有**话配置的特性。

2. Struts2框架的实现

按照MVC模式,Struts2框架中的Model主要负责业务逻辑部分,通常使用JavaBean完成;View主要负责界面展示部分,通常使用HTML、JSP等技术实现;Controller主要是实现业务控制和处理,使用Java Action完成,通过它可以完成参数传输、验证、结果返回等功能。

Struts2框架的实现大致可以分为以下步骤:

1. 引入jar包:将struts2开发所需的jar包导入项目中

2. 配置struts.xml:此处可以定义**、视图解析器、异常处理等。

3. 定义Action:每个页面需要向后台提交或获取数据时会提交一个请求,这里就需要在Java中定义一个相应的Action。

3. Struts2框架的应用示例

下面以登录功能为例,演示如何使用Struts2框架。

1. 添加login.jsp页面,渲染前端登录页面。

  

2. 定义LoginAction.java处理用户登录请求。

  public class LoginAction extends ActionSupport {
    
      private String username;
      private String password;
      
      public void setUsername(String username) {
          this.username = username;
      }
      
      public void setPassword(String password) {
          this.password = password;
      }
      
      public String execute() throws Exception {
          if ("admin".equals(username)&&"password".equals(password)) {
              return SUCCESS;
          } else {
              return ERROR;
          }
      }
  }

3. 配置struts.xml文件,将login.jsp和LoginAction.java映射。

  
      
          /success.jsp
          /error.jsp
      
  

以上是使用Struts2框架实现简单的登录操作示例,希望可以对初学者有所帮助。

1. 登录功能

登录功能是Web应用中非常重要的一个部分,其安全性和稳定性直接关系到整个系统的稳定性。下面是一个简单的Struts2登录功能代码:

``` public class LoginAction extends ActionSupport{ private String username; private String password; 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; } public String execute() throws Exception{ if("admin".equals(username) && "123456".equals(password)){ return SUCCESS; }else{ addActionError("用户名或密码错误,请重新输入!"); return INPUT; } } } ```

2. 用户管理功能

用户管理功能是一个相对比较复杂的功能模块,包括增、删、改、查等多个操作,下面是一个简单的用户管理功能模块代码:

``` public class UserAction extends ActionSupport{ private List userList;//用户列表 private User user;//用户信息 UserService userService = new UserServiceImpl(); public String list(){ try{ userList = userService.getAllUsers(); }catch(Exception e){ e.printStackTrace(); } return SUCCESS; } public String add(){ try{ userService.addUser(user); }catch(Exception e){ e.printStackTrace(); } return SUCCESS; } public String edit(){ try{ userService.editUser(user); }catch(Exception e){ e.printStackTrace(); } return SUCCESS; } public String delete(){ try{ userService.deleteUser(user); }catch(Exception e){ e.printStackTrace(); } return SUCCESS; } public User getUser(){ return user; } public void setUser(User user){ this.user = user; } public List getUserList(){ return userList; } public void setUserList(List userList){ this.userList = userList; } } ```

3. 文件上传功能

文件上传功能是Web应用中常见的一种操作,例如我们在社交平台上上传照片时就会使用到该功能。下面是一个简单的文件上传功能代码:

``` <%@ page contentType="text/html;charset=UTF-8" language="java" %><%@ taglib prefix="s" uri="/struts-tags" %> File Upload Example File:
```

总结

本篇文章主要介绍了Struts2的实战案例,并且详细讲解了登录功能、用户管理功能和文件上传功能的相关代码。希望读者通过本文能够更好地了解Struts2框架,以及如何使用该框架进行Web应用开发。

1.什么是Struts2?

Struts2是一个基于MVC架构的Java EE Web应用框架,它将数据模型、用户交互和控制逻辑分离开,使应用程序更易于开发、维护和扩展。

2.Struts2的工作流程

Struts2的工作流程包括请求的接收、参数处理、调用Action、执行Action的业务逻辑和返回结果等步骤。下面是Struts2的工作流程示意图:

3.Struts2的核心组件

Struts2由以下几个核心组成部分构成:

3.1 Action

Action是Struts2的核心组件之一,它负责接收请求、处理请求参数、执行具体的业务逻辑,并返回处理结果。每个Action对应一个请求,请求以URL形式发送到服务器端,由Struts2框架解析并调用相应的Action。

3.2 Interceptor

Interceptor是Struts2中的**,用于拦截请求与响应,实现在处理请求前后进行自定义处理。Struts2默认提供了许多**,如参数**、异常**、文件上传**等等。

3.3 Result

Result是Struts2的一个组件,用于封装返回的结果并进行渲染输出。Struts2默认提供了多种结果类型,如JSP页面、FreeMarker模板、Velocity模板、JSON数据等。

3.4 ValueStack

ValueStack是Struts2框架的核心组件之一,它用于存储和管理Action中的各种对象,如ActionForm、请求参数等。ValueStack采用堆栈结构进行管理,确保Object能够合理的存储和获取。

4. 如何配置Struts2?

Struts2的配置比较灵活和自由,可以通过XML或注解两种方式来进行配置。说到Struts2的配置,必然会涉及到struts.xml,这个文件定义了Struts2的核心配置信息,如**、视图解析器、代码库等等。下面是一个简单的struts.xml配置示例:




   
      
         /success.jsp
      
      
      
         
         /index.jsp
         /login.jsp
      
   

5.Struts2应用开发示例

了解了Struts2的相关知识后,我们可以通过一个实际的应用示例来深入学习和掌握Struts2的应用开发。这里我们以一个简单的用户管理系统为例,演示如何使用Struts2来进行Web应用开发。

5.1 创建Maven项目

首先我们可以使用Maven来创建一个基础的Web应用项目,通过下面的命令行来创建:

mvn archetype:generate -DgroupId=com.example -DartifactId=user-management -DarchetypeArtifactId=maven-archetype-webapp

5.2 添加相关依赖

在项目中添加以下Struts2相关依赖:


    org.apache.struts
    struts2-core
    2.5.22

5.3 配置struts.xml

在src/main/resources目录下创建struts.xml文件,配置如下:




    

    
        
            /index.jsp
            /login.jsp
        

        
            /user.jsp
        
    

5.4 编写控制器代码

在src/main/java目录下创建Action类,代码如下:

public class LoginAction extends ActionSupport {

    private static final long serialVersionUID = 1L;

    private String username;
    private String password;

    public String execute() throws Exception {
        if (username.equals("admin") && password.equals("123456")) {
            return SUCCESS;
        } else {
            return INPUT;
        }
    }

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

}

public class UserAction extends ActionSupport {

    private static final long serialVersionUID = 1L;

    private String name;
    private int age;
    private List
    
      hobbies;

    public String execute() throws Exception {
        setName("张三");
        setAge(25);
        setHobbies(Arrays.asList("阅读", "运动", "旅游"));
        return SUCCESS; 
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public List
     
       getHobbies() { return hobbies; } public void setHobbies(List
      
        hobbies) { this.hobbies = hobbies; } } 
      
     
    

5.5 编写视图页面

在Web应用的WebContent目录下创建JSP文件,代码如下:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="s" uri="/struts-tags" %>


    用户管理系统  
      </pre> </div></div><div class="entry-tag"></div><div class="entry-bar"><div class="entry-bar-inner clearfix"><div class="author pull-left"> 标签: </div><div class="info pull-right"><div class="info-item meta"></div><div class="info-item act"><a href="javascript:;" id="j-reading"><i class="seo-icon wi"><svg aria-hidden="true"><use xlink:href="#wi-article"></use></svg></i></a></div></div></div></div></div><div class="entry-page"><div class="entry-page-prev entry-page-nobg j-lazy" style="" data-original=""><a href="/shbk/1770.html" title="split函数的用法及示例" rel="prev"><span>split函数的用法及示例</span></a><div class="entry-page-info"><span class="pull-left"><i class="seo-icon wi"><svg aria-hidden="true"><use xlink:href="#wi-arrow-left-double"></use></svg></i> 上一篇</span><span class="pull-right">2023-06-28</span></div></div><div class="entry-page-next entry-page-nobg j-lazy" style="" data-original=""><a href="/shbk/1772.html" title="WeakReference: 垃圾回收机制下的对象引用关系管理" rel="next"><span>WeakReference: 垃圾回收机制下的对象引用关系管理</span></a><div class="entry-page-info"><span class="pull-right">下一篇 <i class="seo-icon wi"><svg aria-hidden="true"><use xlink:href="#wi-arrow-right-double"></use></svg></i></span><span class="pull-left">2023-06-28</span></div></div></div><div class="entry-related-posts"><h3 class="entry-related-title">相关推荐</h3><ul class="entry-related cols-3 post-loop post-loop-default"><li class="item item"><div class="item-content"><h4 class="item-title"><a href="/shbk/677466.html" target="_blank" rel="bookmark"> 蚂蚁庄园小鸡答题今日答案2024年12月26日</a></h4><div class="item-excerpt"><p>2024年12月26日蚂蚁庄园答题答案是什么?蚂蚁庄园小课堂每日都有新的题目,答对可以获得180g饲料,那么12月26日蚂蚁庄园答案是什么呢?小编已经帮大家准备好了12月26日蚂</p></div><div class="item-meta"><span class="item-meta-li date">2023-06-28 11:09:48</span><div class="item-meta-right"><span class="item-meta-li views" title="阅读数"><i class="seo-icon wi"><svg aria-hidden="true"><use xlink:href="#wi-eye"></use></svg></i>0</span></div></div></div></li><li class="item item"><div class="item-content"><h4 class="item-title"><a href="/shbk/675903.html" target="_blank" rel="bookmark"> 蚂蚁庄园小鸡答题今日答案2024年12月25日</a></h4><div class="item-excerpt"><p>2024年12月25日蚂蚁庄园答题答案是什么?蚂蚁庄园小课堂每日都有新的题目,答对可以获得180g饲料,那么12月25日蚂蚁庄园答案是什么呢?小编已经帮大家准备好了12月25日蚂</p></div><div class="item-meta"><span class="item-meta-li date">2023-06-28 11:09:48</span><div class="item-meta-right"><span class="item-meta-li views" title="阅读数"><i class="seo-icon wi"><svg aria-hidden="true"><use xlink:href="#wi-eye"></use></svg></i>1</span></div></div></div></li><li class="item item"><div class="item-content"><h4 class="item-title"><a href="/shbk/674691.html" target="_blank" rel="bookmark"> 蚂蚁庄园小鸡答题今日答案2024年12月24日</a></h4><div class="item-excerpt"><p>2024年12月24日蚂蚁庄园答题答案是什么?蚂蚁庄园小课堂每日都有新的题目,答对可以获得180g饲料,那么12月24日蚂蚁庄园答案是什么呢?小编已经帮大家准备好了12月24日蚂</p></div><div class="item-meta"><span class="item-meta-li date">2023-06-28 11:09:48</span><div class="item-meta-right"><span class="item-meta-li views" title="阅读数"><i class="seo-icon wi"><svg aria-hidden="true"><use xlink:href="#wi-eye"></use></svg></i>1</span></div></div></div></li><li class="item item"><div class="item-content"><h4 class="item-title"><a href="/shbk/673495.html" target="_blank" rel="bookmark"> 蚂蚁庄园小鸡答题今日答案2024年12月23日</a></h4><div class="item-excerpt"><p>2024年12月23日蚂蚁庄园答题答案是什么?蚂蚁庄园小课堂每日都有新的题目,答对可以获得180g饲料,那么12月23日蚂蚁庄园答案是什么呢?小编已经帮大家准备好了12月23日蚂</p></div><div class="item-meta"><span class="item-meta-li date">2023-06-28 11:09:48</span><div class="item-meta-right"><span class="item-meta-li views" title="阅读数"><i class="seo-icon wi"><svg aria-hidden="true"><use xlink:href="#wi-eye"></use></svg></i>1</span></div></div></div></li><li class="item item"><div class="item-content"><h4 class="item-title"><a href="/shbk/671905.html" target="_blank" rel="bookmark"> 蚂蚁庄园小鸡答题今日答案2024年12月22日</a></h4><div class="item-excerpt"><p>2024年12月22日蚂蚁庄园答题答案是什么?蚂蚁庄园小课堂每日都有新的题目,答对可以获得180g饲料,那么12月22日蚂蚁庄园答案是什么呢?小编已经帮大家准备好了12月22日蚂</p></div><div class="item-meta"><span class="item-meta-li date">2023-06-28 11:09:48</span><div class="item-meta-right"><span class="item-meta-li views" title="阅读数"><i class="seo-icon wi"><svg aria-hidden="true"><use xlink:href="#wi-eye"></use></svg></i>1</span></div></div></div></li><li class="item item"><div class="item-content"><h4 class="item-title"><a href="/shbk/669704.html" target="_blank" rel="bookmark"> 蚂蚁庄园小鸡答题今日答案2024年12月21日</a></h4><div class="item-excerpt"><p>2024年12月21日蚂蚁庄园答题答案是什么?蚂蚁庄园小课堂每日都有新的题目,答对可以获得180g饲料,那么12月21日蚂蚁庄园答案是什么呢?小编已经帮大家准备好了12月21日蚂</p></div><div class="item-meta"><span class="item-meta-li date">2023-06-28 11:09:48</span><div class="item-meta-right"><span class="item-meta-li views" title="阅读数"><i class="seo-icon wi"><svg aria-hidden="true"><use xlink:href="#wi-eye"></use></svg></i>2</span></div></div></div></li><li class="item item"><div class="item-content"><h4 class="item-title"><a href="/shbk/667293.html" target="_blank" rel="bookmark"> 蚂蚁庄园小鸡答题今日答案2024年12月20日</a></h4><div class="item-excerpt"><p>2024年12月20日蚂蚁庄园答题答案是什么?蚂蚁庄园小课堂每日都有新的题目,答对可以获得180g饲料,那么12月20日蚂蚁庄园答案是什么呢?小编已经帮大家准备好了12月20日蚂</p></div><div class="item-meta"><span class="item-meta-li date">2023-06-28 11:09:48</span><div class="item-meta-right"><span class="item-meta-li views" title="阅读数"><i class="seo-icon wi"><svg aria-hidden="true"><use xlink:href="#wi-eye"></use></svg></i>3</span></div></div></div></li><li class="item item"><div class="item-content"><h4 class="item-title"><a href="/shbk/665539.html" target="_blank" rel="bookmark"> 蚂蚁庄园小鸡答题今日答案2024年12月19日</a></h4><div class="item-excerpt"><p>2024年12月19日蚂蚁庄园答题答案是什么?蚂蚁庄园小课堂每日都有新的题目,答对可以获得180g饲料,那么12月19日蚂蚁庄园答案是什么呢?小编已经帮大家准备好了12月19日蚂</p></div><div class="item-meta"><span class="item-meta-li date">2023-06-28 11:09:48</span><div class="item-meta-right"><span class="item-meta-li views" title="阅读数"><i class="seo-icon wi"><svg aria-hidden="true"><use xlink:href="#wi-eye"></use></svg></i>1</span></div></div></div></li></ul></div></article></main><aside class="sidebar"><div id="block-5" class="widget widget_block"><div class="wp-container-1 wp-block-group"><div class="wp-block-group__inner-container"><h4>简讯列表</h4><hr><ul class=" wp-block-archives-list wp-block-archives"><li><a href=''> 华泰证券“行知”五周年:驱动高质量发展的数字金融力量 </a></li><li><a href=''> 全国住房城乡建设工作会议:持续用力推动房地产市场止跌回稳 </a></li><li><a href=''> 若历史重演,比特币或在三周内达到周期峰值 </a></li><li><a href=''> 可转债ETF罕见获巨额增持 资金为何蜂拥而至? </a></li><li><a href=''> 龚兴峰获批担任新华保险董事、总裁及财务负责人 </a></li><li><a href=''> 广东浩源科教玩具有限公司召回144只遥控玩具 </a></li><li><a href=''> 智翔金泰顺利完成董监高换届 首席科学官刘志刚博士接任董事长 </a></li><li><a href=''> 河南内黄县欢乐电热毯厂召回50床欢乐人家牌电热毯 </a></li></ul></div></div></div><div id="block-6" class="widget widget_block"><div class="wp-container-2 wp-block-group"><div class="wp-block-group__inner-container"><h4>最新文章</h4><hr><ul class="wp-block-categories-list wp-block-categories"><li class="cat-item cat-item-1"><a href="/shbk/677466.html"> 蚂蚁庄园小鸡答题今日答案2024年12月26日 </a></li><li class="cat-item cat-item-1"><a href="/shbk/675903.html"> 蚂蚁庄园小鸡答题今日答案2024年12月25日 </a></li><li class="cat-item cat-item-1"><a href="/shbk/674691.html"> 蚂蚁庄园小鸡答题今日答案2024年12月24日 </a></li><li class="cat-item cat-item-1"><a href="/shbk/673495.html"> 蚂蚁庄园小鸡答题今日答案2024年12月23日 </a></li><li class="cat-item cat-item-1"><a href="/shbk/671905.html"> 蚂蚁庄园小鸡答题今日答案2024年12月22日 </a></li><li class="cat-item cat-item-1"><a href="/shbk/669704.html"> 蚂蚁庄园小鸡答题今日答案2024年12月21日 </a></li><li class="cat-item cat-item-1"><a href="/shbk/667293.html"> 蚂蚁庄园小鸡答题今日答案2024年12月20日 </a></li><li class="cat-item cat-item-1"><a href="/shbk/665539.html"> 蚂蚁庄园小鸡答题今日答案2024年12月19日 </a></li></ul></div></div></div></aside></div></div> <script>var _hmt = _hmt || [];(function() { var hm = document.createElement("script"); hm.src = "https://hm.baidu.com/hm.js?99498c7a375f0cf002fe2d74ea1c22de"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s);})();</script> <footer class="footer"><div class="container"><div class="clearfix"><div class="footer-col footer-col-copy"><ul class="footer-nav hidden-xs"><p>本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 support1012#126.com(#更换为@) 举报,一经查实,本站将立刻删除。</p></ul><div class="copyright"><p>Copyright © <script>today = new Date(); document.write(today.getFullYear());</script><a href="https://news.bestwheel.com.cn/">巴适财经</a><a href="https://beian.miit.gov.cn" rel="nofollow" target=_blank> 湘ICP备2023021243号-1</a></p></div></div><div class="footer-col footer-col-sns"><div class="footer-sns"></div></div></div></div></footer><div class="action action-style-0 action-color-1 action-pos-1" style="bottom:20%;"><div class="action-item gotop j-top"><i class="seo-icon wi action-item-icon"><svg aria-hidden="true"><use xlink:href="#wi-arrow-up-2"></use></svg></i></div></div> <script type='text/javascript' src='/skin/static/js/jquery.min.js' id='jquery-core-js'></script> <script type='text/javascript' src='/skin/static/js/jquery-migrate.min.js' id='jquery-migrate-js'></script> <script type='text/javascript' id='main-js-extra'> var _seo_js = {"fixed_sidebar": "1"}; </script> <script type='text/javascript' src='/skin/static/js/main.js' id='main-js'></script> <script type='text/javascript' src='/skin/static/js/fix.js' id='fix-js'></script> <script type='text/javascript' src='/skin/static/js/icons.js' id='seo-icons-js'></script> <div style="display:none;"><script src="/e/public/ViewClick/?classid=13&id=1771&addclick=1"></script></div> <script>(function ($) { $(document).ready(function () { setup_share(1); }) })(jQuery);</script> </body></html>