框架的实现原理 我已经学了两周的struts了 1 和 2都在学 分别也在找它们的不同,现在有个问题不明白,就是它们的实现原理 像struts2 在struts.xml里配置一下就能把页面上的值复到Action里,我想问一问这是不是用了动态代理的原理来实现的,还有就是struts1中的form是不是也是这一个原理,请大家说明一下谢谢......... 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 从web.xml看起 <servlet> <servlet-name>action</servlet-name> <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>可知道Struts action也是 servletorg.apache.struts.action.ActionServlet extends javax.servlet.http.HttpServlet学了jsp+servlet就知道了Struts就是一种servlet封装还有Struts的自定义标签,自己不是也可以定义如果你认为自己比它写的好的话。 我最近也在看这个,原来一直用的是struts1,现在把我的感觉跟你说说 现在的struts2的核心是已经改变,配置也很简单,流程就是客户端提交一个(HttpServletRequest)请求,请求被提交到一系列(主要是三层)的过滤器(Filter),最后到 FilterDispatcher。 FilterDispatcher是控制器的核心,就是mvc中c控制层的核心。FilterDispatcher询问ActionMapper是否需要调用某个Action来处理这个(request)请求,如果ActionMapper决定需要调用某个Action,FilterDispatcher把请求的处理交给ActionProxy。ActionProxy通过Configuration Manager(struts.xml)询问框架的配置文件,找到需要调用的Action类. action继承AbstractAction,在这里可以注入java对象,也可以写属性,省去form了。也可以写其他的方法,比如CURD等动作!只有在配置吧方法名写上就可以了。struts2聪明的很 会自己找的!下来说其他的东西:看下面代码不通的两个jsp的form,第一个jsp的form<s:form name="editForm" action="save" validate="true" method="get"> <s:textfield label="书名" name="book.bookName"/> <s:submit value="保存" /></s:form>第二个jsp的form<s:form name="editForm" action="save" validate="true" method="get"> <s:textfield label="用户名" name="user.name"/> <s:submit value="保存" /></s:form>他们的action都一样,只是name不一样。 但是他们到后台为什么能找到各自的action呢,我觉得这个应该跟 name有关,然后找各自的Action。这个你可以试试。另外,到现在我还没找到统配 struts-*.xml 这样匹配的东西,后面找到了 再跟你说!先到这,如果你还想知道struts1的话,我再跟你说说! action的基类 从request中取得所有提交的参数列表 有这方法。配置文件中找到提交的action对应的form 反射把根据 参数列表名字调用form set方法把值附进去在你的action中 强制转换 (XXForm)form 就可以得到你要的form懒的看源码 应该差不多的道理 自己写也应该差不多是这么个流程 先都是是 提交给actionServlet 再 调用对应的action action基类中有方法实现以上功能。 补充上面的 struts2用的是 拦截器 当然赋值 有的 类反射 怎么 用JS控制该页面在3秒后自动关闭 事务没提交 用户登陆时更新登陆时间失败的疑问? [急] Spring+JPA+Hibernate 查询不返回结果 刚学hibernate关于hibernateTemplate有一个疑问 Ehcache并发访问问题 一个菜鸟的问题!! 请问在java中能否锁定某个方法? 求教XML简单问题! java的特性 Ejb SPRING中判断失效的问题!
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
可知道Struts action也是 servlet
org.apache.struts.action.ActionServlet extends javax.servlet.http.HttpServlet学了jsp+servlet就知道了Struts就是一种servlet封装还有Struts的自定义标签,自己不是也可以定义如果你认为自己比它写的好的话。
现在的struts2的核心是已经改变,配置也很简单,
流程就是客户端提交一个(HttpServletRequest)请求,请求被提交到一系列(主要是三层)的过滤器(Filter),最后到 FilterDispatcher。
FilterDispatcher是控制器的核心,就是mvc中c控制层的核心。FilterDispatcher询问ActionMapper是否需要调用某个Action来处理这个(request)请求,如果ActionMapper决定需要调用某个Action,FilterDispatcher把请求的处理交给ActionProxy。ActionProxy通过Configuration Manager(struts.xml)询问框架的配置文件,找到需要调用的Action类. action继承AbstractAction,在这里可以注入java对象,也可以写属性,省去form了。也可以写其他的方法,比如CURD等动作!只有在配置吧方法名写上就可以了。struts2聪明的很 会自己找的!下来说其他的东西:看下面代码不通的两个jsp的form,
第一个jsp的form
<s:form name="editForm" action="save" validate="true" method="get">
<s:textfield label="书名" name="book.bookName"/>
<s:submit value="保存" />
</s:form>
第二个jsp的form
<s:form name="editForm" action="save" validate="true" method="get">
<s:textfield label="用户名" name="user.name"/>
<s:submit value="保存" />
</s:form>
他们的action都一样,只是name不一样。 但是他们到后台为什么能找到各自的action呢,我觉得这个应该跟 name有关,然后找各自的Action。这个你可以试试。另外,到现在我还没找到统配 struts-*.xml 这样匹配的东西,后面找到了 再跟你说!先到这,如果你还想知道struts1的话,我再跟你说说!
当然赋值 有的 类反射