Struts1框架实例——订餐系统、注册登录系统

一:学习目录

  • 自动验证
  • I18N国际化
  • Struts标签使用
  • DAO
  • 数据库操作

二:代码分享

Meal.java:

package com.amaker.bean;

public class Meal {

	/*CREATE TABLE `NewTable` (
			`id`  int(11) NOT NULL AUTO_INCREMENT ,
			`orderTime`  varchar(20) CHARACTER SET gbk COLLATE gbk_chinese_ci NULL DEFAULT NULL ,
			`userID`  int(11) NULL DEFAULT NULL ,
			`mealTypeID`  int(11) NULL DEFAULT NULL ,
			`isPay`  int(11) NULL DEFAULT 0 ,
			`detail`  varchar(255) CHARACTER SET gbk COLLATE gbk_chinese_ci NULL DEFAULT NULL ,
			`num`  int(11) NULL DEFAULT NULL ,
			PRIMARY KEY (`id`),
			FOREIGN KEY (`mealTypeID`) REFERENCES `mealtypetb1` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT,
			FOREIGN KEY (`userID`) REFERENCES `usertb1` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT,
			INDEX `userID` (`userID`) USING BTREE ,
			INDEX `mealTypeID` (`mealTypeID`) USING BTREE 
			)
			ENGINE=InnoDB
			DEFAULT CHARACTER SET=gbk COLLATE=gbk_chinese_ci
			ROW_FORMAT=DYNAMIC
			;*/

	private int id;
	private String orderTime;
	private int  UserID;
	private int mealTypeID;
	private int num;
	private int ispay;
	private String detail;
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getOrderTime() {
		return orderTime;
	}
	public void setOrderTime(String orderTime) {
		this.orderTime = orderTime;
	}
	public int getUserID() {
		return UserID;
	}
	public void setUserID(int userID) {
		UserID = userID;
	}
	public int getMealTypeID() {
		return mealTypeID;
	}
	public void setMealTypeID(int mealTypeID) {
		this.mealTypeID = mealTypeID;
	}
	public int getNum() {
		return num;
	}
	public void setNum(int num) {
		this.num = num;
	}
	public int getIspay() {
		return ispay;
	}
	public void setIspay(int ispay) {
		this.ispay = ispay;
	}
	public String getDetail() {
		return detail;
	}
	public void setDetail(String detail) {
		this.detail = detail;
	}
	
	
	

}

 MealList.java:

package com.amaker.bean;

public class MealList {

	private int id;
	private String orderTime;
	private String fullName;
	private String mealTypeName;
	private String detail;
	private int price;
	private int num;
	private int total;
	private int ispay;
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getOrderTime() {
		return orderTime;
	}
	public void setOrderTime(String orderTime) {
		this.orderTime = orderTime;
	}
	public String getFullName() {
		return fullName;
	}
	public void setFullName(String fullName) {
		this.fullName = fullName;
	}
	public String getMealTypeName() {
		return mealTypeName;
	}
	public void setMealTypeName(String mealTypeName) {
		this.mealTypeName = mealTypeName;
	}
	public String getDetail() {
		return detail;
	}
	public void setDetail(String detail) {
		this.detail = detail;
	}
	public int getPrice() {
		return price;
	}
	public void setPrice(int price) {
		this.price = price;
	}
	public int getNum() {
		return num;
	}
	public void setNum(int num) {
		this.num = num;
	}
	public int getTotal() {
		return total;
	}
	public void setTotal(int total) {
		this.total = total;
	}
	public int getIspay() {
		return ispay;
	}
	public void setIspay(int ispay) {
		this.ispay = ispay;
	}
}

MealType.java:

package com.amaker.bean;

public class MealType {

	private int id;
	private String name;
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	
}

 User.java:

package com.amaker.bean;

public class User {

	private int id;
	private String name;
	private String fullName;
	private String privillege;
	private String password;
	
	public User(){}
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getFullName() {
		return fullName;
	}
	public void setFullName(String fullName) {
		this.fullName = fullName;
	}
	public String getPrivillege() {
		return privillege;
	}
	public void setPrivillege(String privillege) {
		this.privillege = privillege;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	
	
	
}

 

MealDao.java:

package com.amaker.dao;

import java.util.List;

import com.amaker.bean.Meal;

public interface MealDao {

	public List listMealType();
	public void add(Meal m);
	public List listMeal();
}

 UserDao.java:

package com.amaker.dao;

import com.amaker.bean.User;

public interface UserDao {

	public User login(String username,String password);

	public void register(User u);
	
	public boolean check(String username);

}

MealDaoImpl.java:

package com.amaker.daoImpl;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;

import com.amaker.bean.Meal;
import com.amaker.bean.MealList;
import com.amaker.bean.MealType;
import com.amaker.bean.User;
import com.amaker.dao.MealDao;
import com.amaker.util.DBUtil;

public class MealDaoImpl implements MealDao {

