struts1学习笔记

合集下载

Struts1学习笔记总结

Struts1学习笔记总结
1设定config参数的作用是设定strutsconfigxml包括了所有的struts的相关请求转发及一些资源设定的文档来源
Struts1学习笔记总结
Struts1 (1)
Struts1和Servlet的关系 (1)
创建第一个Struts1项目 (1)
例子1: (3)
总结重点:struts1的工作流程(基于MVC模式的) (7)
ActionForm和VO的区别:
一样的内容,不一样的作用
ActionForm只接收前台表单传来的数据
VO是conga后台提取的数据向前台传递
创建第一个Struts1项目
新建一个web项目,选择1.4即可
右键----MyEclipse----Add Struts Capacity
---------------Struts控制文件的路径
一.普通的Servlet的工作流程 (7)
二.Structs1的工作流程(和上面的对比记忆) (8)StFra bibliotekuts标签 (9)
Bean标签 (9)
html标签 (10)
logic标签(逻辑标记) (12)
i18n(国际化) (13)
Struts1
Struts1和Servlet的关系
Jsp+Servlet+Javabean
TLD(标签)
1)
2):显示信息
3):逻辑标签
struts-config.xml

Struts笔记

Struts笔记

Struts概念4、struts是一个开源的框架1、为什么有Struts?2、Struts的好处为什么是Web层框架Struts原理手写一个Struts//定义属性【这里有一个规范:就是我们定义属性的时候,//应该和jsp页面的控件属性一样。

如果有人提出疑问:说表单的属性名是不是一定和控件名一样?//只要保证set 和get 方法与属性名存在关联】4.Action5.Filter处理中文乱码public class MyFilter1 extends HttpServlet implements Filter {public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2) throws IOException, ServletException {// TODO Auto-generated method stubarg0.setCharacterEncoding("utf-8");//设置接受的编码arg2.doFilter(arg0, arg1);//}public void init(FilterConfig arg0) throws ServletException { // TODO Auto-generated method stub}}<!-- 配置过滤器 --><filter><filter-name>MyFilter1</filter-name><filter-class>com.mhy.filters.MyFilter1</filter-class> </filter><filter-mapping><filter-name>MyFilter1</filter-name><url-pattern>/*</url-pattern></filter-mapping>使用工具开发struts完全使用工具开发5.创建表单截图创建ActionMysqlJava EE 中三种标签标签的选择Struts jstl标签技术为什么有?Jstl标签的好处常用标签引入标签<% taglib %>Java EE 5 Libraries->jstl-1.2.jar->META-INF->c.tld案例讲解c标签c:out标签<%//这句话本应放在控制器中//如果我们的域对象中有相同的属性名,c:out 优先级是pageContext>request>session>applicationrequest.setAttribute("abc","你好1<a href=''>百度</a>") ;//session.setAttribute("abc","你好2") ;//application.setAttribute("abc","你好3") ;//pageContext.setAttribute("abc","你好4") ;User u=new User();u.setName("马海燕");u.setAge(30);request.setAttribute("user",u);%><c:out value="hello world"></c:out><h1>如何输出request/session/application/pageContext域对象的数据</h1><!-- escapeXml 用于指定按照html样式显示,默认为true【表示文本】false【html样式】 --><c:out value="${abc}" default="没有值" escapeXml="false"></c:out><h1>如何输出对象</h1><c:out value="${}"></c:out> ||<c:out value="${user.age}"></c:out><br/>${} @@ ${user.age*20}c:set 标签<body><c:set var="abc" value="你好!" scope="request"></c:set><%//上面的标签等价于//request.setAttribute("abc","你好!");%><c:out value="${abc}"></c:out></body>c:remove<body><%request.setAttribute("a","你好!中国。

Struts1几个知识点

Struts1几个知识点

Struts1几个知识点1:struts1的请求流程答:当视图中有表单提交时,通过表单的action属性传递提交的路径,一般以XXX.do结尾。

(1)当表单提交后容器(tomcat为例)会判断路径是否以.do结尾,如果是则转到中央控制器ActionServlet。

