Spring+Struts2开发

实习第二周2

到了周三下午,我SSH学的差不多的时候,PM看了我的工作情况,跟我说你用hibernate干吗,这是一个笨重的东西,直接用Spring和Struts。

然后我又只能调转方向去研究Spring+Struts2。

不使用hibernate,那么只能使用jdbctemplete,不过可以使用jdbcdaosupport。在extends JdbcDaoSupport类后可以使用this.getJdbcTemplate()获得jdbctemplete,在Spring配置注入时也只需要注入datasourse,以下为各种代码。

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tx="http://www.springframework.org/schema/tx"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd">
    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
        <property name="driverClassName" value="com.mysql.jdbc.Driver" />
        <property name="url" value="jdbc:mysql://localhost:3306/icsa?characterEncoding=UTF-8" />
        <property name="username" value="root" />
        <property name="password" value="" />
    </bean>
<!--
    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource" />
    </bean>
    <tx:annotation-driven transaction-manager="transactionManager" />

    <bean id = "jdbcTemplate" class = "org.springframework.jdbc.core.JdbcTemplate">
        <property name = "dataSource" ref="dataSource"/>
    </bean>-->
    <bean id="userDAO" class="dao.impl.UserDAOImpl">
        <property name="dataSource" ref="dataSource" />
    </bean>

    <bean id="userService" class="service.impl.UserServiceImpl">
        <property name="userDAO" ref="userDAO" />
        <constructor-arg ref="userDAO" />
    </bean>
    <bean name="LoginAction" class="action.LoginAction">
        <property name="userService" ref="userService" />
    </bean>
    <bean name="TestAction" class="action.TestAction">
        <property name="userService" ref="userService" />
    </bean>
</beans>

在具体增删改查时则不用hql,改用原来的sql,为了安全,这里使用了PreparedStatement编译SQL语句。

package dao.impl;

import common.DaoException;
import dao.UserDao;
import entity.UserEntity;
import org.springframework.jdbc.core.PreparedStatementSetter;
import org.springframework.jdbc.core.RowMapper;
import org.springframework.jdbc.core.support.JdbcDaoSupport;

import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;

/**
 * Created by PRO_HD_Rorz on 2015/8/23.
 */
public class UserDAOImpl extends JdbcDaoSupport implements UserDao{
    @Override
    public boolean exists(UserEntity userEntity) {
        return false;
    }

    @Override
    public String getPassword(UserEntity userEntity) {
        String sql = "select password from user where username like ?";
        //List<java.lang.String> gpassword = template.find(hql, userEntity.getName());
        java.util.List<String> password;
        password = this.getJdbcTemplate().query(sql, new Object[]{userEntity.getUsername()}, new UserRowMapper());

        if(password.size() > 0)
        {
            return password.get(0);
        }
        return null;
    }

    @Override
    public int create(Object object) throws DaoException {
        int result = 0;
        if (object == null || object instanceof UserEntity) return result;


        final UserEntity userEntity = (UserEntity) object;
        String sql = "insert into user(username, password, role, reserve1, reserve2, reserve3, reserve4) values (?,?,?,?,?,?,?)";
        try
        {
            result = this.getJdbcTemplate().update(sql,new PreparedStatementSetter() {
                @Override
                public void setValues(PreparedStatement ps) throws SQLException {
                    ps.setString(1, userEntity.getUsername());
                    ps.setString(2, userEntity.getPassword());
                    ps.setString(3, userEntity.getRole());
                    ps.setString(4, userEntity.getReserve1());
                    ps.setString(5, userEntity.getReserve2());
                    ps.setString(6, userEntity.getReserve3());
                    ps.setString(7, userEntity.getReserve4());
                }
            });
        }
        catch (Exception e)
        {
            throw new DaoException("error");
        }

        //this.getJdbcTemplate().update("insert into user values (?)", userEntity);
        return result;
    }

    @Override
    public int updata(Object object) throws DaoException {
        int result = 0;
        if (object == null || object instanceof UserEntity) return result;

        final UserEntity userEntity = (UserEntity) object;
        String sql = "update user set password = ?, username = ? where user_id = ?";
        try
        {
            result = this.getJdbcTemplate().update(sql, new PreparedStatementSetter() {
                @Override
                public void setValues(PreparedStatement ps) throws SQLException {
                    ps.setString(1, userEntity.getPassword());
                    ps.setString(2, userEntity.getUsername());
                    ps.setInt(3, userEntity.getUserId());
                    ps.setString(4, userEntity.getReserve1());
                    ps.setString(5, userEntity.getReserve2());
                    ps.setString(6, userEntity.getReserve3());
                    ps.setString(7, userEntity.getReserve4());
                }
            });
        }
        catch (Exception e)
        {
            throw new DaoException("error");
        }

        return result;
    }

    @Override
    public int delete(Object object) throws DaoException {
        int result = 0;
        if (object == null || object instanceof UserEntity) return result;

        UserEntity userEntity = (UserEntity) object;
        String sql = "delete from user where user_id = ?";
        try
        {
            result = this.getJdbcTemplate().update(sql, userEntity.getUserId());

        }
        catch (Exception e)
        {
            throw new DaoException("error");
        }


        return result;
    }

    @Override
    public Object find(Object object) throws DaoException {
        return null;
    }

    @Override
    public List<Object> findall(Object object) {
        return null;
    }

    @Override
    public int findcount(Object object) {
        return 0;
    }

    private class UserRowMapper implements RowMapper {
        public Object mapRow(final ResultSet rs, final int rowNum) throws SQLException {
            String pwd = new String();
            pwd = rs.getString("password");
            return pwd;
        }
    }

}

然后Struts2的Action处理

package action;

import com.opensymphony.xwork2.ModelDriven;
import common.BaseAction;
import entity.UserEntity;
import common.ServiceManager;
import service.impl.UserServiceImpl;

/**
 * Created by PRO_HD_Rorz on 2015/7/21.
 */
public class LoginAction extends BaseAction implements ModelDriven<UserEntity>{
//public class LoginAction{
    private UserEntity userEntity = new UserEntity();
    private UserServiceImpl userService;

    public UserEntity getModel()
    {
        return userEntity;
    }

    public String execute () throws Exception {

        serviceManager = new ServiceManager();
        UserServiceImpl userService = serviceManager.getUserService();
        try
        {

            if(userService.verifyUser(userEntity))
            {
                saveCookie("username", userEntity.getUsername(), 24*60*60);
                //HttpSession session = request.getSession();
                //session.setAttribute("name", userEntity.getName());
                //session.setMaxInactiveInterval(60 * 60);
                return SUCCESS;
            }
        }
        catch (Exception e)
        {
        	System.out.println(e.getMessage());
        }

        return ERROR;
    }

    public void setUserService(UserServiceImpl userService) {
        this.userService = userService;
    }

    public UserServiceImpl getUserService() {
        return userService;
    }


}

login的jsp

<%@ taglib prefix="s" uri="/struts-tags" %>
<%--
  Created by IntelliJ IDEA.
  User: PRO_HD_Rorz
  Date: 2015/7/21
  Time: 17:06
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>login</title>
</head>
<body>
  <s:form action="login" >
    <s:textfield label="用户名" name="username" />
    <s:password label="密码" name="password" />
    <s:submit value="登陆" />
  </s:form>
</body>
</html>

 

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注