> 生活笔记  > python
struts2相关知识

1.struts2文件上传

首先,我们写一个文件上传的jsp页面

<body>
    <form action="fileUpload.action" method="post" enctype="multipart/form-data">
    	file:&lt;input type="file" name="file">
    	&lt;input type="submit" value="upload"/>
    &lt;/form>
  &lt;/body>

这里注意一下form表单的enctype属性要设置为multipart/form-data

接下来写action

public class FileUploadAction extends ActionSupport {

	private static final long serialVersionUID = 1L;
	//上传文件
	private File file;
	//文件名称
	private String fileFileName;
	//文件类型
	private String fileContentType;

	public File getFile() {
		return file;
	}

	public void setFile(File file) {
		this.file = file;
	}


	public String getFileFileName() {
		return fileFileName;
	}

	public void setFileFileName(String fileFileName) {
		this.fileFileName = fileFileName;
	}

	public String getFileContentType() {
		return fileContentType;
	}

	public void setFileContentType(String fileContentType) {
		this.fileContentType = fileContentType;
	}
	
	@Override
	public String execute() throws Exception {
		//获取upload文件夹路径
		String root = ServletActionContext.getServletContext().getRealPath("/upload");
		InputStream is = new FileInputStream(file);//输入流
		OutputStream os = new FileOutputStream(new File(root,fileFileName));//输出流
		
		System.out.println(fileFileName);//在控制台打印文件名称
		System.out.println(fileContentType);//在控制台打印文件类型
		
		byte[] buffer = new byte[500];
		int length = 0;
		while(-1!=(length = is.read(buffer, 0, buffer.length))){
			os.write(buffer);
		}
		os.close();//关闭流
		is.close();
		return SUCCESS;
	}
}

struts.xml相关配置

<action name="fileUpload" class="cn.wuxj.ssh.FileUploadAction">
	<result type="redirect">/index.jsp</result>//重定向到主页
</action>

结果(控制台打印的图片名称和类型)

QQ截图20161205140516.png

2.struts2防止表单重复提交

struts2中利用token放在表单重复提交,在struts2中有一个token的拦截器,接下来使用struts2提供的拦截器来演示防止表单重复提交。

首先是jsp页面,这里模拟注册界面

使用struts2的标签要在jsp页面中引入

<%@ taglib uri="/struts-tags" prefix="s"%>
<body>
    	<s:form action="regist.action" method="post">
    		<s:textfield name="user.username"/>
    		<s:token/>
    		<s:submit/>
    	</s:form>
  </body>

action代码

public class RegistAction extends ActionSupport {

	private static final long serialVersionUID = 1519615550766002492L;
	
	private User user;

	public User getUser() {
		return user;
	}

	public void setUser(User user) {
		this.user = user;
	}
	
	@Override
	public String execute() throws Exception {
		System.out.println(user);
		return SUCCESS;
	}
}

struts.xml中的配置

<action name="regist" class="cn.wuxj.ssh.RegistAction">
	<interceptor-ref name="defaultStack"/>
	<!-- 引用struts2中的token拦截器 -->
	<interceptor-ref name="token"/>
	<!-- 检测到重复提交是跳转到msg.jsp页面 -->		
	<result name="invalid.token">/msg.jsp</result>
	<result>/index.jsp</result>
</action>

可以在msg.jsp页面中给出相关提示

1条评论
用户头像
xjie
这特么怎么写的这么垃圾呢? :)

12月5日    回复     顶(0)     举报

猜你喜欢
精品推荐
扫二维码,加好友一起学习吧!