`
zbg1983
  • 浏览: 38277 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

spring 企业开发

阅读更多
1,doman
package com.baobaotao.domain;

import java.io.Serializable;
import java.util.Date;

public class LoginLog implements Serializable {
private int loginLogId;
private int userId;
private String ip;
private Date loginDate;
         ....省略getter ,setter 方法
}


package com.baobaotao.domain;

import java.io.Serializable;
import java.util.Date;

public class User implements Serializable {
     private int userId;
     private String userName;
     private String password;
     private int credits;
     private String lastIp;
     private Date lastVisit;
     .....省略getter,setter方法
}


2.dao

package com.baobaotao.dao;

import com.baobaotao.domain.LoginLog;

//
public interface LoginLogDao {
public void insertLoginLog(LoginLog loginLog);
}


package com.baobaotao.dao;

import com.baobaotao.domain.User;

public interface UserDao {


    public int getMatchCount(String userName,String password);
   
    public User findUserByUserName(String userName);
   
    public void updateLoginInfo(User user);
}


package com.baobaotao.dao.jdbc;

import org.springframework.jdbc.core.JdbcTemplate;

import com.baobaotao.dao.LoginLogDao;
import com.baobaotao.domain.LoginLog;

public class LogonLogDaoImpl implements LoginLogDao {

private JdbcTemplate jdbcTemplate;
public void setJdbcTemplate(JdbcTemplate jdbcTemplate){
this.jdbcTemplate=jdbcTemplate;
}

public void insertLoginLog(LoginLog loginLog) {
String sqlStr=" insert into t_login_log(user_id,ip,login_datetime) "
+" values(?,?,?) ";
Object[] args={loginLog.getUserId(),loginLog.getIp(),loginLog.getLoginDate()};
jdbcTemplate.update(sqlStr,args);
}

}




package com.baobaotao.dao.jdbc;

import java.sql.ResultSet;
import java.sql.SQLException;

import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowCallbackHandler;

import com.baobaotao.dao.UserDao;
import com.baobaotao.domain.User;

public class UserDaoImpl implements UserDao {

private JdbcTemplate jdbcTemplate;

public void setJdbcTemplate(JdbcTemplate jdbcTemplate){
this.jdbcTemplate=jdbcTemplate;
}

public User findUserByUserName(final String userName) {

String sqlStr=" select user_id,user_name,credits "+
" from t_user where user_name=? ";
final User user=new User();
jdbcTemplate.query(sqlStr, new Object[]{userName},new RowCallbackHandler(){
public void processRow(ResultSet rs)throws SQLException{
user.setUserId(rs.getInt("user_id"));
user.setUserName(userName);
user.setCredits(rs.getInt("credits"));
}
});
return user;
}

public int getMatchCount(String userName, String password) {

String sqlStr=" select count(*) from t_user "+
" where user_name=? and password=? ";
return jdbcTemplate.queryForInt(sqlStr, new Object[]{userName,password});
}

public void updateLoginInfo(User user) {
String sqlStr=" update t_user set last_visit=?,last_ip=?,credits=? "
+" where user_id=? ";
jdbcTemplate.update(sqlStr,new Object[]{user.getLastVisit(),user.getLastIp(),user.getCredits(),user.getUserId()});
}

}



3,service
package com.baobaotao.service;

import com.baobaotao.dao.LoginLogDao;
import com.baobaotao.dao.UserDao;
import com.baobaotao.domain.User;

public interface UserService {

//����û���/�������ȷ��
public boolean hasMatchUser(String userName,String password);

//���û���Ϊ�������User����
public User findUserByUserName(String userName);

//�����û�����½ʱ���IP��Ϣ,ͬʱ��¼�û���¼��־
public void loginSuccess(User user);
}



package com.baobaotao.service;

import com.baobaotao.dao.LoginLogDao;
import com.baobaotao.dao.UserDao;
import com.baobaotao.domain.LoginLog;
import com.baobaotao.domain.User;

public class UserServiceImpl implements UserService {

private UserDao userDao;
private LoginLogDao loginLogDao;

public void setUserDao(UserDao userDao){
this.userDao=userDao;
}

public void setLoginLogDao(LoginLogDao loginLogDao){
this.loginLogDao=loginLogDao;
}

public User findUserByUserName(String userName) {
// TODO Auto-generated method stub
return userDao.findUserByUserName(userName);
}

public boolean hasMatchUser(String userName, String password) {
// TODO Auto-generated method stub
int matchCount=userDao.getMatchCount(userName, password);
return matchCount>0;
}

public void loginSuccess(User user) {
user.setCredits(5+user.getCredits());
LoginLog loginLog=new LoginLog();
loginLog.setUserId(user.getUserId());
loginLog.setIp(user.getLastIp());
loginLog.setLoginDate(user.getLastVisit());
userDao.updateLoginInfo(user);
loginLogDao.insertLoginLog(loginLog);
}

}



4,web
package com.baobaotao.web;

public class LoginCommand {
private String userName;
private String password;

public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}

}


package com.baobaotao.web;

import java.util.Date;

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

import org.springframework.validation.BindException;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.AbstractCommandController;

import com.baobaotao.domain.User;
import com.baobaotao.service.UserService;

public class LoginController extends AbstractCommandController {
private UserService userService;

public LoginController() {
setCommandClass(LoginCommand.class);
}

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

@Override
protected ModelAndView handle(HttpServletRequest request,
HttpServletResponse response, Object command, BindException errors)
throws Exception {
LoginCommand loginCommand = (LoginCommand) command;
boolean isValidUser = userService.hasMatchUser(loginCommand
.getUserName(), loginCommand.getPassword());
if (!isValidUser) {
return new ModelAndView("login", "error", "用户名或密码错误。");
} else {
User user = userService.findUserByUserName(loginCommand
.getUserName());
user.setLastIp(request.getLocalAddr());
user.setLastVisit(new Date());
userService.loginSuccess(user);
request.getSession().setAttribute("user", user);
return new ModelAndView("main");
}
}

}


package com.baobaotao.web;

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

import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.AbstractController;

public class LoginPage extends AbstractController {

@Override
protected ModelAndView handleRequestInternal(HttpServletRequest request,
HttpServletResponse response) throws Exception {

return new ModelAndView("login");
}
}


5.装配dao
baobaotao-dao.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "http://www.springframework.org/dtd/spring-beans-2.0.dtd">
<beans>
<!-- 配置数据源 -->
<bean id="dataSource"
      class="org.apache.commons.dbcp.BasicDataSource"
      destroy-method="close">
    <property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
    <property name="url" value="jdbc:mysql://localhost:3306/sampledb"></property>
    <property name="username" value="root"></property>
    <property name="password" value="root"></property>
  </bean>
 
  <!-- 配置jdbc模板 -->
  <bean id="jdbcTemplate"
  class="org.springframework.jdbc.core.JdbcTemplate">
  <property name="dataSource" ref="dataSource"></property>
  </bean>
 
  <!-- 配置dao -->
  <bean id="loginLogDao"
  class="com.baobaotao.dao.jdbc.LogonLogDaoImpl">
  <property name="jdbcTemplate" ref="jdbcTemplate"></property>
  </bean>
 
  <bean id="userDao"
  class="com.baobaotao.dao.jdbc.UserDaoImpl">
  <property name="jdbcTemplate" ref="jdbcTemplate"></property>
  </bean>
</beans>


baobaotao-service.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "http://www.springframework.org/dtd/spring-beans-2.0.dtd">
<beans>
<!-- 事务管理器 -->
<bean id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">

<property name="dataSource" ref="dataSource"></property>
</bean>

<bean id="userSerivceTarget"
class="com.baobaotao.service.UserServiceImpl">

<property name="userDao" ref="userDao"></property>
<property name="loginLogDao" ref="loginLogDao"></property>
</bean>

<!-- 声明式事务 -->
<bean id="userService"
class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">

<property name="transactionManager" ref="transactionManager"></property>
<property name="target" ref="userSerivceTarget"></property>
<property name="transactionAttributes">
<props>
<prop key="findUserByUserName">
PROPAGATION_REQUIRED,readOnly
</prop>

<prop key="hasMatchUser">
PROPAGATION_REQUIRED,readOnly
</prop>

<prop key="loginSuccess">PROPAGATION_REQUIRED</prop>
</props>
</property>
</bean>
</beans>

log4j.properties

log4j.rootLogger=INFO,A1
log4j.appender.A1=org.apache.log4j.ConsoleAppender
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%d %5p [%t] (%F:%L) - %m%n

baobaotao-servlet.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "http://www.springframework.org/dtd/spring-beans-2.0.dtd">
<beans>
<bean name="loginController"
class="com.baobaotao.web.LoginController">

<property name="userService" ref="userService"></property>
</bean>

<bean name="loginPage"
class="com.baobaotao.web.LoginPage">
</bean>

<bean id="urlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="mappings">
<props>
<prop key="/loginController.html">loginController</prop>
<prop key="/index.html">loginPage</prop>
</props>
</property>
</bean>

<bean id="viewResolver"
class="org.springframework.web.servlet.view.InternalResourceViewResolver">

<property name="prefix">
<value>/WEB-INF/jsp/</value>
</property>
<property name="suffix">
<value>.jsp</value>
</property>
</bean>
</beans>

web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
 
  <context-param>
  <param-name>contextConfigLocation</param-name>
  <param-value>
  classpath:baobaotao-dao.xml,classpath:baobaotao-service.xml
  </param-value>
  </context-param>
 
  <listener>
  <listener-class>
  org.springframework.web.context.ContextLoaderListener
  </listener-class>
  </listener>
 
  <servlet>
  <servlet-name>baobaotao</servlet-name>
  <servlet-class>
  org.springframework.web.servlet.DispatcherServlet
  </servlet-class>
  </servlet>
 
  <servlet-mapping>
  <servlet-name>baobaotao</servlet-name>
  <url-pattern>*.html</url-pattern>
  </servlet-mapping>
</web-app>


build.xml
<?xml version="1.0" encoding="utf-8"?>
<!--
编译worklog中的数据库连接
-->
<project basedir="." default="build" name="baobaotao">

<!-- 定义变量 -->
<property name="project.name" value="baobaotao" />
<property name="src.dir" value="src" />
<!-- Java源文件目录 -->

<!-- 编译好的类及生成的javadoc文档目录 -->
<property name="build.dir" value="WebRoot/WEB-INF/classes" />
<property name="weblib.dir" value="WebRoot/WEB-INF/lib" />
<property name="war.dir" value="WebRoot" />
<property name="dist.dir" value="dist" />
<property name="spring.root" value="../spring" />
<property name="jdbclib.root" value="../extraLib/jdbclib" />

<!-- 用到的外部类包,即classpath -->
<path id="project.class.path">
<fileset dir="${spring.root}/dist">
<include name="spring.jar" />
</fileset>
<fileset dir="${spring.root}/lib/log4j">
<include name="log4j-1.2.14.jar" />
</fileset>
<fileset dir="${spring.root}/lib/jakarta-commons">
<include name="commons-dbcp.jar" />
<include name="commons-logging.jar" />
<include name="commons-pool.jar" />
</fileset>
<fileset dir="${spring.root}/lib/jakarta-taglibs">
<include name="standard.jar" />
</fileset>
<fileset dir="${spring.root}/lib/j2ee">
<include name="servlet-api.jar" />
<include name="jstl.jar" />
</fileset>
</path>
<target name="build" depends="clean,warfile">
</target>

<target name="clean" description="Clean output dirs (build, weblib, dist)">
<delete dir="${build.dir}" />
<delete dir="${weblib.dir}" />
<delete dir="${dist.dir}" />
</target>

<target name="compile" description="编译java">
<mkdir dir="${build.dir}" />
<javac destdir="${build.dir}" srcdir="${src.dir}">
<compilerarg line="-encoding UTF-8" />
<classpath refid="project.class.path" />
</javac>
<copy todir="${build.dir}">
<fileset dir="${src.dir}">
<include name="**/*.properties" />
<include name="**/*.xml" />
</fileset>
</copy>
<mkdir dir="${weblib.dir}" />
<copy todir="${weblib.dir}" preservelastmodified="true">
<fileset dir="${spring.root}/dist">
<include name="spring.jar" />
</fileset>
<fileset dir="${spring.root}/lib/log4j">
<include name="log4j-1.2.14.jar" />
</fileset>
<fileset dir="${spring.root}/lib/jakarta-commons">
<include name="commons-dbcp.jar" />
<include name="commons-logging.jar" />
<include name="commons-pool.jar" />
</fileset>
<fileset dir="${spring.root}/lib/j2ee">
<include name="jstl.jar" />
</fileset>
<fileset dir="${spring.root}/lib/jakarta-taglibs">
<include name="standard.jar" />
</fileset>
<fileset dir="${jdbclib.root}">
<include name="mysql.jar" />
</fileset>
</copy>
</target>

<target name="warfile" depends="compile" description="创建Web应用程序War包">
<mkdir dir="${dist.dir}" />
<war warfile="${dist.dir}/${project.name}.war" basedir="${war.dir}" webxml="${war.dir}/WEB-INF/web.xml">
<include name="*" />
<include name="images/**" />
<include name="WEB-INF/*.*" />
<include name="WEB-INF/lib/**" />
<include name="WEB-INF/jsp/**" />
<include name="WEB-INF/classes/**" />
<exclude name="WEB-INF/web.xml" />
<exclude name="**/.*" />
</war>
</target>

</project>

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics