Java Web入门之Struts2和MVC基础的详解及实战

简介: Java Web入门之Struts2和MVC基础的详解及实战

前言


Struts2是一个非常出色的MVC框架 它得到的广大程序开发人员的认可


一、理解MVC原理


MVC(Model-View-Controller) 模式-视图-控制器 是一种程序设计理念 目前在Java Web应用方面MVC框架有很多 常见的流行框架有Struts JSF Tapestry Spring MVC等等 在这些框架中Struts框架的应用最为广泛


1:控制器


使用中央控制器ActionServlet充当控制层 将请求分发信息 配置在struts.cfg.xml中 当客户端发送一个HTTP请求时 将由Struts的中央控制器对请求进行分发处理 在处理之后返回ActionForward对象 将请求转发到指定的JSP页面 也客户端进行回应


2:模型


模型层主要由Struts中的ActionFrom及业务JavaBean实现 其中ActionForm对象对表单数据进行封装 它能够与网页表单进行交互并传递数据 业务JavaBean用于处理真正的业务请求 由Action进行调用


3:视图


视图主要指用户看到并与之交互的界面 即Java Web应用程序的外观


二、Action对象


Action对象是Struts2框架中的重要对象 它主要用于对HTTP请求进行处理 在Struts2 API中 Action对象是一个接口 它位于com.opensymphony.xwork2包中 在Struts2项目开发中 创建Action对象都要直接或者间接实现此对象  声明代码如下

public interface Action{
 public static final String SUCCESS="success";
 public static final String NONE="none";
 public static final String ERROR="error";
 public static final String INPUT="input";
 public static final String LOGIN="login";
 public String execute()throws Exception;
}


SUCCESS:Action执行成功时的返回值


NONE:也是Action执行成功的返回值 但不需要返回到成功页面


ERROR:Action执行失败时的返回值


INPUT:代表需要返回到某个输入信息的页面的返回值


LOGIN:代表需要用户登录的返回值


Action的基本流程

当浏览器向Web容器发送一个HTTP请求时 Web容器就要调用Struts2过滤器的doFilter()方法 此时Struts2就接受到了HTTP请求,通过Struts2的内部处理机制 它会判断整个HTTP请求是否与某个Action对象相匹配 如果找到了与整个HTTP请求匹配的Action 就会调用Action对象的execute()方法。并根据处理结果返回相应的值,然后Struts2就会通过Action的返回值找返回值所映射的页面  最后通过一定的视图回应给浏览器


流程时序图如下

1666441128026.jpg

动态Action

动态Action时通过请求Action对象中的一个具体的方法来实现动态操作的,其具体的操作方式是:


在请求Action的URL地址后方加上请求字符串(方法名称) 与Action对象中的方法进行匹配 需要注意的是 Action地址与请求字符串之间需要以!进行分割

/userAction!add
/userAction!update


三:Struts2的配置文件


1:Struts2的包配置


在struts.xml文件中存放一个包的概念 它类似于Java中的包 配置文件struts.xml中的包使用<package>元素声明 主要用于放置一些项目中的相关配置 可以理解成配置文件中的一个逻辑单元 已经配置好的包可以被其他包继承 从而提高配置文件的重用性

<struts>
 <!--声明包-->
<package name="user" extends="struts-default" namespace="/user">
  ......
</package>
</struts>


2:名称空间配置


在Java Web开发中 Web文件目录通常以模块进行划分 在Struts2配置文件提供了名称空间的功能,用于指定一个Action对象的访问路径,它的使用方法是通过在配置文件struts.xml的包声明中


使用namespace属性进行声明

<struts> 
<!--声明包-->
<package name="book" extends="struts-default" namespace="/bookmanager">
 ...
</package>
</struts>


3:Action相关配置


Struts2框架中的Action对象是一个控制器的对象 Struts2框架通过Action对象处理HTTP请求,其请求地址映射需要配置在sturts.xml文件中 它的配置方法使用<action>元素进行配置

<action name="userAction" class="com.lyq.action.UserAction" method="save">
 <result>success.jsp</result>
</action>


4:通配符实现简化配置


通过一定的命名约定 使用通配符来配置Action对象 从而达到一种简化配置的效果 主要有以下两个


* 匹配0或多个字符


\ 是一个转义字符 如需要匹配 \ 则使用\ /进行匹配


5:返回结果的配置