	@Override
	public List listMealType() {
		// TODO Auto-generated method stub
		DBUtil util = new DBUtil();
		Connection conn = util.openConnection();
		String sql = "select id,name from mealtypetb1 ";
		try {
			PreparedStatement pstmt = conn.prepareStatement(sql);
			ResultSet rs = pstmt.executeQuery();
			List list = new ArrayList();
			MealType mt;
			while(rs.next()){
				int id = rs.getInt(1);
				String name = rs.getString(2);
				mt = new MealType();
				mt.setId(id);
				mt.setName(name);
				list.add(mt);
			}
			
			return list;
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally{
			util.closeConnection(conn);
		}
		return null;
	}

	@Override
	public void add(Meal m) {
		// TODO Auto-generated method stub

		DBUtil util = new DBUtil();
		Connection conn = util.openConnection();
		String sql = "insert into mealtb1(orderTime,userID,mealTypeID,detail,num)"
				+ "values(?,?,?,?,?)";
		try {
			PreparedStatement pstmt = conn.prepareStatement(sql);
			pstmt.setString(1, m.getOrderTime());
			pstmt.setInt(2, m.getUserID());
			pstmt.setInt(3, m.getMealTypeID());
			pstmt.setString(4, m.getDetail());
			pstmt.setInt(5, m.getNum());
			pstmt.executeUpdate();
			
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally{
			util.closeConnection(conn);
		}
		
		
	}

	@Override
	public List listMeal() {
		// TODO Auto-generated method stub
		String sql =
				 "select mt.id,"+
					"u.fullName,"+
					"mt.orderTime,"+
					"mtt.name,"+
					"mtt.price,"+
					"mt.num,"+
					"mtt.price*mt.num as total,"+
					"mt.detail,"+
					"mt.ispay "+
				"from mealtb1 as mt "+
					"LEFT JOIN mealtypetb1 as mtt on mt.mealTypeID = mtt.id "+
					" left JOIN usertb1 as u on u.id = mt.userID;";


		DBUtil util = new DBUtil();
		Connection conn = util.openConnection();
		 
		try {
			Statement stmt = conn.createStatement();
			ResultSet rs = stmt.executeQuery(sql);
			MealList ml ;
			List list = new ArrayList();
			while(rs.next()){
				int id = rs.getInt(1);
				String fullName = rs.getString(2);
				String orderTime = rs.getString(3);
				String mealTypeName = rs.getString(4);
				int price = rs.getInt(5);
				int num = rs.getInt(6);
				int total = rs.getInt(7);
				String detail = rs.getString(8);
				int ispay = rs.getInt(9);
				
				ml = new MealList();
				ml.setId(id);
				ml.setDetail(detail);
				ml.setFullName(fullName);
				ml.setNum(num);
				ml.setOrderTime(orderTime);
				ml.setTotal(total);
				ml.setPrice(price);
				ml.setMealTypeName(mealTypeName);
				ml.setIspay(ispay);
				list.add(ml);
			}
			return list;
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally{
			util.closeConnection(conn);
		}
		return null;
	}

}

UserDaoImpl.java:

package com.amaker.daoImpl;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import com.amaker.bean.User;
import com.amaker.dao.UserDao;
import com.amaker.util.DBUtil;

public class UserDaoImpl implements UserDao {

	@Override
	public User login(String username, String password) {
		// TODO Auto-generated method stub
		DBUtil util = new DBUtil();
		Connection conn = util.openConnection();
		String sql = "select id,name,password,privillege,fullName from usertb1 where "
				+ "name=? and password=?";
		try {
			PreparedStatement pstmt = conn.prepareStatement(sql);
		
			pstmt.setString(1,username);
			pstmt.setString(2,password);
			ResultSet rs = pstmt.executeQuery();
			if(rs.next()){
				int id = rs.getInt(1);
				String privillege = rs.getString(4);
				String fullName = rs.getString(5);
				User u = new User();
				u.setFullName(fullName);
				u.setId(id);
				u.setName(username);
				u.setPassword(password);
				u.setPrivillege(privillege);
				return u;
			}
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally{
			util.closeConnection(conn);
		}
		
		return null;
	}  

	@Override
	public void register(User u) {
		// TODO Auto-generated method stub

		DBUtil util = new DBUtil();
		Connection conn = util.openConnection();
		String sql = "insert into UserTb1(name,password,fullName)"
				+ "values(?,?,?)";
		try {
			PreparedStatement pstmt = conn.prepareStatement(sql);
			pstmt.setString(1, u.getName());
			pstmt.setString(2, u.getPassword());
			pstmt.setString(3, u.getFullName());
			pstmt.executeUpdate();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally{
			util.closeConnection(conn);
		}
		
	}

	@Override
	public boolean check(String username) {
		// TODO Auto-generated method stub
		DBUtil util = new DBUtil();
		Connection conn = util.openConnection();
		String sql = "select id,name,password,privillege,fullName from usertb1 where "
				+ "name=? ";
		try {
			PreparedStatement pstmt = conn.prepareStatement(sql);
		
			pstmt.setString(1,username);
			 
			ResultSet rs = pstmt.executeQuery();
			if(rs.next()){
				 return true;
			}
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally{
			util.closeConnection(conn);
		}
		return false;
	}

}

I18NAction.java:

package com.amaker.struts.action;

import java.util.Locale;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.apache.struts.Globals;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

public class I18NAction extends Action{

	@Override
	public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request,
			HttpServletResponse response) throws Exception {
		// TODO Auto-generated method stub
		String l = request.getParameter("l");
		String c = request.getParameter("c");
		
		Locale locale = new Locale(l,c);
		HttpSession session = request.getSession();
		session.setAttribute(Globals.LOCALE_KEY, locale);
		return mapping.findForward("login");
	}

	
}

 LoginAction.java:

/*
 * Generated by MyEclipse Struts
 * Template path: templates/java/JavaClass.vtl
 */
package com.amaker.struts.action;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

import com.amaker.bean.User;
import com.amaker.dao.UserDao;
import com.amaker.daoImpl.UserDaoImpl;
import com.amaker.struts.form.LoginForm;

/** 
 * MyEclipse Struts
 * Creation date: 04-07-2020
 * 
 * XDoclet definition:
 * @struts.action path="/login" name="loginForm" input="/login.jsp" scope="request" validate="true"
 */
public class LoginAction extends Action {
	/*
	 * Generated Methods
	 */

	/** 
	 * Method execute
	 * @param mapping
	 * @param form
	 * @param request
	 * @param response
	 * @return ActionForward
	 */
	public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request,
			HttpServletResponse response) {
		LoginForm loginForm = (LoginForm) form;// TODO Auto-generated method stub
		String username = loginForm.getUsername();
		String password = loginForm.getPassword();
		
		UserDao dao = new UserDaoImpl();
		User u = dao.login(username, password);
		if(u!=null){
			HttpSession session = request.getSession();
			session.setAttribute("UserSession", u);
			
			return mapping.findForward("success");
		}else{
			String msg = "用户名称或密码错误!";
			request.setAttribute("Errormsg", msg);
			return mapping.getInputForward();
		}
		
	}
}

 OrderMealAction.java:

/*
 * Generated by MyEclipse Struts
 * Template path: templates/java/JavaClass.vtl
 */
package com.amaker.struts.action;

import java.util.Date;
import java.util.List;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.actions.DispatchAction;

import com.amaker.bean.Meal;
import com.amaker.bean.User;
import com.amaker.dao.MealDao;
import com.amaker.daoImpl.MealDaoImpl;
import com.amaker.struts.form.OrderMealForm;
import com.amaker.util.DateUtil;

/** 
 * MyEclipse Struts
 * Creation date: 04-07-2020
 * 
 * XDoclet definition:
 * @struts.action path="/orderMeal" name="orderMealForm" input="/orderMeal.jsp" scope="request" validate="true"
 */
public class OrderMealAction extends DispatchAction {
	/*
	 * Generated Methods
	 */

	/** 
	 * Method execute
	 * @param mapping
	 * @param form
	 * @param request
	 * @param response
	 * @return ActionForward
	 */
	public ActionForward add(ActionMapping mapping, ActionForm form, HttpServletRequest request,
			HttpServletResponse response) {
		OrderMealForm orderMealForm = (OrderMealForm) form;// TODO Auto-generated method stub
		 
		int mealTypeID = Integer.parseInt(orderMealForm.getMealTypeID());
		int num = Integer.parseInt(orderMealForm.getNum());
		String detail = orderMealForm.getDetail();
		HttpSession session = request.getSession();
		User u = (User)session.getAttribute("UserSession");
		int userID = u.getId();
		//int userID=100;
		System.out.println(userID);
		String orderTime = new DateUtil().getCurrentDate();
		MealDao dao = new MealDaoImpl();
		Meal m = new Meal();
		m.setUserID(userID);
		m.setDetail(detail);
		m.setMealTypeID(mealTypeID);
		m.setNum(num);
		m.setOrderTime(orderTime);
		
		dao.add(m);
		return listAll(mapping,form,request,response);
	}
	
	public ActionForward prepare(ActionMapping mapping, ActionForm form, HttpServletRequest request,
			HttpServletResponse response) {
		MealDao dao = new MealDaoImpl();
		List list = dao.listMealType();
		HttpSession session = request.getSession();
		session.setAttribute("MealTypeList",list);
		return mapping.getInputForward();
	}
	
	public ActionForward listAll(ActionMapping mapping, ActionForm form, HttpServletRequest request,
			HttpServletResponse response) {
		MealDao dao = new MealDaoImpl();
		List list = dao.listMeal();
		HttpSession session = request.getSession();
		session.setAttribute("MealList",list);
		return mapping.findForward("MealList");
	}
}

RegisterAction.java:

/*
 * Generated by MyEclipse Struts
 * Template path: templates/java/JavaClass.vtl
 */
package com.amaker.struts.action;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

import com.amaker.bean.User;
import com.amaker.dao.UserDao;
import com.amaker.daoImpl.UserDaoImpl;
import com.amaker.struts.form.RegisterForm;

/** 
 * MyEclipse Struts
 * Creation date: 04-07-2020
 * 
 * XDoclet definition:
 * @struts.action path="/register" name="registerForm" input="/register.jsp" scope="request" validate="true"
 */
public class RegisterAction extends Action {
	/*
	 * Generated Methods
	 */

	/** 
	 * Method execute
	 * @param mapping
	 * @param form
	 * @param request
	 * @param response
	 * @return ActionForward
	 */
	public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request,
			HttpServletResponse response) {
		RegisterForm registerForm = (RegisterForm) form;// TODO Auto-generated method stub
		String username =  registerForm.getUsername();
		String fullName = registerForm.getFullName();
		String password = registerForm.getPassword();
		//check
		UserDao dao = new UserDaoImpl();
		if(dao.check(username)){
			String msg = "该用户已存在!";
			request.setAttribute("RegisterError", msg);
			return mapping.getInputForward();
		}
		else{
			User u = new User();
			u.setFullName(fullName);
			u.setName(username);
			u.setPassword(password);
			dao.register(u);
			
			HttpSession session = request.getSession();
			session.setAttribute("UserSession", u);
			
			return mapping.findForward("success");
		}
		 
	}
}

 

 LoginForm.java:

/*
 * Generated by MyEclipse Struts
 * Template path: templates/java/JavaClass.vtl
 */
package com.amaker.struts.form;

import javax.servlet.http.HttpServletRequest;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.validator.ValidatorForm;

/** 
 * MyEclipse Struts
 * Creation date: 04-07-2020
 * 
 * XDoclet definition:
 * @struts.form name="loginForm"
 */
public class LoginForm extends ValidatorForm {
	/*
	 * Generated fields
	 */

	/** password property */
	private String password;

	/** username property */
	private String username;
	/*
	 * Generated Methods
	 */

	/** 
	 * Method validate
	 * @param mapping
	 * @param request
	 * @return ActionErrors
	 */
	/*public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) {
		// TODO Auto-generated method stub
		return null;
	}*/

	/** 
	 * Method reset
	 * @param mapping
	 * @param request
	 */
	public void reset(ActionMapping mapping, HttpServletRequest request) {
		// TODO Auto-generated method stub
	}

	/** 
	 * Returns the password.
	 * @return String
	 */
	public String getPassword() {
		return password;
	}

	/** 
	 * Set the password.
	 * @param password The password to set
	 */
	public void setPassword(String password) {
		this.password = password;
	}

	/** 
	 * Returns the username.
	 * @return String
	 */
	public String getUsername() {
		return username;
	}

	/** 
	 * Set the username.
	 * @param username The username to set
	 */
	public void setUsername(String username) {
		this.username = username;
	}
}

 OrderMealForm.java:

/*
 * Generated by MyEclipse Struts
 * Template path: templates/java/JavaClass.vtl
 */
package com.amaker.struts.form;

import javax.servlet.http.HttpServletRequest;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMapping;

/** 
 * MyEclipse Struts
 * Creation date: 04-07-2020
 * 
 * XDoclet definition:
 * @struts.form name="orderMealForm"
 */
public class OrderMealForm extends ActionForm {
	/*
	 * Generated fields
	 */

	/** mealTypeID property */
	private String mealTypeID;

	/** num property */
	private String num;

	/** detail property */
	private String detail;
	/*
	 * Generated Methods
	 */

	/** 
	 * Method validate
	 * @param mapping
	 * @param request
	 * @return ActionErrors
	 */
	public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) {
		// TODO Auto-generated method stub
		return null;
	}

	/** 
	 * Method reset
	 * @param mapping
	 * @param request
	 */
	public void reset(ActionMapping mapping, HttpServletRequest request) {
		// TODO Auto-generated method stub
	}

	/** 
	 * Returns the mealTypeID.
	 * @return String
	 */
	public String getMealTypeID() {
		return mealTypeID;
	}

	/** 
	 * Set the mealTypeID.
	 * @param mealTypeID The mealTypeID to set
	 */
	public void setMealTypeID(String mealTypeID) {
		this.mealTypeID = mealTypeID;
	}

	/** 
	 * Returns the num.
	 * @return String
	 */
	public String getNum() {
		return num;
	}

	/** 
	 * Set the num.
	 * @param num The num to set
	 */
	public void setNum(String num) {
		this.num = num;
	}

	/** 
	 * Returns the detail.
	 * @return String
	 */
	public String getDetail() {
		return detail;
	}

	/** 
	 * Set the detail.
	 * @param detail The detail to set
	 */
	public void setDetail(String detail) {
		this.detail = detail;
	}
}

RegisterForm.java:

/*
 * Generated by MyEclipse Struts
 * Template path: templates/java/JavaClass.vtl
 */
package com.amaker.struts.form;

import javax.servlet.http.HttpServletRequest;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMapping;

/** 
 * MyEclipse Struts
 * Creation date: 04-07-2020
 * 
 * XDoclet definition:
 * @struts.form name="registerForm"
 */
public class RegisterForm extends ActionForm {
	/*
	 * Generated fields
	 */

	
	/** password property */
	private String password;

	/** repassword property */
	private String repassword;

	/** fullName property */
	private String fullName;

	/** username property */
	private String username;
	/*
	 * Generated Methods
	 */

	/** 
	 * Method validate
	 * @param mapping
	 * @param request
	 * @return ActionErrors
	 */
	public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) {
		// TODO Auto-generated method stub
		return null;
	}

	/** 
	 * Method reset
	 * @param mapping
	 * @param request
	 */
	public void reset(ActionMapping mapping, HttpServletRequest request) {
		// TODO Auto-generated method stub
	}

	/** 
	 * Returns the password.
	 * @return String
	 */
	public String getPassword() {
		return password;
	}

	/** 
	 * Set the password.
	 * @param password The password to set
	 */
	public void setPassword(String password) {
		this.password = password;
	}

	/** 
	 * Returns the repassword.
	 * @return String
	 */
	public String getRepassword() {
		return repassword;
	}

	/** 
	 * Set the repassword.
	 * @param repassword The repassword to set
	 */
	public void setRepassword(String repassword) {
		this.repassword = repassword;
	}

	/** 
	 * Returns the fullName.
	 * @return String
	 */
	public String getFullName() {
		return fullName;
	}

	/** 
	 * Set the fullName.
	 * @param fullName The fullName to set
	 */
	public void setFullName(String fullName) {
		this.fullName = fullName;
	}

	/** 
	 * Returns the username.
	 * @return String
	 */
	public String getUsername() {
		return username;
	}

	/** 
	 * Set the username.
	 * @param username The username to set
	 */
	public void setUsername(String username) {
		this.username = username;
	}
}

 

DateUtil.java:

package com.amaker.util;

import java.text.SimpleDateFormat;
import java.util.Date;

public class DateUtil {

