struts2 学习日记1

struts2 简介

struts2的前身可以说是framework。strut1作为当时很流行的框架,但是有很多的不足之处,framework出生后,它带来了很好的框架,但是很多人已经习惯了strut1.所以问津framework的人不多。后来framework被apache收购,改名为struts2.这就是struts2的由来

struts2比struts1的优点之处

struts2的核心是基于xwork的,struts2使用了ognl表达式语言,a.用于更灵活的访问对象中的各种属性。b.在jsp页面中访问session或request内容时,提供了更加简便的方式,而且让我们使用标签的方式去遍历或迭代。减少了jsp中java代码的数量

struts2理论知识:

framework是基于http协议的web框架(因为它是基于请求响应(request-response)模式的应用)

1.framework的逻辑结构:

(1)控制器(controller):相当于中央调度器,它的所有处理都由他来完成,(j2ee用servlet事先控制器)

(2)业务逻辑层:提供基础组件供开发人员完成真正的业务实现

(3)数据逻辑层(Data
logic):没有提供,struts2只是提供了前端到服务器端的交换过程,也就是基于web端的交换过程

struts1的视图层就是jsp。

struts2由jsp taglib 和 servlet组成。基于struts2框架的web设计模式基本上符合jsp
model2(jsp model2是MVC设计模式的一种变化)的设计标准。

这时不得不说下jsp的三种模式:1jsp:html+java代码

2jsp
model1:html+java代码+javabean

3jsp
model2:html+java代码+javabean+servlet

struts2是建立在jsp和servlet之上的,对他们做了良好的封装,用于web服务器层端

最后说一下struts2的工作流程

结合图

首先我们知道form表单中action值能够被struts接受,若action中值没有后缀名,则此默认为.action

form表单提交,向struts2提交请求,首先被struts的过滤器接受到,然后再去struts.xml文件中寻找对应名字为***的action。再由action中对应的class去处理提交来的请求,在class文件中将成员变量生成对应的getter和setter方法。用于得到页面上面的值和将值response到页面上。然后去执行处理数据的方法(默认的是execute()方法,也可以在astruts.xml的对应action中设置method方法)此方法将返回一个字符串给struts.xml中对应的action。然后在action中寻找result的名字为返回字符串的值,然后返回到对应的页面

其实
其实,说白了就是匹配,找到对应的信息,servlet由tomcat管辖,而struts是由过滤器管辖,所以过滤器相当于controller(控制器)。其中set和get方法是通过反射机制动态生成的,而不是真正存在,在setter执行完之后,将信息放到request作用域中。

过滤器是用来接管我们的请求的、

通过查看过滤器文件,得知,过滤器实现了dofilter、destory方法

时间: 2024-07-31 21:31:53

struts2 学习日记1的相关文章

学习日记之状态模式和Effective C++

状态模式(State):当一个对象内在状态改变时,允许改变其行为,这个对象看起来像是改变了其类. (1),状态模式主要负责解决的是当控制一个对象转换的条件表达式过于复杂时的情况.把状态的判断逻辑转移到表示不同状态的一系列类中,可以把复杂的判断逻辑简化. (2),状态模式的好处是将与特定状态相关的行为局部化,并且将不同状态的行为分割开来. (3),将特定的状态相关的行为都放入一个对象中,由于所有与状态相关的代码都存在于某个ConcreteState中,所以通过定义新的子类可以很容易地增加新的状态和

学习日记

五一耍了三天,自己的计划有泡汤,那种制止力哪里去了,不过我认真起来还有有废寝忘食的时候,不过希望这种时候多一点,回家妈妈告诉我,她给老师打电话了的,老师说了我的一些情况,不过我没有老师说的那么好,学习在班上算中等.我觉得还算不上吧!任重而道远吧. Java中有个比较重要的类Properties(Java.util.Properties),主要用于读取Java的配置文件,各种语言都有自己所支持的配置文件,配置文件中很多变量是经常改变的,这样做也是为了方便用户,让用户能够脱离程序本身去修改相关的变量

