MVC模式-----struts2框架


第一个struts2程序

struts2框架是通过一个过滤器将struts2集成到Web应用程序中的,这个过滤器的对象是StrutsprepareAndExecuteFilter。struts2框架通过过滤器对象,获取web应用中的Http请求,并将http请求转发到的指定Action进行处理,Action根据处理结果返回给用户相应的页面。

创建一个简单的struts项目,需要创建于用户进行交互并获取输入信息的jsp页面:呈现最终信息的页面;创建一个用于业务逻辑处理的类;创建用于连接动作、视图及控制器的配置文件。

一、创建JSP页面

在web项目这,创建一个输入信息的index.jsp页面,通过form表单的action属性值调用struts框架中的Action对象,提交后,呈现success.jsp页面。

(补充form知识点:表单中的action属性规定在提交表单数据时,向何处发送数据)

http://localhost:8080/struts/index.jsp页面:

使用form表单提交用户的输入信息,输入的用户信息的name属性值与Action对象中的属性必须一一对应,从而方便控制器Action通过getXxx()方法获取用户的输入信息。

二、创建Action

在struts2框架中,提交的表单数据会自动注入到实现Action接口类对象相应的属性中,与Spring框架中的IOC注入原理相同。在实现Action接口的类中,一般通过setter方法为对象的属性进行注入。

Action对象的作用是处理用户的请求,创建继承ActionSupport的类,用于处理用户提交的表单信息。

目录:struts\src\action\MessageAction.java:

案例解析:本案例中,创建继承ActionSupport的类,用于处理用户的输入信息。该类中定义String型的私有成员变量message,并定义其setter和getter方法,通过getMessage()方法获得用户输入的信息。声明Map型的变量session,通过ActionContext类提供的getContext()方法获取ActionContext类的对象,再通过该对象调用getSession()方法获取Map型的变量session,将用户输入的信息message保存到session中。

在该类中重写execute()方法,通过if语句判断用户输入的信息是否是空字符串或null,若是则str为“输入信息不能为空!”,否则执行else语句,str是“信息不为空!”。通过if语句判断str的值,若值是“信息不为空!”,则返回字符串success,否则返回failed。

三、struts.xml文件

在struts.xml配置文件中,配置用户请求URL和控制器Action之间的映射信息,并转发用户的请求。

struts\src\struts.xml配置文件代码:

案例解析:本案例中,<action>节点没有指定method属性的值,则默认执行execute()方法。根据Action类中execute()方法的返回值,执行相应的<result>节点。若注册成功,则success.jsp页面返回注册信息;否则返回到注册页面。<package>节点的name属性指定包的名称,在struts2的配置文件中不能重复,它并不是真正的包名,只是为了管理Action。namespace和<action>节点的name属性,决定Action的访问路径(以“/“开始)。<action>节点的class属性指定类的路径,包含包名和类名。method指定类中的方法。<result>节点的name属性默认值为success。

四、web.xml文件

配置文件web.xml是一种J2EE配置文件,决定servlet容器的http元素需求如何进行处理。严格地说,它是配置struts2框架的文件。

在struts1.x中,struts框架是通过servlet启动的,而在struts2.x中,struts框架是通过Filter过滤器启动的。

web.xml配置文件代码:

案例分析:该web.xml文件是struts2框架请求的接入点,接入点是一个过滤器,因此在web.xml中定义一个StrutsPrepareAndExecuteFilter类的接入点。

在StrutsPrepareAndExecuteFilter类的init()方法中,读取类路径下默认的配置文件struts.xml,然后完成初始化操作。

过滤器<filter>节点中定义过滤器名称<filter-name>是struts2,并通过<filter-class>指定struts2类的全限定名,即包名和类名。在<filter-mapping>节点中<filter-name>指定名称与之前定义的相同,并通过<url-pattern>节点指定过滤器要过滤的文件的后缀名是*.action。

五、显示信息

在struts.xml配置文件中,配置了Action对象处理完成后,显示用户输入信息的页面success.jsp

地址:http://localhost:8080/struts/success.jsp

案例分析:通过session对象的getAttribute()方法,获取存储的用户输入信息message,并在页面显示。

六、运行并浏览器查看