	public static String getCurrentDate(){
		Date d = new Date();
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		String temp = sdf.format(d);
		
		return temp;
	}
}

 DBconfig.properties:

driver=com.mysql.cj.jdbc.Driver
url=jdbc\:mysql\://localhost\:3306/struts_db?serverTimezone\=UTC
username=你的用户名
password=你的密码

DBUtil.java:

package com.amaker.util;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;

public class DBUtil {
	 
	public Connection openConnection() {
		Properties prop = new Properties();
		String driver = null;
		String url = null;
		String username = null; 
		String password = null;
		try {
			prop.load(
					this.getClass().getClassLoader().getResourceAsStream(
							"DBconfig.properties"));
			driver = prop.getProperty("driver");
			url = prop.getProperty("url");
			username = prop.getProperty("username");
			password = prop.getProperty("password");
			Class.forName(driver);
			return DriverManager.getConnection(url,username,password);
					  
		} catch (Exception e) {
			// TODO: handle exception
			e.printStackTrace();
		}
		return null;
	}
	
public void closeConnection(Connection conn) {
		
		if(conn!=null)
			try {
				conn.close();
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
	}

}

 

 Struts和temp下的en相同(因为转码是想汉化):

# Resources for parameter 'com.amaker.struts.ApplicationResources'
# Project Struts1.x_Project
login.title=Login
login.username=Username
login.password=Password
login.submit=Login