struts2 学习记录 之 国际化

struts2 接下来是国际化,如果一个系统想要被多个国家的人所用就不得不考虑国际化的问题,如果为每一个国家都开发一套系统维护起来会很麻烦,所以就有了个思想,那就是把动态的,用不同语言展示的部分,放到配置文件中,动态的从文件里读取想要展示的内容,不同国家的人就得到了不同的展示,这是一个很好的思想,所以我把它记录一下了,嘻嘻... 首先 struts2 要把它的配置文件写好,以中文和美式英语为例,配置文件如下: 配置文件是以键值对的形式存在的,且以properties结尾,命名也有一定的格式,如t

struts2 学习记录 过滤器 国际化

struts2接触不是一天两天了,但是一直没有用它做什么项目,但老师确一直说它有很大的学习价值,所以还是把我学习到的东西给记录一下,记录的东西没有规律,只是给自己留个备份, struts2中最关键的是action,action可以用来传值,用起来很方便,它可以用el表达式在jsp页面上展示出来,也可以用ognl,el只能表达作用域里面的值,而struts2里面还有个放数据的地方叫做ActionContext,这个类里面可以放不在作用域里的键值对,但是el表达式还是可以获取到,但是效率很低,所以尽

学习日记之解释器模式和Effective C++

解释器模式(interpreter):给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子. (1),如果一种特定类型的问题发生的频率足够高,那么可能就值得将该问题的各个实例表述为一个简单语言的句子.这样可以构建一个解释器,该解释器通过解释这些句子来解决该问题. (2),当一个语言需要解释执行,并且你可将该语言中的句子表示为一个抽象的语法树时,可使用解释器模式. (3),容易改变和扩展文法,因为该模式使用类来表示文法规则,你可以使用继承来改变和扩展该文法

学习日记之中介者模式和Effective C++

中介者模式(Mediator):用一个中介对象来封装一系列的对象交互.中介者使各对象不需要显示地相互引用,从而使其耦合松散,而且可以独立地改变他们之间的交互. (1),中介者模式很容易在系统中应用,也很容易在系统中误用.当系统出现多对多交互复杂的对象群时,不要急于使用中介者模式,而要反思你在系统的设计上是不是合理. (2),中介者的出现减少了各个对象的耦合,使得可以独立地改变和复用各个对象和中介者. (3),由于把对象如何协作进行了抽象,将中介者作为一个独立的概念并将其封装在一个对象中,这样关注

学习日记之职责链模式和Effective C++

职责链模式(Chain of Responsibility):使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系.将这个对象连成一条链,并沿着该条链传递该请求,直到有一个对象处理它为止. (1),当客户提交一个请求时,请求时沿着链传递直到有一个 ConcreteHandler 对象负责处理它. (2),接收者和发送者都没有对方的明确信息,切链中的对象自己也不知道链的结构.结果是职责链可简化为对象之间的连接,它们仅需保留一个指向其后继者的引用.而不惜保留它所有的候选接收者的引用

学习日记之单例模式和Effective C++

单例模式(Singleton):保证一个类仅有一个实例,并提供一个访问它的全局访问点. (1),通常我们可以让一个全局变量使得一个对象被访问,但它不能防止你实例化多个对象.一个最好的办法就是,让类自身负责保存它的唯一实例.这个类可以保证没有其他实例被创建,并且它可以提供一个访问该实例的方法. (2),lock 是确保当一个线程位于代码的临界区时,另一个线程不进入临界区.如果其他线程试图进入锁定的代码,则它将一直等待,知道该对象被释放. (3),双重锁定解决效率问题. (4),C#与公共语言运行库

struts2学习笔记(二)—— 获取登录信息及计算在线人数

实现目的: 1.点击"Login"的超链接,进入登录页面 2.填写登录信息,提交表单,将用户信息保存进Session 3.显示用户名,并计算在线人数 4.点击"Logout"的超链接,在线人数减一,并使Session失效 Struts2实现: 1.配置web.xml文件 <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http:/