struts登录系统兑现

struts登录系统实现
在java ee中讲了第一个web实例,具体见博文:http://hnzhoujunmei.iteye.com/admin/blogs/1004827
非常简单的一个实例,没有数据库连接,本实例在这个实例基础上添加struts功能和数据库功能
在上一个实例基础上用myeclipse的添加struts功能,即生成了一个struts的资源文件,
ApplicationResources.properties:
# Resources for parameter 'com.qdu.struts.ApplicationResources'
# Project strustLoginDemo
#message file
login.username=username is null!
login.password=password is null!

项目的目录结构:


struts登录系统兑现

注意该文件不能写入中文。可以使用java中的native2ascii.exe将中文转换为字符串。
然后新建Action,Form等,并可在可视化环境下进行配置,如form的属性等
Action类:
/*
 * Generated by MyEclipse Struts
 * Template path: templates/java/JavaClass.vtl
 */
package com.qdu.struts.action;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
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.qdu.struts.BO.LoginBO;
import com.qdu.struts.form.LoginForm;

/** 
 * MyEclipse Struts
 * Creation date: 04-14-2011
 * 
 * XDoclet definition:
 * @struts.action path="/login" name="loginForm" input="/login.jsp" scope="request" validate="true"
 * @struts.action-forward name="failed" path="/fail.jsp"
 * @struts.action-forward name="success" path="/success.jsp"
 */
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

//        调用业务处理类
		LoginBO login = new LoginBO();
		if(login.validate(loginForm.getUsername(),loginForm.getPassword())){
			request.setAttribute("username", loginForm.getUsername());
			return mapping.findForward("success");
		}
		else return mapping.findForward("failed");
	}
}


业务逻辑类:
package com.qdu.struts.BO;

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

public class LoginBO {

	public boolean validate(String username, String password) {
		Connection conn = null;
		try {
			Class.forName("org.gjt.mm.mysql.Driver");
			String url = "jdbc:mysql://localhost:3306/junit";
			conn = DriverManager.getConnection(url,"root","root");
			Statement stmt = conn.createStatement();
			String sql = "select * from usertable where name='"+username+"' and password = '"+password+"'";
			
			ResultSet rs = stmt.executeQuery(sql);
			if(rs.next()){return true;}
			else return false;
			
			
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		} catch (SQLException e) {
			e.printStackTrace();
		}
		
		return false;
	}

}

表单类:
/*
 * Generated by MyEclipse Struts
 * Template path: templates/java/JavaClass.vtl
 */
package com.qdu.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.action.ActionMessage;

/**
 * MyEclipse Struts Creation date: 04-14-2011
 * 
 * XDoclet definition:
 * 
 * @struts.form name="loginForm"
 */
public class LoginForm extends ActionForm {
	/*
	 * 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) {//验证,相当于JavaScript的验证
		ActionErrors errors = new ActionErrors();
		if (this.username == null || this.username.length() < 1)
			errors.add("username", new ActionMessage("login.username"));
	if (this.password == null || this.username.length() < 1)
		errors.add("password", new ActionMessage("login.password"));
	return errors;
}

	/**
	 * Method reset
	 * 
	 * @param mapping
	 * @param request
	 */
	public void reset(ActionMapping mapping, HttpServletRequest request) {
		// TODO Auto-generated method stub
		this.username = null;
		this.password = null;
	}

	/**
	 * 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;
	}
}

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

<struts-config>
  <data-sources />
  <form-beans >
    <form-bean name="loginForm" type="com.qdu.struts.form.LoginForm" />

  </form-beans>

  <global-exceptions />
  <global-forwards />
  <action-mappings >
    <action
      attribute="loginForm"
      input="/login.jsp"
      name="loginForm"
      path="/login"
      scope="request"
      type="com.qdu.struts.action.LoginAction">
      <forward name="failed" path="/fail.jsp" />
      <forward name="success" path="/success.jsp" />
    </action>

  </action-mappings>

  <message-resources parameter="com.qdu.struts.ApplicationResources" />
</struts-config>

web.xml:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.5" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee   http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
  <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>
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
  
  <filter>
  <filter-name> FormFilter</filter-name>
  <filter-class>com.qdu.struts.BO.FormFilter</filter-class>
  </filter>
  <filter-mapping>
  <filter-name>FormFilter</filter-name>
  <url-pattern>/*</url-pattern>
  </filter-mapping>
  
</web-app>