 # Struts Validator Error Messages
   errors.required={0} is required.
   errors.minlength={0} can not be less than {1} characters.
   errors.maxlength={0} can not be greater than {1} characters.
   errors.invalid={0} is invalid.

   errors.byte={0} must be a byte.
   errors.short={0} must be a short.
   errors.integer={0} must be an integer.
   errors.long={0} must be a long.
   errors.float={0} must be a float.
   errors.double={0} must be a double.

   errors.date={0} is not a date.
   errors.range={0} is not in the range {1} through {2}.
   errors.creditcard={0} is an invalid credit card number.
   errors.email={0} is an invalid e-mail address.

 temp下的zh:

# Resources for parameter 'com.amaker.struts.ApplicationResources'
# Project Struts1.x_Project
login.title=登录
login.username=用户名称
login.password=用户密码
login.submit=\u767B\u5F55

 # Struts Validator Error Messages
   errors.required={0} 必填项!
   errors.minlength={0} can not be less than {1} characters.
   errors.maxlength={0} can not be greater than {1} characters.
   errors.invalid={0} is invalid.

   errors.byte={0} must be a byte.
   errors.short={0} must be a short.
   errors.integer={0} must be an integer.
   errors.long={0} must be a long.
   errors.float={0} must be a float.
   errors.double={0} must be a double.

