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. 深度学习Tensorflow生产环境部署(下·模型部署篇)

    前一篇讲过环境的部署篇,这一次就讲讲从代码角度如何导出pb模型,如何进行服务调用. 1 hello world篇 部署完docker后,如果是cpu环境,可以直接拉取tensorflow/servin ...

  2. mysql原生sql盘点

    select*from (select*from test1 union all select*from test2 ) //两个查询的数据行数需要对应一致,且名字as 一致. 1.如果直接用如下sq ...

  3. jQuery之animate()用法

    最近在学习jQuery,看到一个很有意思的函数animate(),但是在网上却没有查到相关的详细资料,于是打算参考jQuery API,自己总结一下. 概述 animate() 方法执行 CSS 属性 ...

  4. C语言中指针中的值赋值给数组

    如果把各种语言做个冷兵器类比的话,C语言一定是刀客的最佳工具.入门很简单,但是要是能把它熟练运用,那就是顶尖级别的高手了. 用了那么多年的C语言,发现自己还是仅仅处于熟练的操作工.今天遇到了一个bug ...

  5. Python中函数和模块的体验与使用

    函数基础 目标 函数的快速体验 函数的基本使用 函数的参数 函数的返回值 函数的嵌套调用 在模块中定义函数 01. 函数的快速体验 1.1 快速体验 所谓函数,就是把 具有独立功能的代码块 组织为一个 ...

  6. spring boot整合 springmvc+mybatis

    需要以下依赖 <dependencies> <dependency> <groupId>org.springframework.boot</groupId&g ...

  7. jetty8 text/plain默认字符编码的坑

    今天在测试一个content-type为text/plain的API时发现后端requestBody乱码了,而线上正常. 自己本地使用jetty8版本,插件自带版本,而线上使用jetty9. 最开始没 ...

  8. 解决spring的bean同名冲突

    今天工作发现当不同模块下有相同bean然后又被同一个模块引用的话就会导致bean同名冲突,如下: 解决方案很简单,如果是xml配置直接修改bean的名称即可,如果是注解形式修改如下: 只要在servi ...

  9. Ubuntu安装Python2.7,nodejs,Redis

    安装Python2.7 sudo add-apt-repository ppa:fkrull/deadsnakes-python2.7sudo apt-get update sudo apt-get ...

  10. TCP/IP 笔记 - TCP数据流和窗口管理

    TCP流量控制机制通过动态调整窗口大小来控制发送端的操作,确保路由器/接收端消息不会溢出. 交互式TCP连接 交互式TCP连接指该连接需要在客户端和服务器之间传输用户输入信息,如按键操作.短消息.操作 ...