Struts2之注解

Struts2之注解

  • 1、引入依赖
  • 2、注解结构
  • 3、注解的使用

1、引入依赖

Struts2中可以使用注解来代表struts.xml中的某些配置,可以简化配置。要使用注解,必须引入额外的依赖,如下:

        
        <dependency>
             <groupId>org.apache.strutsgroupId>
             <artifactId>struts2-convention-pluginartifactId>
             <version>2.5.22version>
        dependency>   

2、注解结构

引入依赖后,可以看struts2-convention-plugin的jar包,anotation包如下:

Struts2之注解_第1张图片

这里面是注解的结构,也是用到的所有注解。常用的几个注解@Action、@InterceptorRef、@Namespace、@ParentPackage、@Result注解等。

  • @Action来代替元素。
  • @InterceptorRef用于配置拦截器。
  • @Namespace代替标签里的namespace属性。
  • @ParentPackage代替的extends属性。
  • @Result来代替元素。

3、注解的使用

特别注意,当使用struts2的注解时,Action类所在的包必须是action,actions,struts,struts2命名,否则将无法识别。在struts-plugin.xml中相关配置如下:

在这里插入图片描述
不使用注解时,struts.xml中的配置如下:

             <package name="download" extends="default">
                  <action name="download" class="com.ycz.struts01.action.DownloadAction" method="download">
                       <result name="success" type="stream">
                              
                              <param name="contentType">application/octet-streamparam>
                              
                              <param name="inputName">inputStreamparam>
                              
                              <param name="contentDisposition">attachment;filename="${fileName}"param>
                              
                              <param name="bufferSize">4096param>
                       result>
                  action>
             package>

现在删除这些配置,使用注解来代替:

@ParentPackage("default")
@Namespace("/")
public class DownloadAction extends ActionSupport {

	private static final long serialVersionUID = 1L;
	
	// 输入流,读取文件
	private InputStream inputStream;
	
	// 文件名称
	private String fileName;

	public InputStream getInputStream() {
		return inputStream;
	}

	public void setInputStream(InputStream inputStream) {
		this.inputStream = inputStream;
	}

	public String getFileName() {
		return fileName;
	}

	public void setFileName(String fileName) {
		this.fileName = fileName;
	}
	
	@Action(value = "download",results = {
			@Result(name = SUCCESS,type="stream",params = {
					"contentType","application/octet-stream",
					"inputName","inputStream",
					"contentDisposition","attachment;filename=${fileName}",
					"bufferSize","4096"
			})
	})
	public String download() throws IOException {
		try {
			String path = "E:/upload/" + fileName;
			// 设置中文编码
			fileName = URLEncoder.encode(fileName, "UTF-8");
			// 初始化流
			inputStream = new BufferedInputStream(new FileInputStream(path));
		} catch (Exception e) {
			e.printStackTrace();
		}
		return SUCCESS;
	}

}

你可能感兴趣的:(Struts2框架,struts,java,servlet)