MVC模式-----struts2框架(2)的更多相关文章

  1. MVC模式-----struts2框架

    MVC模式-----struts2框架 一.struts MVC模式 1.概述 MVC是模型(model)---视图model(view)---控制器(control)的缩写,是一种用于将逻辑.数据和 ...

  2. iOS通用的MVC模式项目框架MobileProject

    最近项目比较不赶的情况下,决定把一些通用.常用的内容集成在一个项目框架中,意在新项目中可以快速搭建:其实经过几个项目后,总是有一些重复的创建工作,可以使用本项目的内容直接进行开发:采用的是MVC的分层 ...

  3. MVC模式tp框架四中路由形式

    ①基本get形式 http://网址/index.php?m=分组&c=控制器&a=操作方法 该方法是最底层的get形式,传统的传递参数方式,不安全. ②pathinfo路径形式[默认 ...

  4. Struts2框架基础

    Struts2框架基础 1.Java的框架 1.1.框架简介 在大型项目开发过程中,经常会使用到一些框架,这样做好的好处是能够提高工作效率,在java中最常用的的框架就是SSH,这其实是三个框架的简称 ...

  5. 实现struts2框架

    Struts最早是作为Apache Jakarta项目的组成部分,项目的创立者希望通过对该项目的研究,改进和提高JavaServer Pages .Servlet.标签库以及面向对象的技术水准.最初的 ...

  6. 从零打造在线网盘系统之Struts2框架配置全解析

    欢迎浏览Java工程师SSH教程从零打造在线网盘系统系列教程,本系列教程将会使用SSH(Struts2+Spring+Hibernate)打造一个在线网盘系统,本系列教程是从零开始,所以会详细以及着重 ...

  7. 什么是MVC模式?   

    MVC (Model View Controller) 是一个设计模式,使用MVC应用程序被分成三个核心部件:模型.视图.控制器.它们各自处理自己的任务.M是指数据模型,V是指用户界面,C则是控制器. ...

  8. struts2的MVC模式

    MVC是一种架构型模式,它本身并不引入新的功能,只是用来指导我们改善应用程序的架构,使得应用的模型和视图相分离,从而得到更好的开发和维护效率. 在MVC模式中,应用程序被划分成了模型(Model).视 ...

  9. 第九十七天请假 PHP TP框架 MVC模式

    MVC : M->Model 模型(数据层)     V->View 视图(视图层)  C->Controller 控制器(逻辑层)            M : 操作数据(连接数据 ...

随机推荐

  1. 使用EF+ASP.NET MVC+Bootstrap开发一个功能强大的问卷调查系统

    功能简介 支持七大题型 下拉选择题.单选题.多选题.填空题.数字题.问答题.组合/矩阵题(单选组合.多选组合.填空组合.数字组合) 题库支持 每个问卷都要设置姓名.年龄.性别.学历,怎么办?题库帮您轻 ...

  2. odoo开发笔记 -- 表名_name长度限制

    场景描述: odoo中定义模型的时候,系统会根据参数_name="********" 按照一定的系统规则自动生成表名; 最近开发过程中发现,_name参数的字符长度不能超过64位, ...

  3. PHP计算连续签到天数以及累计签到天数

    代码如下: /** * 统计连续签到天数以及累计签到天数 * @param string $user_long_id 用户ID * @return array 一维数组 */ function sig ...

  4. HashMap source code view(1)

    前言 HashMap source code view 类注释 Hash table based implementation of the Map interface. This implement ...

  5. cookie、session总结

    前几天在调试第三方支付接口时碰到一个session失效问题,用了几天时间才搞明白,现在回想一下,主要还是由于cookie和session这一块的一些基本概念没有搞清楚,现总结一下. 浏览器使用HTTP ...

  6. Unity3D热更新之LuaFramework篇[03]--prefab加载和Button事件

    在上一篇文章 Unity3D热更新之LuaFramework篇[02]--用Lua创建自己的面板 中,我介绍了LuaFramework加载面板的方法,但这个方法并不适用于其它Prefab资源,在这套框 ...

  7. RPC框架--missian框架

    Missian简介 注:(创始者不明,应用于sina下面的公司(爱问)) Missian是一个构建于Mina和Hessian基础上的异步RPC框架,能够兼容HTTP协议和TCP协议,能和Hessian ...

  8. React 中无用但可以装逼的知识

    最近看了Dan Abramov的一些博客,学到了一些React的一些有趣的知识.决定结合自己的理解总结下.这些内容可能对你实际开发并没有什么帮助,不过这可以让你了解到更多React底层实现的内容以及为 ...

  9. Swing——布局管理器

    前言 在编写图形界面时,总是需要考虑的就是组件放在哪里,组件怎么大才合适.在Swing中就有现成的布局管理器帮我们做这些事情,我们不必写代码去一一安排.下面将介绍什么是布局管理器.Swing中常用布局 ...

  10. retry重试常见场景及实现

    当我们的代码是有访问网络相关的操作时,比如http请求或者访问远程数据库,经常可能会发生一些错误,有些错误可能重新去发送请求就会成功,本文分析常见可能需要重试的场景,并最后给出python代码实现. ...