(2)再由web.xml中config找到struts1的struts-config.xml文件,在该文件中的action属性中查找path对应的值是否有前面视图中的请求路径(去掉.do),(3)如果有则判断此action中是否有name属性.(4)有则在struts-config.xml查找<form-beans>中有与name的属性值对应的FormBean类.(5)有则将视图提交的表单中的数据封装到该FormBean类中。

(6)此后在查找该action中是否有attribute键值,有则将封装好的FormBean对象放到以attribute的值为键,以该对象为值的键值对中,请求范围默认为session,但可以通过scope属性设置。

(7)之后,通过该action的type属性找到对应的类,再通过反射得到该类的对象并放到内存中。

(8)执行该类的execute方法,该方法中有四种参数,分别为:ActionMapping,ActionForm,HttpServletRequest,HttpServletResponse,其中ActionMapping对象执行程序运行结束后反向问题,通过findForward(String name)方法去到struts-config.xml 中查找上述action中的forward属性中键name对应的文件,返回到该文件。

该方法中的ActionForm参数对象保存的即为上述经过封装的表单数据。

至此,struts1请求流程完毕。

2:解释为什么用formbean(ActionForm),如何用?答:当通过表单提交数据过多,获取就会变得繁琐和重复,在对应的应用控制器的execute方法中就得多次通过request.getParameter()方法获取表单中的数据。

struts1笔记

struts1笔记

的实例。
public static ActionForm createActionForm(HttpServletRequest request, ActionMapping mapping, ModuleConfig moduleConfig, ActionServlet servlet) {
String attribute = mapping.getAttribute();
LoginForm loginForm=new LoginForm(); loginForm.setUsername("西门崔雪");
Байду номын сангаас
session.setAttribute("loginForm"loginForm)
ActionForm的底层代码
//获取ActionForm实例 -----
//获取ActionForm实例 ----3)检查该表单Bean的使用范围,查找在该范围内,是否已存在该Bean的实例。 如果已经存在,那么就重用该实例。 否则,就重新创建一个。 protected ActionForm processActionForm(HttpServletRequest request, HttpServletResponse response, ActionMapping mapping) {
private static ActionForm lookup String attribute, String ActionForm instance = nu HttpSession session = nu
if ("request".equals(sco instance = (ActionFo } else { session = request.ge instance = (ActionFo } return (instance);

Struts1_个人整理笔记

Struts1_个人整理笔记

目标:熟练运用当前流行的java开源框架:Struts、Hibernate以及Spring来构建灵活、易于扩展的多层Web应用程序。

C/S:以数据库为中心B/S:多层架构才是真正的目的B/S多层架构将显示、业务运算、数据库等功能完全分离,杜绝彼此的耦合与影响,从而实现松耦合和良好的可维护性。

✧呈现层(UI Layer/Presentation Layer)⏹Struts✧业务逻辑层(Business Layer)⏹Spring✧持久化层(Persistence Layer)⏹HibernateC/S两层模式,每个客户端需要安装软件,但C/S做的界面灵活性比较好。

何谓两层模式,因为很多业务逻辑都放到了前端(界面里都混了很多业务逻辑),另一方面数据库里有很多存储过程或触发器。

业务逻辑都用存储过程来实现,这是一个弊端Java就不会把业务逻辑放在存储过程里,一般将业务逻辑封装在中间件(java)中。

当然java 有时也会将业务逻辑放在存储过程里,这是从性能上来考虑,因为放在存储过程里,性能肯定会高一些。

B/S 三层模式,客户端通过浏览器来访问,不需要安装软件。

分层就来了,分层带来的影响就是粒度变细了,耦合度变低,复用度就提高了,扩展性能也好了,维护性也好了。

切换工作区间 file-switch Workspace WebRoot-New-other select a wizard MyEclipse-web-JSP(Basic templates)基本模板在Servlet中拿jsp页面的值,使用getParamter()在jsp页面中拿servlet值,使用getAttribute()当在web客户端发送请求时(点击submit),将请求传到web server(tomcat),tomcat负责找到你要请求的servlet(此处为TestServlet),此时servlet做什么呢,首先String userName = req.getParameter("userName");得到表单数据(通过http Request),然后UserManager userManager = new UserManager();调用业务逻辑,当然,业务逻辑方法将表单的值返回給servlet,返回查询结果后,servlet将结果设置到Request里面req.setAttribute("otherList", userList); 把userList设置到属性中,下一个页面才拿得到,接下来servlet会选择视图,将查询结果显示出来。

structs学习笔记

structs学习笔记

structs学习笔记(很详细,欢迎补充)时间:2008-03-11作者:佚名编辑:本站点击:2836 [评论]1. Struts是什么?答:1) Struts是一个开源框架,用于构建MVC架构Web应用程序;2) Struts是Jakarta项目的部分, 由Apache软件基金赞助;3) 通过使用Struts,你可在程序中清晰地分隔表现层和业务逻辑层;4) 通过提供广泛JSP标签库,Struts也提高了开发效率。

