传智播客学习之面试知识点总结struts

来源:互联网 发布:cnc编程工资高吗 编辑:程序博客网 时间:2024/05/16 19:04

这段时间,陆陆续续都有同学找到工作,然后到班级和我们这些还在努力奋斗的人分享面试心得,从他们分享过程中,我总结了几个常见的问题,今天和大家分享一下。

1.<logic:forward>与<logic:redirect>的区别

区别类似forwad和redirect的区别,由于之前的博客已经总结完了,这里就不再重复,这里主要讲讲他们的用法吧。

应用场景:我们想输入项目的根目录的时候,就出现网站的首页

这里我们可以用<jsp:forward>可以实现相应的功能,但是在页面的代码我们要写出完整路径名,如果我们不直接写出完整路径名,怎么实现呢?

用<logic:forward>标签实现

在struts配置文件中配置一个forward,他的值就是那个我们要转向的页面,然后再页面使用<logic:forward>标签,用name属性的值即为forward的name的值。

注意:

1)这个标签不要写到html中,没有任何意义,程序效率也低,如果有html代码,他会解析html代码到web容器中,当发现有<logic:forward>标签,那么他会清空web容器中的代码,然后再转向其他页面。

2)<global-forwards>元素必须放在<action-Mapping>元素前面

<logic:redirect>

①forward属性:同前面标签用法,但是与前面的内部原理不一样,除了地址栏不同,其次这个是一个新的请求

②page属性:内部的一个页面,直接写那么我们要访问的页面

③herf属性:指定一个完整路径(可以是外部的地址或者内部地址,但是都必须是完整路径,哪怕是程序内部)

2.请你描述一下struts框架从页面请求到最后页面显示整个过程。

Struts是一个严格遵守mvc模式的web层框架,其实可以理解为它就是一个大大的servlet,这个servlet叫ActionServlet,通常我们会在web.xml文件中配置将符合某种特征的所有请求交给这个servlet处理,然后这个Servlet再参照一个配置文件(通常为WEB-INF/Struts/struts-config.xml)将各个请求分配给不同的action去处理,然后当Actionservlet把请求给action处理前,他会参照action的name属性以及scope属性配置将请求参数封装成一个对应formbean对象(先去对应scope中查实例,没有实例化),在封装之前,会先调用reset方法进行复位,有时我们可以根据业务需求,在这里做点文章当调用了reset方法后才会调用相应属性的setter方法,然后参照action的validator属性,true则去执行相应的校验方法,false不执行。只有通过校验后才将这个formbean对象传递给action的excute方法,否则,返回一个错误页面,这个错误页面我们可以通过input属性指定。当完成这一系列操作后,ActionServlet才会带着他的礼物(formbean对象)去找相应的action,执行相应的excute方法即派发请求。在执行excute方法中我们可能会去调用一些业务层方法,得到一些需要返回给客户端的数据,执行完后,action也会同时回赠一个礼物(ActionFoward)给ActionServlet。然后ActionServlet会根据配置文件关联到一个就是jsp页面,通常我们会将一些客户端需要的数据存到作用域中,然后通过JSP的相关技术在页面进行显示(EL JSTL标签 Struts标签)。

原创粉丝点击