struts2+hibernate3+spring3(ssh2)框架下的web應用

是騾子是馬,跑兩步就知道了,因此先寫個程序跑起來再說。首先創建個空的數據庫在MySql裏面,名字叫sbpms,而後創建一個表叫User,表有id,用戶名,密碼,角色,上級,郵箱。因此以下操做。html

再插入一條數據INSERT INTO `user` VALUES (1,'ROOT',123','root@root.com',0,0);
java

而後在Eclipse的WebContent下WEB-PAGE根目錄下建立兩個jsp頁面。Login.jsp和Test.jspspring

Login.jsp內容爲sql

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%@ taglib prefix="s" uri="/struts-tags"%>
<html>
<head>
<title>Login</title>
</head>
<body id="login">
<center>
<s:actionerror id="actionError"/>
</center>
<s:form action="login">
    <s:textfield name="user.name" label="name"></s:textfield>
    <s:password name="user.password" label="password"></s:password>
    <s:submit></s:submit>
</s:form>
</body>
</html>

Test.jsp內容爲shell

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Test</title>
</head>
<body>
Test
</body>
</html>

而後在src的action中添加數據庫

ManageUserAction

.java
app

內容爲jsp

package com.sbpms.action;

import com.opensymphony.xwork2.ActionSupport;
import com.sbpms.bean.User;
import com.sbpms.service.UserService;

/**
 * This action is used to validate and deal with login processing
 * @author IanLi
 *
 */
@SuppressWarnings("serial")
public class ManageUserAction extends ActionSupport {

    private UserService service;
    private User user;

    public UserService getService() {

        return service;
    }

    public void setService(UserService service) {

        this.service = service;
    }

    public User getUser() {

        return user;
    }

    public void setUser(User user) {

        this.user = user;
    }

    /*
     * This method is used to the login JSP, include the operations of call
     * database and do validation.
     */
    public String login() throws Exception {
        switch (this.user.getRole()) {
        case 0:
            return SUCCESS;
        case 1:
            return SUCCESS;
        case 2:
            return SUCCESS;
        case 3:
            return SUCCESS;
        case 4:
            return SUCCESS;
        default:
            return INPUT;
        }

    }


    public void validateLogin() {
        
        this.clearActionErrors();

        if (null == this.user) {
            this.addActionError("User name must not be empty");
            return;
        }

        // Judge the the name input by whether it is empty.
        if (this.user.getName() == "" || null == this.user.getName()) {
            this.addActionError("User name must not be empty");
        } else {
             
            System.out.println(this.user.toString());
            
            // Judge the password input by whether it it empty.
            if (this.user.getPassword().isEmpty()
                    ||null == this.user.getPassword()) {
                this.addActionError("Password must not be empty");
            } else {

                // Judge the input name and password by whether they are accord
                // with the database.
                this.user = this.service.login(this.user);
                if (null == this.user) {
                    this.addActionError("User name or Password error");
                    this.user = null;
                } else {
                }
            }
        }

    }
}


在com.sbpms.bean中添加User.java和User.hbm.xml文件
ide

User.java爲ui

package com.sbpms.bean;

/**
 *Bean for save the user
 * 
 * @author IanLi
 */
public class User {

    private String pre_password;
    private Integer id;
    private String name;
    private String password;
    private String e_mail;
    private int role;
    private int report_to;
    
    public String getPre_password() {
        return pre_password;
    }
    
    public void setPre_password(String pre_password) {
        this.pre_password = pre_password;
    }
    
    public Integer getId() {
        return id;
    }
    
    public void setId(Integer id) {
        this.id = id;
    }
    
    public String getName() {
        return name;
    }
    
    public void setName(String name) {
        this.name = name;
    }
    
    public String getPassword() {
        return password;
    }
    
    public void setPassword(String password) {
        this.password = password;
    }
    
    public String getE_mail() {
        return e_mail;
    }
    
    public void setE_mail(String e_mail) {
        this.e_mail = e_mail;
    }
    
    public int getRole() {
        return role;
    }
    
    public void setRole(int role) {
        this.role = role;
    }
    
    public int getReport_to() {
        return report_to;
    }
    
    public void setReport_to(int report_to) {
        this.report_to = report_to;
    }
    
    @Override
    public String toString()
    {
        return name+"  "+password;
    }

}


User.hbm.xml爲

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC 
    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="com.sbpms.bean">
  <!-- <generator class="increment"/> -->
  <class name="User" table="user">
    <id name="id" column="id" type="java.lang.Integer">
      <generator class="increment"></generator>
    </id>
    <property name="name" column="name" type="java.lang.String"></property>
    <property name="password" column="password" type="java.lang.String"></property>
    <property name="e_mail" column="e_mail" type="java.lang.String"></property>
    <property name="role" column="role" type="java.lang.Integer"></property>
    <property name="report_to" column="report_to" type="java.lang.Integer"></property>
  </class>
</hibernate-mapping>

接着開始寫業務邏輯層

我將dao層和service層都用接口申明,而後在其impl子文件夾下實現。這樣使得項目具備更好的擴展性。

下面是com.sbpms.dao下面創建UserDao.java,內容爲

package com.sbpms.dao;

import com.sbpms.bean.User;

/**
 * Define the interface of User DAO
 * 
 * @author IanLi
 */
public interface UserDao {


    /**
     * Get the information of the user
     * 
     * @param user
     *            the user with information of name and password
     * @return the detail information of the user ligin
     */
    public User selectUser(User user);
}


com.sbpms.dao.impl下創建UserDaoImpl.java內容爲

package com.sbpms.dao.impl;

import java.util.List;

import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

import com.sbpms.bean.User;
import com.sbpms.dao.UserDao;

/**
 * The implements for User DAO interface
 * 
 * @author IanLi
 */
public class UserDaoImpl extends HibernateDaoSupport implements UserDao {


    /*
     * Search the user from database and judge whether it is correct.
     * 
     * @see
     * com.augmentum.ian.ihds.dao.UserDao#searchUser(com.augmentum.ian.ihds.
     * bean.User)
     */
    @SuppressWarnings("unchecked")
    @Override
    public User selectUser(User user) {

        String sqlString = "from User user where user.name=?";
        String name = user.getName();
        List<User> userList = this.getHibernateTemplate().find(sqlString,
                name);
        if (userList.size() != 0) {
            // If the database return more than one user by the name, We only
            // get the first one. In fact this is a wrong database.
            User userR = userList.get(0);
            // Judge the name and the password between the input and which get
            // from database.
            if (userR.getName().equals(user.getName())
                    && userR.getPassword().equals(user.getPassword())) {
                return userR;
            }
            return null;
        }
        return null;
    }
}

com.sbpms.service下創建UserService.java,內容爲

package com.sbpms.service;

import com.sbpms.bean.User;

/**
 * Define the interface for the User DAO
 * 
 * @author IanLi
 */
public interface UserService {

    /**
     * Used to get message of who login
     * 
     * @param user
     *            the information of the name and password that who login
     * @return the detail information of user who login
     */
    public User login(User user);
}

com.sbpms.service.impl下創建UserServiceImpl.java內容爲

package com.sbpms.service.impl;

import com.sbpms.bean.User;
import com.sbpms.dao.UserDao;
import com.sbpms.service.UserService;

/**
 *The implement of user service. Accomplish most business logic here
 * 
 * @author IanLi
 */
public class UserServiceImpl implements UserService {

    private UserDao userDao;
    private User newUserForService;

    public UserDao getUserDao() {

        return userDao;
    }

    public void setUserDao(UserDao userDao) {

        this.userDao = userDao;
    }

    public User getNewUserForService() {

        return newUserForService;
    }

    public void setNewUserForService(User newUserForService) {

        this.newUserForService = newUserForService;
    }

    /*
     * Get message of user who login
     */
    @Override
    public User login(User user) {

        return userDao.selectUser(user);

    }

}



搞定,而後在Login.jsp上面點右鍵,run on service。獲得輸入界面,輸入剛纔插入的用戶名root和密碼123,獲得成功的界面Test。若是輸出錯誤,獲得錯誤提示。

 

這樣,第一個程序就運行起來了,成功的連接了數據庫並進行了查詢操做和頁面錯誤提示。

完整的源代碼我放在愛問上面,地址將在審覈經過後給出。

code: http://ishare.iask.sina.com.cn/f/18694480.html

相關文章
相關標籤/搜索