概述
一、struts2配置文件解析
struts2配置文件共以下几个:
a、default.properties:在struts2的核心包中,程序员只能看;
b、struts-default.xml:在struts2的核心包中,程序员只能看;
c、struts-plugin.xml:在插件jar包中,程序员只能看;
d、struts.xml:在构建路径顶端,程序员自己定义的struts配置文件(推荐)
f、struts.properties:在构建路径顶端,程序员自己定义的struts配置文件(不推荐)
g、web.xml:配置过滤器时,指定参数。程序员可以编写(不推荐)
注:前三个都是struts2框架提供的配置信息,是不可以改动的,并且默认使用到,但是根据以上顺序,下边的配置文件可以把上边配置文件的相同配置信息覆盖掉
大家可以根据struts.action.extension = action,,来进行测试
如果想要在struts.xml配置文件中覆盖默认配置可以用constant标签
<constant name="struts.action.extension" value="do"></constant>
二、struts2配置文件
1、package元素
意义:分模块开发
属性:
name:必须的,配置文件中要唯一
extends:指定父包,会把父包中配置内容继承下来。一般需要直接或者间接继承一个叫做“struts-default”的包(该包位于struts-default.xml文件中)。如果不继承该包,struts2的核心功能将不能使用。
abstract:是否为抽象包,没有任何action子元素的包可以声明为抽象包。
namespace:指定名称空间。一般以“/”开头。访问路径为“名称空间+动作名”
注:说到namespace,他有一个相对重要的原则:
2、action元素
作用:定义一个动作
属性:
name:必须的。动作名称,要和用户发出的请求的动作一致,包中唯一
class:指定动作类的全名称。框架会根据反射机制实例化。
默认为:com.opensymphony.xwork2.ActionSupport
method:指定动作类中的动作方法。框架会执行该方法。默认是execute()
注:之所以默认类为com.opensymphony.xwork2.ActionSupport,是因为在struts-default.xml文件中有如下配置:
<default-class-ref class="com.opensymphony.xwork2.ActionSupport" />
根据上边所讲的配置信息覆盖,我们可以在自己定义的配置文件中覆盖它
<default-class-ref class="com.struts.action.HelloWorldAction" />
三、动作类
1、pojo(plain old Java object)
public class HelloWorldAction {
public String sayHello(){
System.out.println("动作方法执行了");
return "success";
}
}
2、实现
com.opensymphony.xwork2.Action接口
public class HelloWorldAction1 implements Action {
public String execute() throws Exception {
return null;
}
}
打开action底层源码可知,他提供了几个常量:
public static final String SUCCESS = "success";
public static final String NONE = "none";
public static final String ERROR = "error";
public static final String INPUT = "input";
public static final String LOGIN = "login";
success:一切正常;
none:动作方法执行完成后不返回任何视图;类似于return null;
error:动作方法遇到异常时可以跳转到错误试图;
input:验证、转换失败,转向输入页面;
login:检测用户是否登录,没有登录转向登录界面;
3、继承com.opensymphony.xwork2.ActionSupport(推荐)
意义:提供了一些基本功能,比如:验证、国际化详细提示
public class HelloWorldAction2 extends ActionSupport {
/**
*
*/
private static final long serialVersionUID = 1L;
}
看源码可以发现ActionSupport实现action接口,也就意味着可以使用接口中的常量
四、动作类中获取ServletAPI
1、推荐,简单
public class HelloWorldAction2 extends ActionSupport {
/**
*
*/
private static final long serialVersionUID = 1L;
public String execute(){
HttpServletRequest request = ServletActionContext.getRequest();
HttpServletResponse response = ServletActionContext.getResponse();
ServletContext application = ServletActionContext.getServletContext();
System.out.println(request);
System.out.println(response);
System.out.println(application);
return null;
}
}
2、复杂,好用
public class HelloWorldAction3 extends ActionSupport implements ServletRequestAware,ServletResponseAware,ServletContextAware {
/**
*
*/
private static final long serialVersionUID = 1L;
private HttpServletRequest request;
private HttpServletResponse response;
private ServletContext application;
@Override
public void setServletContext(ServletContext application) {
// TODO Auto-generated method stub
this.application = application;
}
@Override
public void setServletResponse(HttpServletResponse response) {
// TODO Auto-generated method stub
this.response = response;
}
@Override
public void setServletRequest(HttpServletRequest request) {
// TODO Auto-generated method stub
this.request = request;
}
public String execute(){
System.out.println(request);
System.out.println(response);
System.out.println(application);
return null;
}
}
注:有依赖注入的思想,拦截器(servletConfig)给我们注入这些实例,后期讲到spring时会细说DI(依赖注入)。
===================================================================================
坚持别人不能坚持的坚持,终将收获别人不能收获的收获。这就是我,一个纯粹想靠技术改变命运的人。
最后
以上就是忧虑纸鹤为你收集整理的SSH框架--struts2浅析《二》之配置文件的全部内容,希望文章能够帮你解决SSH框架--struts2浅析《二》之配置文件所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复