过程:
web.xml中配置好
---》 jsp中form的action"hello"就会被struts拦截处理(struts.xml中有个action来处理hello)
一般调用顺序是jsp-->根据struts.xml找到action/servlet-->dao-->entity
entity/domain(bean):JavaBean(POJO)set,get
service/dao:数据库的增上改查
action/web:控制器,有LoginConroller类,相当于Sevlet
Eclipse 构建路径中Order and Export 如何设置?起什么作用?
1调用优先级的问题,越在上边调用优先级越高,例如,在同包同类名的情况下,将优先从上到下执行搜索调用;
2打勾与不打勾的区别在于导出jar包时是否将这个库的内容也打包到jar中,勾为包含,不勾为不含。
Action存:session.setAttribute("键", 对象);
jsp取:<s:property value="#session.键.对象属性"/>
<default-action-ref name="用于错误跳转的action"/>
result type=:
type="chain",相当与servlet的请求转发,chain其实只是在一个action执行完毕之后,forward到另外一个action,所以他们之间是共享HttpServletRequest的。
支持<s:>标签
<%@ taglib uri="/struts-tas" prefix="s" %>
//使用:
<s:property value="#user.name"/>
解决标签自动换行: 标签中加theme="simple"
struts2的核心就是一个web.xml中的<filter>,将HTTP请求转入Struts2框架内
<action>相当于Servlet(配置代码出现在struts.xml里(structs.xml在项目目录/src下))
(webwork又由xwork而来,所以struts2的文件目录下有xwork的文件夹)
struts2.1.3后的核心控制器(过滤器)变为StrutsPrepareAndExecuteFilter
流程:请求拦截器--》Action处理---》结果对应---》拦截器----》回应
拦截器类 实现拦截器:继承AbstractInterceptor 实现intercept方法
action引用拦截器类:<interceptor-ref name=""/>
struts.xml中可以有多个package,package里面可以有多个action
实现action类:继承ActionSupport
Struts工具类 在Action中获取request等//让Action继承这个类就可以了
package action;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.apache.struts2.interceptor.ServletRequestAware;
import org.apache.struts2.interceptor.ServletResponseAware;
import org.apache.struts2.util.ServletContextAware;
import com.opensymphony.xwork2.ActionSupport;
public class SuperAction extends ActionSupport implements ServletRequestAware,ServletResponseAware,ServletContextAware{
private static final long serialVersionUID = 7727505312022359301L;
protected HttpServletRequest request;
protected HttpServletResponse response;
protected HttpSession session;
protected ServletContext application;
@Override
public void setServletContext(ServletContext application) {
this.application=application;
}
@Override
public void setServletResponse(HttpServletResponse response) {
this.response=response;
}
@Override
public void setServletRequest(HttpServletRequest request) {
this.request=request;
this.session=this.request.getSession();
}
}