action.class中:
public class action {
public String say(){
System.out.println("fdsafdsa");
return "success";
}
}
struts.xml中
<struts>
<!--开启开发模式-->
<constant name="struts.devMode" value="true"></constant>
<package name="p1" extends="struts-default">
<action name="say" class="test.action" method="say">
<result name="success">/success.jsp</result>
</action>
</package>
</struts>
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执行过程简易版:
ie:say.action->tomcat
tomcat->StrutsPrepareAndExecuteFilter->解析uri得到action元素->在struts.xml中vkdkresult()
用户创建的:struts,action,template
default.properties 该文件在core包中 struts2.core
struts-default.xml 该文件在core包中 struts2.core
struts-plugin 某个jar包中
struts.xml web应用默认配置文件
struts.properties struts默认配置文件
web.xml 应用配置文件
代理:我调目标类的方法,先经过代理,再经过被代理对象
<package> 作用:方便模块化开发
<struts>
<constant name="struts.devMode" value="true"></constant>
<package name="p1" extends="struts-default">
<action name="say" class="test.action" method="say">
<result name="success">/success.jsp</result>
</action>
</package>
<package name="order"></package>
</struts>
name:唯一,必须.
extends: 一般都需要.直接或间接继承一个struts-default的包名
可以继承以上的包如 extends="p1"
abstract="ture" 说明这是个抽象包,让别人继承,此时没有什么action子元素
namespace:名称空间,一般以"/"开头,和动作名称一起,构成访问路径
action详解
编写动作类方法:继承ActionSupport
<action name="*_*" class="...." method={1,2}>
<result name="success">/{1}{2}.jsp</result>
</action>
获取request,response
1.
System.out.println(ServletActionContext.getRequest());;
System.out.println(ServletActionContext.getResponse());;
System.out.println(ServletActionContext.getServletContext());;
2. HttpServletRequest request;
HttpServletResponse response;
@Override
public void setServletRequest(HttpServletRequest request) {
this.request = request;
}
@Override
public void setServletResponse(HttpServletResponse response) {
this.response = response;
}
return :配置一个结果视图
<action name="save" class="test.Demo3Action" method="save">
<result name="success" type="redirect">/jsps/success.jsp</result>
<result name="error">/jsps/error.jsp</result>
</action>
name:逻辑视图名称,对应动作方法的返回值
可以不写,默认success
type:指定结果类型,默认dispatcher,就是转发
其他类型:
chain: 转发到另一个动作
如: <result name="success" type="chain">action1</result>
redirectAction:重定向到另一个action
velocity:
tream:下载使用
plainText:以纯文本的展示
dispathcer:
freemarker:
httpheader:
redirect:
chain的另一种写法
(EJB重量级持久层,天然分布式,负载均衡) 但是不够灵活,不能充分适应业务 多条件查询 如果使用EntityBean,做查询时,一个查询的条件就得写一个sql,就用了一个SessionBean,新增修改删除给EntityBean,多条件查询交给session. Hibernate 开发快,无sql语句,面向对象, Hibernate 与 mybatis区别 Hibernate,java面向对象盛行期.将设计过程全部面向对象开发.ORM. ibatis:维持原有编程方式,前面面向对象,后面持久层使用sql Hibernate通过反射,性能很低 Hibernate底层使用sql,就hql转sql无法优化