JAVA开发Java 杂谈互联网科技

Java面试系列—框架篇(Struts2)

2018-07-14  本文已影响3人  奋斗的蛐蛐

先整理出一批面试笔试面试题。后续将继续更新,如果本文中出现问题,请及时与蛐蛐联系,蛐蛐马上继续修改,后续也会同步更新。

如何在web.xml中添加核心过滤器

<filter>
    <filter-name>struts2</filter-name>
    <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>struts2</filter-name>
    <url-pattern>/*</url-pattern>
 </filter-mapping>

配置struts核心过滤器两种方式

@WebFilter("/*")
public class MyFilter extends StrutsPrepareAndExecuteFilter{
}

Action类的三种配置方式

继承ActionSupport类或实现了Action接口的默认5个常量的含义

拦截器

拦截是struts2框架中推出专门针对于action的一种机制.可以在action执行前后完成一些事情.以ActionInvocation.invoke()为分界

什么是拦截器栈

默认情况下,所有<action>的拦截器栈是defaultStack,当自定义拦截器后默认拦截器栈不生效,如何解决?

<interceptors>
    <interceptor name="myinter" class="com.fddqq.smallming.util.MyInterceptor"></interceptor>
    <interceptor name="myinter1" class="com.fddqq.smallming.util.MyInterceptor1"></interceptor>
    <interceptor-stack name="myStack">
        <interceptor-ref name="myinter"></interceptor-ref>
        <interceptor-ref name="myinter1"></interceptor-ref>
        <interceptor-ref name="defaultStack"></interceptor-ref>
    </interceptor-stack>
</interceptors>
 <action name="show" method="show" class="com.fddqq.smallming.action.Demo1Action">
    <interceptor-ref name="myStack"></interceptor-ref>
    <result>index.jsp</result>
</action>
<interceptors>
    <interceptor name="myinter" class="com.fddqq.smallming.util.MyInterceptor"></interceptor>
    <interceptor name="myinter1" class="com.fddqq.smallming.util.MyInterceptor1"></interceptor>
</interceptors>
<action name="show" method="show" class="com.fddqq.smallming.action.Demo1Action">
    <interceptor-ref name="myinter"></interceptor-ref>
    <interceptor-ref name="myinter1"></interceptor-ref>
    <interceptor-ref name="defaultStack"></interceptor-ref>
    <result>index.jsp</result>
</action>

什么是OGNL,有什么用途?如何使用

什么是JSON?

一种轻量级数据传输格式.可以让js脚本快速解析

Struts几种获取获取到作用域对象方式

提供了原生和特有两种

Struts2中token执行流程

token执行流程.png

必须在jsp页面中提供<s:token>标签让session存放token,并产生两个隐藏域.当第一次提交表单时.token拦截器会认为是正常提交,执行完成后,把session中内容清除.此时session中没有内容.其他任何时候在去提交时,由于session中没有内容了,都认为是重复提交,最终返回invalid.token逻辑视图

注解的好处

struts2运行原理

struts2流程图.png

当发送request请求后,由ActionMapper判断请求格式是否合法,如果不合法报错,如果合法进入到核心过滤器StrutsPrepareAndExecuteFilter,之后产生ActionProxy的代理对象,代理对象会调用Configuration Manager 加载struts.xml,在配置文件查找请求的action对应的类及方法.如果不存在报404,如果存在通过 Action Invocation 调度类在执行action之前执行拦截器,默认执行defaultStack拦截器栈,struts2大部分默认功能都是通过拦截器实现的.拦截器执行完成后才开始执行action,根据返回逻辑视图名调用Result,此时不会立即响应,执行拦截器栈剩余内容,最终才会响应给客户端.

上一篇下一篇

猜你喜欢

热点阅读