struts2 :
设计:以webwork为核心,采用拦截器的机制来处理用户请求
使得业务逻辑控制器可以与servlet api完全脱离。
应用流程:
1.web容器 ( 请求 )——> 过滤器 ,过滤转发器,确定请求的action。
2 ActionProxy, 读struts.xml文件,创建ActionInvocation对象
3 拦截器,action,返回结果,拦截器
4 . ( 响应 )——> web.xml中的过滤器,过滤转发器
拦截器:在某个方法或字段被 访问之前 进行拦截加入某些操作。
public String intercept(ActionInvocation act) throws Exception {
//在Action之前执行的代码
......
//开始执行Action
String result=act.invoke();//
//在Action之后的代码
......
//结束拦截器
return result;
防止 重复登录,重复提交表单,用户是否登录 用session
防止表单重复提交可以 通过重定向(发送到sevlet类后重定向到专门类),session 停牌。
重定向实现 数据的添加
请求转发与重定向的区别:
看地址栏的变化
1.请求转发:客户端浏览器各请求发送到服务器端test.jsp,test.jsp通过计算,将请求转发到red.jsp,red.jsp返回响应。但浏览器地址 但显示test.jsp,因为它不知道服务器里有什么。
2.重定向 :客户端浏览器各请求发送到服务器端test.jsp,test.jsp通过计算,向浏览器发送一个页面重定向的响应,响应包含red.jsp地址。浏览器根据该响应中的地址,再次向服务器发送请求,此时请求的是red.jsp,red.jsp执行并返回响应。
struts2的拦截器类似于servlet的过滤器
Servlet:
交互式地浏览和修改数据,生成动态Web内容
过程:
客户端(发送请求) ——>服务器端——>(请求到达) Servlet
(响应到达)<—— <-- (生成响应返回)
Servlet与JSP的比较
JSP是一种实现普通静态HTML与动态HTML混合编码技术,并无servlet不能实现的功能。
但在JSP中编写HTML更加方便,不必再用println语句来输出。分离内容与外观,便于页面制作。
继承类 需重载的主要方法
Action extends ActionSupport:excute()
Servlet extends HttpServlet: doget(HttpServletRequest req,HttpServletResponse resp)
Interceptor extends AbstractInterceptor :intercept(ActionInvocation invocation)
filter extends Filter :doFilter(ServletRequest,request,ServletResponse response,FilterChain chain)