struts2基本操作

Action類創建

package cn.jzy.action;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;

import cn.jzy.modle.EnglishName;

import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.conversion.annotations.Conversion;
import com.opensymphony.xwork2.conversion.annotations.TypeConversion;

@Conversion(conversions={
		@TypeConversion(key="englishName",converter="cn.jzy.modle.type.EnglishNameConveter")
})		//引用自定義類型轉化
public class LoginAction extends ActionSupport{

	private static final long serialVersionUID = 1L;
	private String userName;
	private String password;
	private File upload;
	private String uploadFileName;	//注意名稱必須以upload開頭
	private String uploadContentType;
	private String token;
	private EnglishName englishName;

	public EnglishName getEnglishName() {
		return englishName;
	}
	public void setEnglishName(EnglishName englishName) {
		this.englishName = englishName;
	}
	public String getToken() {
		return token;
	}
	public void setToken(String token) {
		this.token = token;
	}
	public File getUpload() {
		return upload;
	}
	public void setUpload(File upload) {
		this.upload = upload;
	}
	public String getUploadFileName() {
		return uploadFileName;
	}
	public void setUploadFileName(String uploadFileName) {
		this.uploadFileName = uploadFileName;
	}
	public String getUploadContentType() {
		return uploadContentType;
	}
	public void setUploadContentType(String uploadContentType) {
		this.uploadContentType = uploadContentType;
	}
	public String getUserName() {
		return userName;
	}
	public void setUserName(String userName) {
		this.userName = userName;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	
	//表單驗證 -方法一,不推薦
	public void validateLogin() {
//		if(!userName.equals("jzy")){
//			this.addFieldError("userName", "用戶名不正確");
//		}		
	}
	
	//文件上傳
	public String login(){
		
	//	HttpServletRequest request=ServletActionContext.getRequest();	//獲取request對象
		try{
			System.out.println("firstName:"+englishName.getFirstName()+"     lastName: "+englishName.getLastName());
			//System.out.println(uploadFileName + "      " + uploadContentType +"  "+upload);
			FileOutputStream fos = new FileOutputStream("d:/" + uploadFileName);
			FileInputStream fis = new FileInputStream(upload);
			byte[] buf = new byte[1024];
			int c = 0;
			while ((c=fis.read(buf, 0, buf.length)) != -1) {
				fos.write(buf, 0, c);
			}
			fos.flush();
			fos.close();
			fis.close();

		}catch(Exception e){
			e.printStackTrace();
		}
		return "show";
	}
}

創建配置文件struts.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
	"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
	"http://struts.apache.org/dtds/struts-2.3.dtd">

<struts>

	<constant name="struts.enable.DynamicMethodInvocation" value="true" />
	<constant name="struts.devMode" value="true" />
	<constant name="struts.i18n.encoding" value="utf-8"></constant>
	<constant name="struts.custom.i18n.resources" value="mystruts"></constant>
	
	<package name="default" namespace="/" extends="struts-default">
		
		<interceptors>
			<interceptor name="test" class="cn.jzy.interceptor.MyIntercepteor">
				<param name="userName">你好</param>
			</interceptor>
		</interceptors>

		<action name="index">
			<result>/index.jsp</result>
		</action>
		<action name="login_*" class="cn.jzy.action.LoginAction" method="{1}">
			<result name="show">/show.jsp</result>
			<result name="invalid.token">/show.jsp</result>
			<result name="input">/login.jsp</result> <!-- input爲驗證跳轉 -->
			<interceptor-ref name="tokenSession"></interceptor-ref>
			<interceptor-ref name="test"></interceptor-ref>
			<interceptor-ref name="fileUpload"></interceptor-ref>
			<interceptor-ref name="defaultStack"></interceptor-ref>
		</action>
		
		<action name="comment_*" class="cn.jzy.action.CommentAction" method="{1}">	
			<result name="insert" type="chain">comment_select</result>
			<result name="select">/comment.jsp</result>		
		</action>

	</package>




</struts>

Jsp登錄頁面

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@taglib prefix="s" uri="/struts-tags" %>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>  
    <title><s:text name="login"></s:text></title>

  </head>
  
  <body>
  <s:fielderror></s:fielderror>
  <s:form action="login_login.action" enctype="multipart/form-data" method="post" theme="simple">
  	用戶名:<s:textfield name="userName" ></s:textfield><br>
  	英文名:<s:textfield name="englishName"></s:textfield>(姓、名用“,”隔開)<br>
  		密碼:<s:password name="password"></s:password><br>
  			<s:file name="upload" key="upload"></s:file>
  			<s:token name="token"></s:token>
  		<s:submit value="登錄" ></s:submit>
  		
  </s:form>
  
  </body>
</html>

國際化資源文件

name=\u848B\u5FD7\u52C7
login=\u767B\u5F55
index=\u9996\u9875
error.userName=\u7528\u6237\u540D\u9519\u8BEF
error.password=\u5BC6\u7801\u4E0D\u6B63\u786E

自定義類型轉換

創建對象

package cn.jzy.modle.type;

import java.util.Map;

import org.apache.struts2.util.StrutsTypeConverter;

import cn.jzy.modle.EnglishName;

public class EnglishNameConveter extends StrutsTypeConverter{

	@Override
	public Object convertFromString(Map arg0, String[] arg1, Class arg2) {
		String name=arg1[0];
		EnglishName en=new EnglishName();
		String[] names=name.split(",");
		en.setFirstName(names[0]);
		en.setLastName(names[1]);
		
		return en;
	}

	@Override
	public String convertToString(Map arg0, Object arg1) {
		EnglishName en=(EnglishName)arg1;
		return en.getFirstName()+","+en.getLastName();
	}

}

類型轉化類

package cn.jzy.modle.type;

import java.util.Map;

import org.apache.struts2.util.StrutsTypeConverter;

import cn.jzy.modle.EnglishName;

public class EnglishNameConveter extends StrutsTypeConverter{

	@Override
	public Object convertFromString(Map arg0, String[] arg1, Class arg2) {
		String name=arg1[0];
		EnglishName en=new EnglishName();
		String[] names=name.split(",");
		en.setFirstName(names[0]);
		en.setLastName(names[1]);
		
		return en;
	}

	@Override
	public String convertToString(Map arg0, Object arg1) {
		EnglishName en=(EnglishName)arg1;
		return en.getFirstName()+","+en.getLastName();
	}

}






發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章