   errors.date={0} is not a date.
   errors.range={0} is not in the range {1} through {2}.
   errors.creditcard={0} is an invalid credit card number.
   errors.email={0} is an invalid e-mail address.

 Struts下的zh(这里是转码后的):

# Resources for parameter 'com.amaker.struts.ApplicationResources'
# Project Struts1.x_Project
login.title=\u767B\u5F55
login.username=\u7528\u6237\u540D\u79F0
login.password=\u7528\u6237\u5BC6\u7801
login.submit=\u767B\u5F55

 # Struts Validator Error Messages
   errors.required={0} \u5FC5\u586B\u9879\uFF01
   errors.minlength={0} can not be less than {1} characters.
   errors.maxlength={0} can not be greater than {1} characters.
   errors.invalid={0} is invalid.

   errors.byte={0} must be a byte.
   errors.short={0} must be a short.
   errors.integer={0} must be an integer.
   errors.long={0} must be a long.
   errors.float={0} must be a float.
   errors.double={0} must be a double.

   errors.date={0} is not a date.
   errors.range={0} is not in the range {1} through {2}.
   errors.creditcard={0} is an invalid credit card number.
   errors.email={0} is an invalid e-mail address.

build.xml(放在src下与Pakage同级):通过ant编译转码,用来国际化

<?xml version="1.0" encoding="UTF-8"?>
<project>
	<target name="i18n">
		<native2ascii dest="com\\amaker\\struts\\"
			src="com\\amaker\\temp"
			encoding="utf-8"
			includes="*.properties">
			
			</native2ascii>
			
	</target>
</project>

 

 struts-config.xml:

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

<struts-config>
  <form-beans >
    <form-bean name="loginForm" type="com.amaker.struts.form.LoginForm" />
    <form-bean name="registerForm" type="com.amaker.struts.form.RegisterForm" />
    <form-bean name="orderMealForm" type="com.amaker.struts.form.OrderMealForm" />

  </form-beans>

  <global-exceptions />
  <global-forwards >
  <forward name="success" path="/Success.jsp"></forward>
  </global-forwards>
  <action-mappings >
    <action
      attribute="loginForm"
      input="/login.jsp"
      name="loginForm"
      path="/login"
      scope="request"
      type="com.amaker.struts.action.LoginAction" >
	
	<forward name="success" path="/Success.jsp"></forward>
	</action>
	
	<action path="/i18n" type="com.amaker.struts.action.I18NAction">
	<forward name="login" path="/login.jsp"></forward>
	</action>
    <action
      attribute="registerForm"
      input="/register.jsp"
      name="registerForm"
      path="/register"
      scope="request"
      type="com.amaker.struts.action.RegisterAction"
      cancellable="true" />
    <action
      attribute="orderMealForm"
      input="/orderMeal.jsp"
      name="orderMealForm"
      path="/orderMeal"
      scope="request"
      parameter="action"
      type="com.amaker.struts.action.OrderMealAction"
      cancellable="true" >
      
      <forward name="MealList" path="/MealList.jsp"></forward>
      </action>
	
  </action-mappings>

  <message-resources parameter="com.amaker.struts.ApplicationResources" />
  
  
	<plug-in className="org.apache.struts.validator.ValidatorPlugIn">
        <set-property property="pathnames" value="/WEB-INF/validator-rules.xml,
                                                  /WEB-INF/validation.xml"/>
      </plug-in>
</struts-config>

validation.xml:

<?xml version="1.0" encoding="ISO-8859-1" ?>


<!DOCTYPE form-validation PUBLIC
     "-//Apache Software Foundation//DTD Commons Validator Rules Configuration 1.3.0//EN"
     "http://jakarta.apache.org/commons/dtds/validator_1_3_0.dtd">

<form-validation>

<!--
     This is a minimal Validator form file with a couple of examples.
-->

    <global>

        <!-- An example global constant
        <constant>
            <constant-name>postalCode</constant-name>
            <constant-value>^\d{5}\d*$</constant-value>
        </constant>
        end example-->

    </global>

    <formset>

        <!-- An example form -->
        <form name="loginForm">
            <field
                property="username"
                depends="required">
                    <arg key="login.username"/>
            </field>
            <field
                property="password"
                depends="required">
                    <arg key="login.password"/>
                     
            </field>
        </form>

    </formset>

     

</form-validation>

 validator-rules.xml(模板):


<!--
<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE form-validation PUBLIC

        "-//Apache Software Foundation//DTD Commons Validator Rules Configuration 1.1.3//EN"

        "http://jakarta.apache.org/commons/dtds/validator_1_1_3.dtd">
  $Id: validator-rules.xml 159291 2005-03-28 20:19:29Z niallp $

   This file contains the default Struts Validator pluggable validator
   definitions.  It should be placed somewhere under /WEB-INF and
   referenced in the struts-config.xml under the plug-in element
   for the ValidatorPlugIn.

      <plug-in className="org.apache.struts.validator.ValidatorPlugIn">
        <set-property property="pathnames" value="/WEB-INF/validator-rules.xml,
                                                  /WEB-INF/validation.xml"/>
      </plug-in>

   These are the default error messages associated with
   each validator defined in this file.  They should be
   added to your projects ApplicationResources.properties
   file or you can associate new ones by modifying the
   pluggable validators msg attributes in this file.

   # Struts Validator Error Messages
   errors.required={0} is required.
   errors.minlength={0} can not be less than {1} characters.
   errors.maxlength={0} can not be greater than {1} characters.
   errors.invalid={0} is invalid.

   errors.byte={0} must be a byte.
   errors.short={0} must be a short.
   errors.integer={0} must be an integer.
   errors.long={0} must be a long.
   errors.float={0} must be a float.
   errors.double={0} must be a double.

   errors.date={0} is not a date.
   errors.range={0} is not in the range {1} through {2}.
   errors.creditcard={0} is an invalid credit card number.
   errors.email={0} is an invalid e-mail address.