标签库解析和验证用户输入、错误处理以及国际化支持。

5) 我们将会向您展现如何使用Struts开发工具构建Struts的Web应用程序。

2. Struts资源答:为了学习更多Struts框架有关知识,请关注Struts官方网站以及用户向导: . /struts. /struts/userGuide/introduction.html3. MVC(model-view-controller)架构模式答:1) MVC架构模式在1980年由Smalltalk-80的图形用户界面库的开发者提出;2) 从此它在面向对象的用户界面和应用程序控制工具包中得到了广泛地应用,例如Struts,以及经过改良去满足特定平台需求,例如J2EE。

3) 根据MVC模式,一个软件组件(一个应用程序、一个模块等)应该将它商业逻辑和它的表现层分离;4. MVC的理由答:1) 对于相同的model你有超过一个view;2) 假如商业逻辑和它的表现层构建在一块,增加额外的view会导致相当大的中断以及增加组件的复杂性;3) 一个model有二个view的一个好的例子是一个银行应用程序,它可以通过互联网以及手机访问;4) 改变view的时候,你不希望每次改变model;5) view依赖于model,它显示给用户model的特定方面;6) 将view和model构建在一块,每次当你对view进行细小改动的时候,你不得不改动model;5. MVC模式答:这种分离可通过将组件分成以下层达到:. model层,实现商业逻辑;. view层,实现一个特定客户端类型的用户界面;. 有了这二层,我们可实现商业逻辑并且将它呈现给用户。

Struts1学习文档

Struts1学习文档

什么是框架?(Framework)框架是软件的半成品。

用来解决以下几个问题:1、设计模式问题——struts实现了MVC—Model2模式2、代码重用*****************************************************一、Struts框架属于哪层技术?主要解决什么问题?(1).Struts属于WEB层技术,主要用于替代Servlet。

(2).Struts主要用来解决一下几个问题:1、获取用户提交的数据2、对数据进行校验3、国际化的处理4、跳转5、转发与重定向6、页面的数据展示****************************************************二、Struts1框架由哪些部分组成?1.jar包(在lib中)2.一批文件(包括:struts-config.xml,tld文件-标签描述文件,validator-roles.xml 验证框架的配置文件),Struts1.3以后tld文件被添加入了jar包中****************************************************三、如何用IDE工具在项目中加入Struts框架?在向导中设置:Struts config path:配置config文件路径:默认:/WEB-INF/struts-config.xmlStruts specification:选Struts版本信息ActionServlet name:为actionURL pattern:为主控制器设置过滤哪些资源Base package for new classes:为(国际化?)资源文件创建包Default application resources:创建全局的资源文件默认名字:com.yourcompany.ApplicationResources.可以更改****************************************************四、Struts1的主控制器是什么?作用是什么?如何配置?Struts1的主控制器是个自启动的Servlet,他的配置如下:在项目的WEB-INF中的web.xml文件中:<servlet><servlet-name>action</servlet-name><servlet-class>org.apache.struts.action.ActionServlet</servlet-class><init-param> <!--为主控制器设置启动参数,加载配置文件,并对其进行解析 --><param-name>config</param-name> <!--当需要多个配置文件时,在多个文件中间用逗号隔开 --><param-value>/WEB-INF/struts-config.xml</param-value></init-param><init-param><param-name>debug</param-name><param-value>3</param-value></init-param><init-param><param-name>detail</param-name><param-value>3</param-value></init-param><load-on-startup>0</load-on-startup> <!--该主控制器设置为自启动,参数表示启动级别最高。

struts1笔记

struts1笔记

沈阅斌StrutsMvc model1Jsp+ javabeanMvc model2Jsp+Servlet+javabeanWeb应用框架JsfM workSpringHibernate……..提供1.分层工作2.改进控制器(Action代替Servlet)a)自动获得客户端提交的参数b)数据类型转换,格式验证c)数据传递和请求转发d)………………3.试图标签库和表达式语言Struts2中mvc的组成:1.模型:Javabean,ejb2.试图:Jsp,…..3.控制器FilterDispatcher,Interceptors(拦截器),ActionsStruts1主控制器ActionServlet 处理*.do结尾的请求|VStruts-config.xml核心配置文件|v业务控制器ActionActionForm(????在struts2里有没有是个争议,把actionform和action合成action了) 模型用来接收客户端提交的参数Struts1的mvc组成1.模型Javabean,ejb,ActionForm2.试图Jsp3.控制器ActionServlet,RequestProcessor,Actions写的东西以前Servlet, jsp, javabean, web.xmlStruts2Action jsp javabean struts.xmlStruts1Action jsp javabean和actionForm struts-config.xml控制器的几个基本的工作1.接收数据Struts2 增加属性和为属性提供setter方法Struts1 提供ActionForm,在ActionForm中属性和getter setter方法2.传递数据Struts2 提供属性,并且把属性保存到属性中,以及为属性提供getter方法Struts1 跟Servlet相同,通过Request传递3.转发请求Struts2 返回字符串,配置Struts1 返回一个ActionForward对象Action元素的属性说明:Path: action的访问路径,以”/”开头Type: action的类型Name: action使用的actionForm的名字.与form-bean元素的name属性取值相同. Scope: action使用的actionform存在的范围,取值为Request或session;Attribute: a ction使用的actionform存在于某个范围内的key.如果不指定此属性,则key为Name属性的值.Validate: action使用的actionform的validate方法是否被调用true为调用,false则不调用Input: struts1框架验证客户端提交的数据格式,如果验证不正确,则把请求转发到此属性所指定的页面上;Forward元素的属性说明:Name: Forward的名字,与mapping.findForward方法传入的值相同.Path: 请求转发的页面路径Redirect: 请求转发方式.,false是服务器内部跳转,true是客户端重定向ActionFormReset 用actionform是把数据恢复到初始状态Getter/setterValidate 验证Struts1的执行流程:1.客户端发送*.do请求,由主控制器接收2.主控制器将请求的处理工作委托给RequestProcessor3.请求处理器根据访问路径寻找一个对应的ActionMapping对象.如果找到,继续执行.找不到则返回404错误.4.根据ActionMapping的信息,查找或者创建一个ActionForm对象.5.请求处理器调用ActionForm对象的reset方法.6.请求处理器调用ActionForm对象的setter方法.7.请求处理器调用ActionForm对象的validate方法.如果返回一个ActionError对象,并且包含错误信息,则将请求转发到action元素input属性指定的页面,反之,继续执行.8.查找或创建一个Action对象.9.调用Action对象的execute方法,执行action.10.请求处理器处理action返回的ActionForward结果.11.响应I18n为一个软件提供多种语言版本.国际化的处理步骤:1.创建资源文件,存放多种语言类型的内容.BaseName_Language.properties简体中文:zh英文:en如:Messages.properties 默认资源文件Messages_zh.propertiesMessage_en.propertiesBaseName相同的叫做同一组资源文件2.注册资源文件<message-resources rameter="com.briup.struts.Message" />3.使用资源文件<bean:message/>4.切换资源文件1)切换浏览器的设置2)要么就在页面上设置一个按钮Native2ascii 源文件目标文件如何确定资源文件?1.如果当前session中存放了Globals.LOCALE_KEY,那么根据session中存放的语言类型寻找一个对应的资源文件.Session.setAttribute(Globals.LOCALE_KEY,Locale.CHINESE);1)访问了struts框架,如果当前session中没有存放语言类型的话,struts框架会把客户端提交上来的语言类型放到session里面.2)通过程序去往session中存放一个语言类型2.如果session里面没有存放语言类型的话,根据客户端的语言类型寻找一个对应的资源文件.Request.getLocale();返回客户端语言类型ActionForm的子类型DynaActionForm: 动态的ActionFormActionDispatchAction: Action的子类解决问题:多个表单提交给同一个action的不同方法处理实现步骤:1.Action类继承DspatchAction,提供多个处理请求的方法.方法名自定义,参数列表和返回类型与execute方法相同.2.在struts-config.xml文件中,指定action元素的parameter属性,这个属性的取值为客户端提交的一个用于表示访问方法的参数名.3.客户端提交请求时,需要提交一个额外的参数,参数名为action元素的paramater属性的值.参数值为action类中的方法名.原理:DispatchAction根据客户端提交的方法名,通过反射机制调用对应的方法.LookupDispatchAction: DispatchAction的子类解决的问题:同一个表单多个提交按钮提交给同一个action的不同方法处理实现步骤:1.Action类继承LookupDispatchAction,实现getKeyMethodMap方法,这个方法返回一个Map,Map中的key为资源文件中的key,Map中的value为action中的方法名.2.描述action的时候指定action元素的paramater属性,其值为提交按钮的名字3.将按钮的值存放到资源文件中,key跟map里面的key一样,value是方法名4.表单提交按钮的值从资源文件获得.5.解决乱码问题原理:客户端提交一个按钮的值,LookupDispatch根据这个值从资源文件中找到一个对应的key,再根据这个key从map中找到一个方法名,然后通过反射调用此方法.MappingDispatchAction: DispatchAction的子类。

struts1笔记

struts1笔记

1:学习struts之前首先简单的了解一下struts是什么和为什么使用strutsStruts1是apache软件基金组织jakarta项目的一个子项目,struts的前身是CraigR.McClanahan编写的jsp model2架构。

在所有的MVC框架中,出现最早的应用最广泛的就是struts框架。

它主要是采用servlet和jsp技术来实现的,Struts是基于sun javaee平台的MVC框架,它采用的MVC模式“分离现实逻辑和业务逻辑”的功能发挥的淋漓尽致。

广泛使用struts原因:a:建立在MVC这种公认模式上的。

Struts在M、V、C上都有涉及。

但它主要是提供一个好的控制器和一套定制的标签库上。

(所以具有MVC的一系列优点,如:结构层次分明,高可以重用性、增加了程序的健壮性和伸缩性,便于开发与涉及分工,提供了集中统一的权限控制、校验、国际化、日志等)b:开源项目,得到了包括他的发明者Craig R.McClanahan在内的一些程序大师和高手持续而细心的呵护,并接受了实战的检验,使其功能越来越大,体系日臻完善。

C:与其他技术和框架具有很好的融合性,如:spring 、hibernate等D:大大提高了开发速度2:struts原理:Model部分:Struts的Model部分由ActionForm和JavaBean组成。

其中ActionForm用于封装用户请求参数,所有的用户请求参数由系统自动封装成ActionForm对象;该对象被ActionServlet 转发给Action;然后Action根据ActionForm离得请求参数处理用户请求。

JavaBean则封装了底层的业务逻辑,包括数据库访问等,在更复杂的应用中JavaBean多代表的并非是一个简单的JavaBean,可能是EJB最贱或其他业务逻辑组件。

(注意:ActionForm并不属于model 层,而是属于控制层)View部分Struts的View部分采用JSP实现。

strust学习笔记(全)

strust学习笔记(全)

struts21.struts简介:先导入struts-blank.war到eclipse中,这是一个空的工程,把它作为模板进行开发是不是用了struts就可以抛弃servlet? struts底层仍然是servlet,其实是用了一个Filter来进行分发(在web.xml中配置)。

2.strusts配置文件到底哪个请求分给给哪个类来处理,这个在struts.xml文件中进行配置<action name="hello" class="处理这个hello请求的类">3.处理类Action类的写法一、定义一个普通类,在其中定义一个public String execute()方法,在其中写上处理逻辑,这个方法会在对应的请求过来时自动回调。

二、除此之外还可以实现接口Action,但现在暂时没有必要三、继承ActionSupport,但现在暂时没有必要4.MVC的简介struts2中,XXXAction代表了C控制逻辑,xxx.jsp代表了V视图,另外还有模型Mstrut2完全可以不去理会HttpServletRequest和HttpServletResponse,让我们从这些繁杂的Servlet的api中解放出来。

如何取出请求中的参数呢?(原来是用req.getParameter("xxxx"))Struts中只需要将Action类的属性定义为和请求参数同名即可(框架会自动读取请求参数,并自动注入到同名的属性中去),我们只需要在execute方法中将属性的值(也就是参数的值)取出来用就可以了。

如何在Action中往后面的jsp传值呢?(原来是用req.setAttribute("xxx","xxxx"))struts只需要把要传给后面的值,放在Action类的属性中,需要定义getter方法;然后在后面的jsp中用el表达式就可以取出来了Action是MVC中的C,控制;Action中的那些接收参数的属性属于M,模型。

第2章 Struts1深入学习(一)(理论)

第2章 Struts1深入学习(一)(理论)
的开始时间
int endTime=Integer.parseInt(this.servlet.getInitParameter("endTime")); //得到配置
的结束时间
得到配置参数 if (hour<startTime || hour>endTime) //说明是非上班时间 { out.print(“<script>alert(‘非上班时间不能访问本网站 '); window.opener=null;window.close();</script>"); return false; } 返回Struts1默认的处理方式 ... ... return super.processPreprocess(request, response); } }
怎样更简洁有效地实 现这样的需求? 现这样的需求? Struts提供了 提供了DispatchAction解决此类问题 提供了 解决此类问题
DispatchAction类 类
DispatchAction是Action的子类 扩展的DispatchAction类的子类不能覆盖execute()方法 通常是创建一些实现实际业务操作的方法,这些业务操作的 方法都应该和execute()方法具有同样的参数和返回类型
ActionServlet类 类
扩展ActionServlet类步骤
在web.xml文件中配置CharacterEncodingActionServlet
<servlet> <servlet-name>action</servlet-name> <!-- 修改servlet-class自定义的扩展ActionServlet --> <servlet-class> com.web.struts.action.CharacterEncodingActionServlet </servlet-class> 使用自定义的ActionServlet类 <!-- 加入字符编码配置 --> <init-param> <param-name>encoding</param-name> <param-value>gbk</param-value> </init-param> 配置初始化参数 <!—随Web应用程序的启动而加载 --> <load-on-startup>0</load-on-startup> 可以通过Servlet的getInitParameter(paramname) </servlet> 方法获得此参数值 <servlet-mapping> String encoding=this.getInitParameter("encoding"); <servlet-name>action</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping>

struts1学习

struts1学习

第五讲 Struts 学习一. Struts基本知识介绍Struts最早是作为Apache Jakarta项目的组成部分问世运做的。

项目的创立者希望通过对该项目的研究,改进和提高Java Server Pages (JSPs)、Servlet、标签库以及面向对象的技术水准。

它的目的是为了帮助你减少在运用MVC设计模型来开发Web应用的时间。

你仍然需要学习和应用该架构,不过它将可以完成其中一些繁重的工作。

如果想混合使用Servlets和JSP 的优点来建立可扩展的应用,Struts是一个不错的选择。

1. MVC框架介绍MVC即Model-View-Controller的缩写,是一种常用的设计模式。

MVC 减弱了业务逻辑接口和数据接口之间的耦合,以及让视图层更富于变化。

Model(模型)模型包含应用程序的核心功能(应用对象)。

模型封装了应用程序的状态。

有时它包含的唯一功能就是状态。

它对视图或控制器一无所知。

View(视图)视图提供模型的表示(它在屏幕上的表示)。

它是应用程序的外观。

视图可以访问模型的读方法(get),但不能访问写方法(set)。

此外,它对控制器一无所知。

当更改模型时,视图应得到通知。

Controller(控制器)控制器对用户的输入作出反应(定义用户界面对用户输入的响应方式)。

它创建并设置模型。

通常MVC框架的结构如下图:MVC框架可是,Web 应用向软件开发人员提出了一些特有的挑战,最明显的就是客户机和服务器通过HTTP协议连接,而由于HTTP的无状态连接,使得控制器不能将应用程序的改变通知视窗。

为了发现对应用程序状态的修改,浏览器必须重新查询服务器。

所以,对于Web,需要修改标准的MVC 形式。

Struts 的体系结构实现了Model-View-Controller设计模式的概念,它将这些概念映射到web应用程序的组件和概念中。

形成了开发WEB应用的过程中最常用的框架:模型――视窗――控制器(MVC)框架。

[计算机软件及应用]struts笔记

[计算机软件及应用]struts笔记

Struts学习笔记xml描述数据本身xsl修饰xmlDOMSAXstup 通过协议骨架远程对象典型的proxy代理struts:学j2ee应该朝domain model,FrameWork,Parttern,架构模式方向发展,才能深入了解掌握。

一、Domain Model领域模型:是对现实世界的对象模型是从现实世界抽取出来的一般是先把领域模型设计出来DDD领域驱动设计不像以前,上来先设计数据库,数据库是面向关系的,而java是面向对象的,先面向关系再面向对象,有点别扭ORM自动的把实例类自动转换成数据表实体对象概念,user就是实体概念,有标识值对象概念,属于实体对象的一部分,不是跟数据库的对应二、Parttern模式遇到什么事情用什么方案解决?1、设计模式,GOF设计模式,对象思维,就是把现实中的实体抽象成对象工厂,策略,代理很重要,掌握了设计模式,就有了对象的概念2、架构模式MVC架构模式3、分析模式RBAC(Roles Base Access Control)基于角色的访问控制,对权限设计的处理模型who谁用这些权限what针对哪些资源设计权限how授权给谁,怎么样授权三、FrameWork 框架框架不是一个成熟的产品,是个半成品,struts spring是给开发人员用的,是基础性的服务,就是提供基础组件,封装的是基础性的服务,才可以在各个行业通用。

是大师级的人物写出来的框架,如果我们不用框架,自己就得先写框架,然后再开发具体业务,那就太费时,用框架,我们就只考虑具体业务设计开发,struts就是一个mvc框架。

领域模型对象表现层-业务层-持久层struts spring hibernate以前:jsp -实体bean现在:jsp -采用DTO 或者VO宜于扩展:OCP,只增加相应的实现类,不用修改以前的类两层的一般是:C/S以前大量的存储都用存储过程,不适合跨平台思想B/S:呈现层,业务层,持久层,数据库层可以把界面交给界面组做业务层交给业务开发做数据库交给数据库开发做分层好处,jsp就是显示用的,不参与业务实现,javabean实现业务,分层可以复用,客户端可以是pc,也可以是手机,只是前端采用不同的html,wml实现,业务层不变JDO有收费的也有开源的,但是开源的不太好hibernate 是开源的,用的比较多springstruts 我们用struts1.2是非常经典的mvc框架webwork分析struts的源代码,深入了解mvc在javaProject下建struts目录切换 workspace 到struts建一个test_servlet项目servlet特性:前面必须有“/”<url-pattern>/servlet/TestServlet</url-pattern><url-pattern>/TestServlet</url-pattern><url-pattern>*.action</url-pattern>敲任意字符.action,如果有*了前面不用加“/”<url-pattern>*.do</url-pattern>敲任意字符.do,如果有*了前面不用加“/”<url-pattern>/servlet/*</url-pattern>servlet/后面跟什么都可以访问servlet充当一个控制的角色,mvc中的c角色配置成*.do,通过request.getRequestURI判断请求的user.do,item.do,与配置文件里配置的参数比较,通过策略模式,派发到相应的servlet类(UserServlet,ItemServlet)servlet根据请求转到对应的manager类处理,然后转到实体类,dao层统称为model层,处理的结果转到jsp页面显示MVC:jsp 充当一个显示的界面mvc中的V(view)servlet mvc中的C(control)业务逻辑层 mvc中的M(Model)structs就是实现mvc面向请求的驱动Struts1.x struts2.x webwork面向事件的驱动M2就是MVC模式drp采用的是M1,业务逻辑和表示逻辑混合,jsp充当的角色太重,不适合多于10人开发M2适合大型项目开发,MVC,jsp(v)+servlet(c)+model(m)分层的概念servlet:接受业务参数,调用model层完成操作,然后转到jsp显示结果UserManager就是一个模型,如果UserManager封装的好哪怕改成swing也可以照用,那样才体现分层的思想实体类:贫血模型,vo,pojo设置模型:UserManager就是模型层的概念,增删改查最主要区别:M1没有分层M2是细粒度分层M1适合小型项目开发M2适合大型项目开发M model ,业务逻辑view jsp,显示层,呈现层UI Layercontroller servletswing:也是分层概念,mvc观察者模式tree,model通过浏览器访问某一个servlet接受参数,把参数组织打包,形成用户对象,调用model层处理完成后,返回给servlet层,servlet传递给jsp视图层,返回给浏览器,那样用户可以看到结果。

struts1与struts2的区别Java进阶必备知识点

struts1与struts2的区别Java进阶必备知识点

Struts1与struts2的对比一.Action类·Struts1要求Action类继承一个抽象类。

Struts1的一个普遍问题是使用抽象类编程儿不是接口。

·Struts2中Action类可以实现一个Action接口,也可是实现其他接口,试可选和定制的服务成为可能。

Struts2提供一个Action-Support基类去实现常用的接口。

Action接口不是必须的,任何execute标识的POJO对象都可以用作Struts2的Action对象。

二.线程模式·struts1中Action是单例模式并且是线程安全的,因为仅有Action的一个实力来处理所有的请求。

单例策略限制了struts1 Action能做的事,并且要在开发时特别小心Action资源必须是线程安全的或同步的。

·struts2中Action对象为每一个请求产生一个实例,因此没有线程上的安全问题。

(实际上,servlet容器给每个请求产生许多可丢弃的对象,并且不会导致性能和垃圾回收问题)三.Servlet依赖·struts1中Action依赖于servletAPI,因此当一个Action被调用时HttpServetRequest和HttpServletResponse被传递给execute 方法。

·struts2中Action不依赖于容器,允许Action脱离容器单独被测试。

如果需要,struts2 Action仍然可以访问初始的request和response。

但是,其他元素减少或者消除了直接访问HttpServetRequest和HttpServletResponse的必要性。

四.可测性·测试struts1中Action的一个主要问题是execute方法暴露了servletAPI(这使得测试要依赖于容器)。

一个第三方扩展—Struts TestCase—提供了一套Struts1的模拟对象(来进行测试)。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

struts1开发学习笔记
使用一个简单的例子记录struts1开发过程。

0、 描述
主要功能描述:
index 界面上只有两个超链接,分别可以打开录入产品界面和显示产品列表界面。

newProduct.jsp 是录入的界面,searchProduct.jsp 是查询列表的界面。

ProductAction.java 是处理逻辑的action
简单描述流程图:
1、 构建环境
在Myeclipse 中,新建一个工程StrutsTest ,选择该工程,右键Myeclipse->add sruts
capapibality ,弹出界面,选择struts1.2支持。

如下图所示:
添加完struts 支持后,lib 目录下会增添struts 的jar 包、增添struts 的配置文件:
/WEB-INF/struts-config.xml 、同时在web.xml 中增添了struts 的配置。

2、 代码编写
2)创建工具类Util.java,从数据库连接池中获得连接。

需要两个步骤
第一步:在WebRoot/META-INF/下新建一个context文件,通过jndi方式配置数据源,
第二步:在util类中读取配置获得连接,util.java如下:
3)创建工具类EncodingFilter.java,自定义过滤器,并在web.xml中配置,参考web.xml
配置中内容。

EncodingFilter.java的内容如下:
4)修改web.xml,指定首页为index.jsp。

文件内容如下:最后定义了一个fileld 的过滤器,是用来过滤字符编码的,后面会提到。

6)index.jsp中提到productAction.action?method=viewAddForm,需要在
在配置文件中配置了action的实现类,以及作为上传数据时用来保存数据的form:productForm
10)searchProduct.jsp是查询结果界面,代码如下:
http://localhost:8080/StrutsTest即可访问。

相关文档
最新文档