我是靠谱客的博主 忧虑纸鹤,最近开发中收集的这篇文章主要介绍SSH框架--struts2浅析《二》之配置文件,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

一、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浅析《二》之配置文件所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(42)

评论列表共有 0 条评论

立即
投稿
返回
顶部