1.struts2=struts1+webwork
是实现MVC表示层的web框架,主要作用是页面展示,接收请求,分发请求。(SpringMVC)
运行机制:
1>.客户端在浏览器中输入一个url地址;
2>.这个url请求通过http协议发送给tomcat;
3>.tomcat根据url找到对应项目里面的web.xml文件;
4>.在web.xml里面会发现有struts2的配置;
5>.找到struts2对应的struts.xml配置文件;
6>.根据url解析struts.xml配置文件就会找到就会找到对应的class;
7>.调用完class返回一个字符串string,根据struts.xml返回到对应的jsp;
2.使用struts2框架流程
导包(导入需要的struts2的包)→配置web.xml(主要是做映射,通过web.xml配置找到对应的struts.xml配置文件)→在src里新建,从包里面复制配置dtd的头文件,然后进行配置+action的配置(名字,类名,结果集)
主要相当于取代servlet,减少servlet数量。
3.strtus tag 内部不支持EL表达式
可以使用set标签,当前页面设置一个变量name表示变量的名称 value变量值
VlaueStack struts值栈
struts控制器,控制器会给每一个请求都创建一个valueStack对象
4.Action和Servlet的比较
servlet单例模式(第一次请求的时候先判断当前的容器是否存在请求的servlet,如果不存在则创建并初始化servlet,如果存在的话,直接调用service→dopost/doget处理请求,通过response响应客户端)
servlet一个实例对应多个请求
Action每一次请求服务器都会去创建一个新的Action的实例,struts控制器会销毁当前Action实例。
servlet中不推荐使用全局变量(线程不安全)
Action(参数都是全局变量)
请求到达struts的核心控制器,核心控制器会去创建新的Action实例(全局变量),先去把当前Action实例的状态清空,下来再初始化参数。
5.测试代码
web.xml配置
[html] view plain copy
struts
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
struts
*.action
struts.xml配置
[html] view plain copy
loadAll_book
/
/error.jsp