在MVC的设计思想中 业务逻辑处理需要返回一个视图View Struts2框架中通过Action结果映射配置返回视图


在配置文件struts.xml中 结果映射使用<result>元素进行映射

<action name="user" class="com.lyq.action.UserAction">
 <result>/user/Result.jsp</result>
 <result name="error">/user/Error.jsp</result>
 <result name="input" type="dispatcher">/user/Input.jsp</result>
</action>


相关文章
|
1天前
|
存储 监控 Java
【Java并发】【线程池】带你从0-1入门线程池
欢迎来到我的技术博客!我是一名热爱编程的开发者,梦想是编写高端CRUD应用。2025年我正在沉淀中,博客更新速度加快,期待与你一起成长。 线程池是一种复用线程资源的机制,通过预先创建一定数量的线程并管理其生命周期,避免频繁创建/销毁线程带来的性能开销。它解决了线程创建成本高、资源耗尽风险、响应速度慢和任务执行缺乏管理等问题。
88 60
【Java并发】【线程池】带你从0-1入门线程池
|
3月前
|
前端开发 Java 数据库
SpringBoot入门 - 对Hello world进行MVC分层
SpringBoot入门 - 对Hello world进行MVC分层
70 3
SpringBoot入门 - 对Hello world进行MVC分层
|
1月前
|
自然语言处理 Java
Java中的字符集编码入门-增补字符(转载)
本文探讨Java对Unicode的支持及其发展历程。文章详细解析了Unicode字符集的结构,包括基本多语言面(BMP)和增补字符的表示方法,以及UTF-16编码中surrogate pair的使用。同时介绍了代码点和代码单元的概念,并解释了UTF-8的编码规则及其兼容性。
113 60
|
1月前
|
存储 缓存 Java
Java中的分布式缓存与Memcached集成实战
通过在Java项目中集成Memcached,可以显著提升系统的性能和响应速度。合理的缓存策略、分布式架构设计和异常处理机制是实现高效缓存的关键。希望本文提供的实战示例和优化建议能够帮助开发者更好地应用Memcached,实现高性能的分布式缓存解决方案。
44 9
|
2月前
|
Java 开发者 微服务
Spring Boot 入门:简化 Java Web 开发的强大工具
Spring Boot 是一个开源的 Java 基础框架,用于创建独立、生产级别的基于Spring框架的应用程序。它旨在简化Spring应用的初始搭建以及开发过程。
111 7
Spring Boot 入门:简化 Java Web 开发的强大工具
|
2月前
|
Java
Java基础却常被忽略:全面讲解this的实战技巧!
本次分享来自于一道Java基础的面试试题,对this的各种妙用进行了深度讲解,并分析了一些关于this的常见面试陷阱,主要包括以下几方面内容: 1.什么是this 2.this的场景化使用案例 3.关于this的误区 4.总结与练习
|
3月前
|
前端开发 Java 数据库
SpringBoot入门(3) - 对Hello world进行MVC分层
SpringBoot入门(3) - 对Hello world进行MVC分层
29 1
 SpringBoot入门(3) - 对Hello world进行MVC分层
|
2月前
|
监控 架构师 Java
Java虚拟机调优的艺术:从入门到精通####
本文作为一篇深入浅出的技术指南,旨在为Java开发者揭示JVM调优的神秘面纱,通过剖析其背后的原理、分享实战经验与最佳实践,引领读者踏上从调优新手到高手的进阶之路。不同于传统的摘要概述,本文将以一场虚拟的对话形式,模拟一位经验丰富的架构师向初学者传授JVM调优的心法,激发学习兴趣,同时概括性地介绍文章将探讨的核心议题——性能监控、垃圾回收优化、内存管理及常见问题解决策略。 ####
|
2月前
|
Java 程序员
Java基础却常被忽略:全面讲解this的实战技巧!
小米,29岁程序员,分享Java中`this`关键字的用法。`this`代表当前对象引用,用于区分成员变量与局部变量、构造方法间调用、支持链式调用及作为参数传递。文章还探讨了`this`在静态方法和匿名内部类中的使用误区,并提供了练习题。
56 1
|
3月前
|
安全 Java 开发者
Java 多线程并发控制:深入理解与实战应用
《Java多线程并发控制:深入理解与实战应用》一书详细解析了Java多线程编程的核心概念、并发控制技术及其实战技巧,适合Java开发者深入学习和实践参考。
104 8

热门文章

最新文章