开源框架之struts2笔记归纳张慧讲师_第1页
开源框架之struts2笔记归纳张慧讲师_第2页
开源框架之struts2笔记归纳张慧讲师_第3页
开源框架之struts2笔记归纳张慧讲师_第4页
开源框架之struts2笔记归纳张慧讲师_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

=Day04=1.回顾1)视图(jsp)到业务控制器(action)数据的传递,为action注入属性eg:在action中有一个user属性,2)在struts.xml中配置静态的参数,为action注入属性值eg:4/action.setPageSize(4)4/action.getPageinfo().setPageSize(4);3)ognl valueStack struts2标签a、struts2运转流程:客户端浏览器提交请求,请求业务控制器,struts2控制器接收到请求,创建valueStack对象,并且把valueStack对象放入request作用域中,接着创建业务控制器action的对象,同时把action对象放入valueStack,控制器调用action的业务方法,默认调用execute,然后由业务控制器action调用模型,模型返回结果给业务控制器action,action接收到模型返回的结果,再把result的name返回给控制器,控制器按照result的配置定位视图(jsp),最后jsp响应给浏览器.在视图(jsp)中使用struts2标签和ognl表达式进行数据的输出.2.valueStack1)valueStack是值栈,是一个栈的结构,是xwork对ognl的封装.2)valueStack在request作用域中,request.setAttribute(struts.valueStack,valueStack)3)在视图(jsp)使用查看valueStackeg1:a.首先从request作用域中找到valueStackb.传递ognl表达式user到valueStack中的ognl引擎,ognl引擎进行解析,ognl引擎到root对象中获取user属性值,并且把值返回.eg2:a.首先从request作用域中找到valueStackb.传递ognl表达式#user到valueStack中的ognl引擎,ognl引擎进行解析,ognl引擎到context对象中获取user键所对应的值,并且把值返回.4)struts2如何去支持el,如何去支持request.getAttribute(attr1)a.把request对象类型输出b.附加源代码,查看实现结论:struts2封装了一个request的类StrutsRequestWrapper,这个类继承了HttpServletRequestWrapper implements HttpServletRequest,struts2在StrutsRequestWrapper中重写了getAttribute(String s),如何重写的:从request的作用域中拿到valueStack,再从valueStack中查找属性名所对应的属性值,再把值返回.在struts2框架整个运转过程中,request对象类型是:StrutsRequestWrapper3.业务控制器action如何访问reqeust,session以及application4.result的常用类型=Day05=1.回顾1)什么是MVC:模型、视图、控制器2)什么是struts2:struts2基于mvc设计模式,实现了复杂的mvc控制流程,方便使用者。3)struts2工作流程:应用运行过程中,struts2控制器完成的工作,对应图struts2.jpg:第一步:其中a,b是javaweb容器处理流程a.浏览器发送请求地址urlhttp:/localhost:8080/app/sys/user?user.userid=12到web容器tomcat;b.tomcat按照web.xml的配置,把请求交给struts2控制器;c.struts2控制器加载struts_default.xml,struts_plugin.xml,struts.xml;d.struts2控制器分析请求地址url,找到namespace=“/sys”的package,并在此pagckage下找到action的name=“user”的action;e.创建业务控制器action的实例f.struts2控制器查看请求request中是否带参数,如果带有参数,则获取到参数值填充到action的属性中,调用action的getUser()方法;查看user对象是否为空,为空则创建user对象,调用setUser(User)方法;接下来调用user的setUserid(Integer id)方法;完成action的User属性值的注入。g.struts2控制器查看action是否实现了获取web元素的接口,如果实现了,则把action转为相应的接口类型,然后调用对应的set方法,为action注入所需的web元素。 第二步:struts2控制器按照struts.xml中的配置调用业务控制器action的业务方法,默认调用execute()方法。 第三步:业务控制器action调用模型(dao) 第四步:模型(dao)访问数据库 第五步:数据库返回结果给模型(dao) 第六步:模型(dao)返回结果给业务控制器action 第七步:业务控制器action返回result的name给struts2控制器 第八步:struts2控制器按照struts.xml的配置,找到result的name对应的视图(jsp).jsp中使用struts2标签、ognl表达式访问ValueStack。 第九步:视图(jsp)响应到浏览器。2.pageInfo3.response字符集的问题4.登录1)模型,userdao增加方法User selectUser(String username,String userpass);2)业务控制器Action,增加方法String login();a.调用模型userdaoselect userid,username,userage,userregtime from userswhere username=? and userpass=?b.往session中保存user对象c.返回result的named.写login.jspe.写loginSuccess.jspf.在struts.xml中配置了全局的result/login.jsp注意:采用重定向到页面的类型e.在struts.xml中为action配置了result,name是loginSuccess/loginSuccess.jsp注意:登录成功后也采用重定向的方式进行跳转.5.练习,使用application记录用户访问系统的次数.1)写CountAction,获取到application,Map类型,接口注入2)在CountAction写一个业务方法,execute3)在execute中判断是否是第一次访问if(application.get(count)=null)/第一次访问application.put(count,1);else/不是第一次访问Integer count=(Integer)application.get(count)+1;application.put(count,count);return success;4)在success.jsp中6.result的常用类型dispatcher:转发到页面redirect:重定向到页面redirectAction:重定向到action第一个action重定向到第二个action,第二个action需要第一个action传递参数过去,怎么办?解决:a.struts.xml中使用ognl表达式获取第一个action中的属性值;b.通过url传参的方式把属性值传递给第二个actionredirect2$idchain:转发到actionjson:json字符串a.导入struts2-json-plugin-.jarb.查看此jar中struts_plugin.xml,该文件中配置了json的typec.创建JsonAction,增加一个name属性,execute返回successd.配置struts.xml在jsonAction配eg1:使用javascript输出json字符串中的内容a.创建testJson.jsp页面b.clickc.m1():创建ajax引擎对象,使用该对象请求test/json,获取响应值reponseText,把responseText转成javascript对象d.使用javascript输出eg2:延续eg1a.在JsonAction中增加属性List strList;并放入元素.b.在testJson.jsp中,使用javascript,alert(xhr.responseText)stream:流,验证码,下载eg1:验证码,在页面有验证码输出a.创建Action,StreamAction,在action中增加属性java.io.InputStream input,增加input的set和get方法b.把验证码.txt中的代码拷贝到StreamAction类体中c.在StreamAction中增加业务方法execute,在方法中写三行代码byte image=randomImage();this.input=new ByteArrayInputStream(image);return Action.SUCCESS;d.在struts.xml中配置inputimage/jpeg=Day06=1.回顾1)登录2)统计用户访问次数3)result的常用类型a.dispatcherb.redirectc.redirectActiond.chaine.json导jar包f.streaminputimage/jpeg2.标签1)UI标签(ui:user interface)常用的UI标签注意:UI标签中通用属性name,cssClass(对应html中的class),cssStyle(对应html中的style)在struts.xml中配置常量a.form:theme(simple),namespace,action,methodb.textfield:maxLength,size,readonlyc.passwordd.submite.textarea:cols,rowsf.checkbox:name,fieldValueg.checkboxlist:list,valueh.radioi.select:list,listValue,listKey,headerValue,headerKey第一种:form表单中控件的数据固定1.UiInput.jsp2.UiAction3.UiSuccess.jsp第二种:form表单中控件的数据来自于业务控制器action2)非UI标签perty:value,escape,defaultb.action:name,executeResult,varc.iterator:value,var,count,index,first,modulus(n),statusd.date:name,formate.url:action,v

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论