Struts2的基本原理与实现

Struts2的基本原理与实现Struts2 是什么 Struts2 是一个基于 MVC 设计模式的 Web 应用框架 它本质上相当于一个 servlet 在 MVC 设计模式中 Struts2 作为控制器 Controller 来建立模型与视图的数据交互 Struts2 是 Struts 的下一代产品 是在 struts1 和 WebWork 的技术基础上进行了合并的全新的 Struts2 框架 其全新的 Struts2 的体系结构与 Struts1 的体

Struts2是什么

百度说的

Struts2是一个基于MVC设计模式的Web应用框架,它本质上相当于一个servlet,在MVC设计模式中,Struts2作为控制器(Controller)来建立模型与视图的数据交互。Struts 2是Struts的下一代产品,是在 struts 1和WebWork的技术基础上进行了合并的全新的Struts 2框架。其全新的Struts 2的体系结构与Struts 1的体系结构差别巨大。Struts 2以WebWork为核心,采用拦截器的机制来处理用户的请求,这样的设计也使得业务逻辑控制器能够与ServletAPI完全脱离开,所以Struts 2可以理解为WebWork的更新产品。虽然从Struts 1到Struts 2有着太大的变化,但是相对于WebWork,Struts 2的变化很小。

我说的

    上面这是百度写的,百度写的太啰嗦了,简单的来说,Struts2就是一个框架,它是属于web层的一个框架,是Struts1的一个升级版,但是它和Struts1来相比,提供了太多的增强和改进,怎么运行的呢,就是实现了Servlet的功能,来进行控制页面跳转
    同时这也是基于MVC设计模式的Web应用框架,Struts2的控制功能就相当于MVC中的Controller的功能,用来控制页面的转向。

为什么说Struts2实现了Servlet的功能?

Struts2的优缺点

优点

  1. 实现了MVC模式,层次结构清晰,使程序员只需关注业务逻辑的实现。
  2. 丰富的标签库,大大提高了开发的效率。
  3. Struts2提供丰富的拦截器实现。
  4. 通过配置文件,就可以掌握整个系统各个部分之间的关系。
  5. 异常处理机制,只需在配置文件中配置异常的映射,即可对异常做相应的处理。
  6. Struts2的可扩展性高。
  7. 面向切面编程的思想在Strut2中也有了很好的体现。

缺点

  1. Struts2中Action中取得从jsp中传过来的参数时还是有点麻烦。
  2. 校验还是感觉比较繁琐,感觉太烦乱,也太细化了,如果校验出错的只能给用户提示一些信息。
  3. 安全性有待提高。

优缺点来自这里

拦截器和过滤器

过滤器(Filter):当你有一堆东西的时候,你只希望选择符合你要求的某一些东西。定义这些要求的工具,就是过滤器。

拦截器(Interceptor):在一个流程正在进行的时候,你希望干预它的进展,甚至终止它进行,这是拦截器做的事情。

这里不做详细介绍,百度一下

Struts执行流程图

在这里插入图片描述
图片来自这里(这篇博客写的非常的好,强烈推荐!!)

Warning!!!

千万不要错过!!!具体详细的Struts2的详细介绍参考网站:tutorialspoint
别说英文网站我看不懂,我四级都没过的渣渣靠着翻译都没问题!!!

这个Demo可以运行的起来

在这里插入图片描述

导入jar包

在这里插入图片描述

配置Struts2核心过滤器:web.xml

 
    <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <display-name> 
     display-name> <welcome-file-list> <welcome-file>index.jsp 
      welcome-file>  
       welcome-file-list>  
        
       <filter> <filter-name>struts2 
        filter-name> <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter 
         filter-class>  
          filter> <filter-mapping> <filter-name>struts2 
           filter-name> <url-pattern>/* 
            url-pattern>  
             filter-mapping>  
              web-app> 

编写Action类:HelloAction.java

package com.banana.struts.demo1; /* * Struts2的Action类 */ public class HelloAction { 
    public String execute(){ 
    System.out.print("HelloAction执行了......"); return "success"; } } 

编写struts.xml来控制转向

 
     <struts>  
     
    <package name="hello" extends="struts-default" namespace="/">  
    <action name="hello" class="com.banana.struts.demo1.HelloAction">  
    <result name="success">/demo1/success.jsp 
     result>  
      action>  
       package>  
        struts> 

添加页面:demo1.jsp、success.jsp

demo1.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %>  <html> <head> <base href="<%=basePath%>"> <title>My JSP 'demo1' starting page 
     title>  
      head> <body> <h1>Struts2的入门 
       h1> <h3><a href="${ pageContext.request.contextPath }/hello.action">Struts2的入门 
        a> 
         h3>  
          body>  
           html> 
success.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %>  <html> <head> <base href="<%=basePath%>"> <title>success page 
     title>  
      head> <body> 跳转成功 <br>  
       body>  
        html> 

页面跳转逻辑

在这里插入图片描述

总结一下

觉得不错点个赞再走吧?

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/201768.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月20日 上午8:39
下一篇 2026年3月20日 上午8:40


相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号