   Note: Starting in Struts 1.2.0 the default javascript definitions have
         been consolidated to commons-validator. The default can be overridden
         by supplying a <javascript> element with a CDATA section, just as
         in struts 1.1.

-->
<form-validation>
    <global>
        <validator name="required" classname="org.apache.struts.validator.FieldChecks" method="validateRequired" methodParams="java.lang.Object, org.apache.commons.validator.ValidatorAction, org.apache.commons.validator.Field, org.apache.struts.action.ActionMessages, org.apache.commons.validator.Validator, javax.servlet.http.HttpServletRequest" msg="errors.required"/>
        <validator name="requiredif" classname="org.apache.struts.validator.FieldChecks" method="validateRequiredIf" methodParams="java.lang.Object, org.apache.commons.validator.ValidatorAction, org.apache.commons.validator.Field, org.apache.struts.action.ActionMessages, org.apache.commons.validator.Validator, javax.servlet.http.HttpServletRequest" msg="errors.required"/>
        <validator name="validwhen" msg="errors.required" classname="org.apache.struts.validator.validwhen.ValidWhen" method="validateValidWhen" methodParams="java.lang.Object, org.apache.commons.validator.ValidatorAction, org.apache.commons.validator.Field, org.apache.struts.action.ActionMessages, org.apache.commons.validator.Validator, javax.servlet.http.HttpServletRequest"/>
        <validator name="minlength" classname="org.apache.struts.validator.FieldChecks" method="validateMinLength" methodParams="java.lang.Object, org.apache.commons.validator.ValidatorAction, org.apache.commons.validator.Field, org.apache.struts.action.ActionMessages, org.apache.commons.validator.Validator, javax.servlet.http.HttpServletRequest" depends="" msg="errors.minlength" jsFunction="org.apache.commons.validator.javascript.validateMinLength"/>
        <validator name="maxlength" classname="org.apache.struts.validator.FieldChecks" method="validateMaxLength" methodParams="java.lang.Object, org.apache.commons.validator.ValidatorAction, org.apache.commons.validator.Field, org.apache.struts.action.ActionMessages, org.apache.commons.validator.Validator, javax.servlet.http.HttpServletRequest" depends="" msg="errors.maxlength" jsFunction="org.apache.commons.validator.javascript.validateMaxLength"/>
        <validator name="mask" classname="org.apache.struts.validator.FieldChecks" method="validateMask" methodParams="java.lang.Object, org.apache.commons.validator.ValidatorAction, org.apache.commons.validator.Field, org.apache.struts.action.ActionMessages, org.apache.commons.validator.Validator, javax.servlet.http.HttpServletRequest" depends="" msg="errors.invalid"/>
        <validator name="byte" classname="org.apache.struts.validator.FieldChecks" method="validateByte" methodParams="java.lang.Object, org.apache.commons.validator.ValidatorAction, org.apache.commons.validator.Field, org.apache.struts.action.ActionMessages, org.apache.commons.validator.Validator, javax.servlet.http.HttpServletRequest" depends="" msg="errors.byte" jsFunctionName="ByteValidations"/>
        <validator name="short" classname="org.apache.struts.validator.FieldChecks" method="validateShort" methodParams="java.lang.Object, org.apache.commons.validator.ValidatorAction, org.apache.commons.validator.Field, org.apache.struts.action.ActionMessages, org.apache.commons.validator.Validator, javax.servlet.http.HttpServletRequest" depends="" msg="errors.short" jsFunctionName="ShortValidations"/>
        <validator name="integer" classname="org.apache.struts.validator.FieldChecks" method="validateInteger" methodParams="java.lang.Object, org.apache.commons.validator.ValidatorAction, org.apache.commons.validator.Field, org.apache.struts.action.ActionMessages, org.apache.commons.validator.Validator, javax.servlet.http.HttpServletRequest" depends="" msg="errors.integer" jsFunctionName="IntegerValidations"/>
        <validator name="long" classname="org.apache.struts.validator.FieldChecks" method="validateLong" methodParams="java.lang.Object, org.apache.commons.validator.ValidatorAction, org.apache.commons.validator.Field, org.apache.struts.action.ActionMessages, org.apache.commons.validator.Validator, javax.servlet.http.HttpServletRequest" depends="" msg="errors.long"/>
        <validator name="float" classname="org.apache.struts.validator.FieldChecks" method="validateFloat" methodParams="java.lang.Object, org.apache.commons.validator.ValidatorAction, org.apache.commons.validator.Field, org.apache.struts.action.ActionMessages, org.apache.commons.validator.Validator, javax.servlet.http.HttpServletRequest" depends="" msg="errors.float" jsFunctionName="FloatValidations"/>
        <validator name="double" classname="org.apache.struts.validator.FieldChecks" method="validateDouble" methodParams="java.lang.Object, org.apache.commons.validator.ValidatorAction, org.apache.commons.validator.Field, org.apache.struts.action.ActionMessages, org.apache.commons.validator.Validator, javax.servlet.http.HttpServletRequest" depends="" msg="errors.double"/>
        <validator name="date" classname="org.apache.struts.validator.FieldChecks" method="validateDate" methodParams="java.lang.Object, org.apache.commons.validator.ValidatorAction, org.apache.commons.validator.Field, org.apache.struts.action.ActionMessages, org.apache.commons.validator.Validator, javax.servlet.http.HttpServletRequest" depends="" msg="errors.date" jsFunctionName="DateValidations"/>
        <validator name="intRange" classname="org.apache.struts.validator.FieldChecks" method="validateIntRange" methodParams="java.lang.Object, org.apache.commons.validator.ValidatorAction, org.apache.commons.validator.Field, org.apache.struts.action.ActionMessages, org.apache.commons.validator.Validator, javax.servlet.http.HttpServletRequest" depends="integer" msg="errors.range"/>
        <validator name="floatRange" classname="org.apache.struts.validator.FieldChecks" method="validateFloatRange" methodParams="java.lang.Object, org.apache.commons.validator.ValidatorAction, org.apache.commons.validator.Field, org.apache.struts.action.ActionMessages, org.apache.commons.validator.Validator, javax.servlet.http.HttpServletRequest" depends="float" msg="errors.range"/>
        <validator name="doubleRange" classname="org.apache.struts.validator.FieldChecks" method="validateDoubleRange" methodParams="java.lang.Object, org.apache.commons.validator.ValidatorAction, org.apache.commons.validator.Field, org.apache.struts.action.ActionMessages, org.apache.commons.validator.Validator, javax.servlet.http.HttpServletRequest" depends="double" msg="errors.range"/>
        <validator name="creditCard" classname="org.apache.struts.validator.FieldChecks" method="validateCreditCard" methodParams="java.lang.Object, org.apache.commons.validator.ValidatorAction, org.apache.commons.validator.Field, org.apache.struts.action.ActionMessages, org.apache.commons.validator.Validator, javax.servlet.http.HttpServletRequest" depends="" msg="errors.creditcard"/>
        <validator name="email" classname="org.apache.struts.validator.FieldChecks" method="validateEmail" methodParams="java.lang.Object, org.apache.commons.validator.ValidatorAction, org.apache.commons.validator.Field, org.apache.struts.action.ActionMessages, org.apache.commons.validator.Validator, javax.servlet.http.HttpServletRequest" depends="" msg="errors.email"/>
        <validator name="url" classname="org.apache.struts.validator.FieldChecks" method="validateUrl" methodParams="java.lang.Object, org.apache.commons.validator.ValidatorAction, org.apache.commons.validator.Field, org.apache.struts.action.ActionMessages, org.apache.commons.validator.Validator, javax.servlet.http.HttpServletRequest" depends="" msg="errors.url"/>
        <!--

