struts2请求处理过程

在这里插入图片描述

tomact启动的时候先加载web.xml,实例化strutsPrepareAndExecuteFilter过滤器 ,加载struts.xml配置文件
浏览器发送请求 某某.action 请求到达过滤器,过滤器从struts.xml里面找到匹配的action,找到以后实例化对应的类。
调用方法,根据返回值找到对应的视图。把视图响应给浏览器

struts2框架是多例的,每个请求到达第七部都会实例化一个自己的对象,因此是线程安全的。
但是servlet是单例的

但是struts2核心过滤器只会解析.action 和没有后缀的请求url,写。jsp不会解析。但是一样会拦截,因此这个过滤器作用是拦截请求,并解析请求,然后匹配。

请求全都是被封装到HttpServletRequest对象里面,然后才给servlet或者struts2发送。

在这里插入图片描述

然后紧接着,核心过滤器将url解析不匹配之后,记着不匹配。调用actionMapper对象,进行动作映射。,也就是匹配action里面的值和url里面的是否一致。然后匹配成功后,请求再次走到核心过滤器,由核心过滤器调用,configurationManager类解析struts.xml,创建动作类的代理类对象。这个动态代理的作用是增强请求功能,也就是做一个拦截器,增强我们动作方法action。
这个请求经过拦截器,到action对应的方法里面,找到jsp页面。然后jsp反向经过拦截器,走出去。拦截器走完成后,结果由response对象接受,经过核心过滤器后,响应给浏览器。

请求处理过程讲完了,下来到了最重要的配置文件上了。
在这里插入图片描述

第一个default.properties在struts-core。jar里面 开发者模式开启了,如果修改了struts的配置文件,可以不用重启服务器。
第二个struts-default.xml 里面配置了很多bean 拦截器

第三个。struts.xml的配置
在这里插入图片描述

在这里插入图片描述
给前端传值,都是使用request对象,项目里面看不到,因为这个对象被写在其他方法里面了,然后动作类继承这个方法。
而两种获取request方法,第一种继续ActionSupport类,使用ServletActionContext。getRequest();
第二种,实现ServletRequestAware 实现这个接口,我们只需要加上set方法即可。拦截器给我们把request对象实例化了
第三种,ActionContext.getActionContext().getRequest();

其实这三种的本质都是一种,ActionContext.getActionContext().getRequest();
前后传值问题:

从前面传值涉及,类型自动转换,post请求解决中文乱码,但是get请求不解决,也就是我们项目默认post请求。
1.没有实体
jsp: name age
java: private strint name; get set 即可
2.一般使用实体类的时候,是我们需要动数据库的时候’
user: name age set get
action: private User user; set get user.getName(); 将实体类定义在action中,用实体类调用
当然这样写是错误的,jsp:user.name user.age
上面的是使用request域空间从前端往后台传值,以及从后台往前台传值

ognl表达式
后台值====前台显示 <s:property value="" /> 如果 value="%{’ ‘}" 这里显示的是字符串
如果 value=" %{ } " 这里是表达式
如果 value=" " 这也是表达式
为什么需要这个%{} %{’ '} 可以把多个表达式连在一起显示

访问servlet的作用就是:
获取request前台传过来的值
request.setAttribute( ); 给前台传值

总结:
属性驱动,模型驱动这些是从前台往后台传值 的方式 ,
ognl是从后台往前台传值 比如 <s:property value=" " />
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值