开发者社区> jsm43v22fygxw> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

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>


版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Java学习路线-1:编程入门
Java学习路线-1:编程入门
0 0
java语言入门总结
java语言入门总结
0 0
【Java技术开发专题】系列之「Guava RateLimiter」针对于限流器的入门到实战(含源码分析介绍)
【Java技术开发专题】系列之「Guava RateLimiter」针对于限流器的入门到实战(含源码分析介绍)
0 0
【Java技术指南】「并发编程专题」Guava RateLimiter针对于限流器的入门到精通(含源码分析介绍)
【Java技术指南】「并发编程专题」Guava RateLimiter针对于限流器的入门到精通(含源码分析介绍)
0 0
【Java技术指南】「并发编程专题」Guava RateLimiter针对于限流器的入门到精通(含实战和原理分析)
【Java技术指南】「并发编程专题」Guava RateLimiter针对于限流器的入门到精通(含实战和原理分析)
0 0
java语言学习路线目录,从入门到资深工程师要掌握的技术
1.JAVA知识基础 1.1JAVA基础 推荐书籍:编程思想 1.掌握java常用技术,io、多线程、反射、常用集合框架 2.对处理输入输出的IO进行熟悉,用于笔试
0 0
Java入门典题门禁系统项目
Java入门典题门禁系统项目
0 0
Java学习路线-53:EL(表达式语言)入门及 EL 函数库
Java学习路线-53:EL(表达式语言)入门及 EL 函数库
0 0
Java入门在线编程题
Java入门在线编程题
0 0
吾以为,最适合入门的语言是Java
吾以为,最适合入门的语言是Java
0 0
文章
问答
文章排行榜
最热
最新
相关电子书
更多
Java高级特性入门(二)
立即下载
Java工程师必读手册
立即下载
Java应用提速(速度与激情)
立即下载