               This simply allows struts to include the validateUtilities into a page, it should
               not be used as a validation rule.

        -->
        <validator name="includeJavaScriptUtilities" classname="" method="" methodParams="" depends="" msg="" jsFunction="org.apache.commons.validator.javascript.validateUtilities"/>
    </global>
</form-validation>

 web.xml:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
  <display-name>Struts1.x_Project</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>login.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
  
  
  <servlet>
    <servlet-name>action</servlet-name>
    <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
    <init-param>
      <param-name>config</param-name>
      <param-value>/WEB-INF/struts-config.xml</param-value>
    </init-param>
    <init-param>
      <param-name>debug</param-name>
      <param-value>3</param-value>
    </init-param>
    <init-param>
      <param-name>detail</param-name>
      <param-value>3</param-value>
    </init-param>
    <load-on-startup>0</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>action</servlet-name>
    <url-pattern>*.do</url-pattern>
  </servlet-mapping>
</web-app>

 login.jsp:

<%@ page language="java" pageEncoding="gbk"%>
<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean"%> 
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html"%>
 
<html> 
	<head>
		<title><bean:message key="login.title"/></title>
	</head>
	<body>
	    ${Errormsg}
	    <a href="/Struts1.x_Project/i18n.do?l=zh&c=CN">中文</a>|<a href="/Struts1.x_Project/i18n.do?l=en&c=US">English</a>
		<html:form action="/login">
			<bean:message key="login.username"/> : <html:text property="username"/><html:errors property="username"/><br/>
			<bean:message key="login.password"/> : <html:password property="password"/><html:errors property="password"/><br/>
			
			<html:submit >
			<bean:message key="login.submit"/>
			</html:submit>
		</html:form>
	</body>
</html>

MealList.jsp:

<%@ page language="java" import="java.util.*" pageEncoding="gbk"%>
<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean"%> 
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html"%>
<%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>

<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>MealList</title>
    
	<meta http-equiv="pragma" content="no-cache">
	<meta http-equiv="cache-control" content="no-cache">
	<meta http-equiv="expires" content="0">    
	<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
	<meta http-equiv="description" content="This is my page">
	 

  </head>
  
  <body>
	     <logic:iterate id="MealList" name="MealList" >
	     ${MealList.id}
	     ${MealList.orderTime}
	     ${MealList.fullName}
	     ${MealList.mealTypeName}
	     ${MealList.price}
	     ${MealList.num}
	     ${MealList.total}
	     ${MealList.detail}
	     <c:if test="${m.ispay==0 }">
	     	未结算
	     </c:if>
	     <c:if test="${m.ispay==1 }">
	     	已结算
	     </c:if>
	    <br>
	    </logic:iterate> 
   
  </body>
</html>

orderMeal.jsp:

<%@ page language="java" pageEncoding="GBK"%>
<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean"%> 
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html"%>
<%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
 
<html> 
	<head>
		<title>JSP for OrderMealForm form</title>
	</head>
	<body>
		<html:form action="/orderMeal?action=add">
			订餐类型 : <html:select property="mealTypeID">
						<html:options collection="MealTypeList" property="id" labelProperty="name"/>
					</html:select><html:errors property="mealTypeID"/><br/>
			订餐数量 : <html:text property="num"/><html:errors property="num"/><br/>
			备注信息 : <html:textarea property="detail"/><html:errors property="detail"/><br/>
			<html:submit value="提交"/> 
		</html:form>
		
	</body>
</html>

register.jsp:

<%@ page language="java" pageEncoding="gbk"%>
<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean"%> 
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html"%>
 
<html> 
	<head>
		<title>JSP for RegisterForm form</title>
	</head>
	<body>
		 ${RegisterError}
		<html:form action="/register">
			登录名称 : <html:text property="username"/><html:errors property="username"/><br/>
			真实姓名 : <html:text property="fullName"/><html:errors property="fullName"/><br/>
			密&nbsp;&nbsp;&nbsp;&nbsp;码 : <html:password property="password"/><html:errors property="password"/><br/>
			确认密码 : <html:password property="repassword"/><html:errors property="repassword"/><br/>
			
			
			<html:submit value = "注册"/>
		</html:form>
	</body>
</html>

Success.jsp:

<%@ page language="java" import="java.util.*" pageEncoding="gbk"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>My JSP 'Success.jsp' starting page</title>
    
	<meta http-equiv="pragma" content="no-cache">
	<meta http-equiv="cache-control" content="no-cache">
	<meta http-equiv="expires" content="0">    
	<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
	<meta http-equiv="description" content="This is my page">
	<!--
	<link rel="stylesheet" type="text/css" href="styles.css">
	-->

  </head>
  
  <body>
   Welcome, ${UserSession.fullName}
   <hr>
   <a href="<%=path%>/orderMeal.do?action=prepare">订餐</a>|<a href="<%=path%>/orderMeal.do?action=listAll">查询订餐信息</a>
  </body>
</html>
发布了11 篇原创文章 · 获赞 19 · 访问量 625

猜你喜欢

转载自blog.csdn.net/z_x_c_/article/details/105371443