spring mvc + hibernate(简单登陆)

项目结构:





先是web.xml :

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
	<!-- 这是一个前端控制器 -->
	
   <display-name>s3h3</display-name>   
   <context-param>     
     <param-name>contextConfigLocation</param-name>     
     <param-value>classpath:applicationContext*.xml</param-value>
     <!-- hibernate 的配置文件 -->     
   </context-param>     
   <listener>     
   		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>     
   </listener>   
 
	
	
	
	
	<servlet>
		<servlet-name>test</servlet-name>
		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
		 <init-param>											<!-- 使用自己的上下文 -->
     		<param-name>contextConfigLocation</param-name>   	<!-- 这个必须这样写 -->  
     		<param-value>classpath:spring*.xml</param-value> 
     		<!-- 我吧这个配置文件放在了src/config 中,工具在编辑的时候会把源码及配置文件一起放到WEB-INF/classes下面。 -->	
    	</init-param>
		<load-on-startup>1</load-on-startup>
	</servlet>
	
	<servlet-mapping>
		<servlet-name>test</servlet-name>
		<url-pattern>*.do</url-pattern>
	</servlet-mapping>




  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index</welcome-file>
  </welcome-file-list>
  
</web-app>





applicationContext.xml:


<?xml version="1.0" encoding="UTF-8"?>   
<beans xmlns="http://www.springframework.org/schema/beans"  
 xmlns:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context"  
 xmlns:p="http://www.springframework.org/schema/p" xmlns:tx="http://www.springframework.org/schema/tx"  
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
 xsi:schemaLocation="   
         http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd   
   http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd   
   http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd   
   http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd">   
  
 <context:annotation-config />  
 <!-- 自动扫描所有注解该路径 -->  
 <context:component-scan base-package="com.action" />    
  <!-- 引入上下文--> 
 <context:property-placeholder location="classpath:/hibernate.properties" />
  
 
 
  <!--创建sessionFactory-->
 <bean id="sessionFactory"  
  class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">   
  <property name="dataSource" ref="dataSource" />   
  <property name="hibernateProperties">   
   <props>   
    <prop key="hibernate.dialect">${dataSource.dialect}</prop>   
    <prop key="hibernate.hbm2ddl.auto">${dataSource.hbm2ddl.auto}</prop>   
    <prop key="hibernate.hbm2ddl.auto">update</prop>   
   </props>   
  </property>   
  <property name="packagesToScan">   
   <list>   
    <value>com.model</value><!-- 扫描实体类,也就是平时所说的model -->   
   </list>   
    </property>   
 </bean>   
  
 <bean id="transactionManager"  
  class="org.springframework.orm.hibernate3.HibernateTransactionManager">   
  <property name="sessionFactory" ref="sessionFactory" />   
  <property name="dataSource" ref="dataSource" />   
 </bean>   
  
 <bean id="dataSource"  
  class="org.springframework.jdbc.datasource.DriverManagerDataSource">   
  <property name="driverClassName" value="${dataSource.driverClassName}" />   
  <property name="url" value="${dataSource.url}" />   
  <property name="username" value="${dataSource.username}" />   
  <property name="password" value="${dataSource.password}" />   
 </bean>   
    
  <!-- Dao的实现 -->   
 <bean id="userDao" class="com.daoImp.UserImp">    
  <property name="sessionFactory" ref="sessionFactory" />   
 </bean> 
   <!-- servlet的实现 -->   
 <bean id="userServlet" class="com.servletImp.UserServletImp"></bean>
 
   
 <tx:annotation-driven transaction-manager="transactionManager" />   
 <tx:annotation-driven mode="aspectj"/>   
     
  <aop:aspectj-autoproxy/>
    
    
</beans>  





hibernate.properties :

dataSource.password=xiaozhu
dataSource.username=root
dataSource.databaseName=test   
dataSource.driverClassName=com.mysql.jdbc.Driver   
dataSource.dialect=org.hibernate.dialect.MySQLDialect
#dataSource.serverName=localhost\:3306  
dataSource.url=jdbc\:mysql\://localhost\:3306/test
dataSource.properties=user\=${dataSource.username};databaseName\=${dataSource.databaseName};serverName\=${dataSource.serverName};password\=${dataSource.password}   
dataSource.hbm2ddl.auto=update  



spring-servlet.xml:

<?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:p="http://www.springframework.org/schema/p"     
        xmlns:context="http://www.springframework.org/schema/context"     
   xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd   
       http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd   
       http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd   
       http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd">  
       
  	<context:annotation-config />   
    <!-- 把标记了@Controller注解的类转换为bean -->     
    <context:component-scan base-package="com" />  
    
    
  	<!-- 启动Spring MVC的注解功能,完成请求和注解POJO的映射  
    <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" />   
     -->   
    
    <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" />
      
      
      
      
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    	<property name="viewClass" value="org.springframework.web.servlet.view.JstlView" /> <!--  必须的 返回的试图类型 -->
    	<property name="prefix" value="/jsp/" />   <!-- 返回值的前缀 -->
    	<property name="suffix" value=".jsp" />				<!-- 返回值得后缀 -->
    	 <!-- 这个例子返回的是  test ,  他会对其返回值进行字符串拼接成 : WEB-INF/jsp/test.jsp     也就是说要跳到这个页面去  --> 
    </bean>
    
</beans>


log4j.properties:

# This is the configuring for logging displayed in the Application Server
#log4j.rootCategory=ERROR,stdout

#stdout configure
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern= %d %p [%c] - <%m>%n

log4j.logger.com.xy.service.BaseServiceForHibernate=DEBUG


##########################
# Log configuration file #
##########################

# $Id: log4j.properties,v 1.2 2003/05/14 14:19:07 jmesnil Exp $

# Set the options for the Console appender.
# Console's layout is a PatternLayout, using the conversion pattern
# %d: current date in ISO8601 format
# %c: category name
# %p: priority of the logging event
# %m: the message
log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.layout=org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern=%d %c{1} %p - %m\n

log4j.appender.FileAppender=org.apache.log4j.RollingFileAppender
log4j.appender.FileAppender.File=e:/tmp.log
log4j.appender.FileAppender.MaxFileSize=2MB
log4j.appender.FileAppender.MaxBackupIndex=99
log4j.appender.FileAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.FileAppender.layout.ConversionPattern=%d %c{1} %p - %m\n



# Root logger set to ERROR using the Console appender defined above.
log4j.rootLogger=INFO, FileAppender, Console


数据库创建一个test下面在创建一个user 表 。 

表字段如model  层中的字段。



UserModel:

package com.model;

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

import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;

@Entity
@Table(name = "user")
public class User implements Serializable{
	
    private static final long serialVersionUID = 1L;   
    @Id  
    @Column(name = "id")   
    private int id;
    
    
    @Column(name = "userName")
	private String userName;
    
    
    @Column(name = "password")
	private String password;
    
    
    @Column(name = "age")
	private int age;
    
    
    @Column(name = "date")
	private Date date;
    
    
	public String getUserName() {
		return userName;
	}
	public void setUserName(String userName) {
		this.userName = userName;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	
	
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public Date getDate() {
		return date;
	}
	public void setDate(Date date) {
		this.date = date;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	public String toString(){
		return "userName:"+this.userName +",password:"+ this.password +",age:"+this.age+",date;"+ new SimpleDateFormat("yyyy-MM-dd").format(this.date);
	}
	
	
}


UserDao:

package com.dao;

import java.util.ArrayList;

import com.model.User;

public interface UserDao {

	public void saveUser(User user);
	public void deleteUser(User user);
	public ArrayList<User>  finedUser();
	public User getUserName(String userName);
}


UserDaoImp:


package com.daoImp;

import java.util.ArrayList;


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

import com.dao.UserDao;
import com.model.User;

public class UserImp extends HibernateDaoSupport  implements UserDao{

	public void saveUser(User user) {
		this.getHibernateTemplate().saveOrUpdate(user);
	}

	public void deleteUser(User user) {
		this.deleteUser(user);
	}

	public ArrayList<User> finedUser() {
	
		return null;
	}
	
	public User getUserName(String userName){
		String sql = "from User as user where user.userName='"+userName+"'";
		ArrayList<User> list = (ArrayList<User>)this.getHibernateTemplate().find(sql);
		if(list.size() == 1){
			return (User)list.get(0);
		}else{
			return null;
		}
	}

}


UserServlet:

package com.servlet;

import java.util.ArrayList;

import com.model.User;

public interface UserServlet {

	public void saveUser(User user);
	public void deleteUser(User user);
	public ArrayList<User>  finedUser();
	public User getUserName(String userName);
}

UserServletImp:

package com.servletImp;

import java.util.ArrayList;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.dao.UserDao;
import com.model.User;
import com.servlet.UserServlet;

@Service
public class UserServletImp implements UserServlet{
	@Autowired	
	//用@Autowired 就无需手动生成 get(), set() 方法,他会自动生成并且注入
	//userDao   与配置文件中的 userDao  相同。
	private UserDao userDao;
	
	public void saveUser(User user) {
		this.userDao.saveUser(user);
	}

	public void deleteUser(User user) {
		this.userDao.deleteUser(user);
	}

	public ArrayList<User> finedUser() {
		return this.userDao.finedUser();
	}

	public User getUserName(String userName) {
		return this.userDao.getUserName(userName);
	}
	
	
	
}


UserContro:

package com.action;

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

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.propertyeditors.CustomDateEditor;
import org.springframework.stereotype.Controller;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.WebDataBinder;
import org.springframework.web.bind.annotation.InitBinder;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

import com.model.User;
import com.servlet.UserServlet;


@Controller
@RequestMapping("/userController")
public class UserController {

    protected final transient Log log = LogFactory   
    .getLog(UserController.class);   
    @Autowired  
    private UserServlet userServlet;   
    public UserController(){   
           
    } 
    
    
	@RequestMapping(value = "/login",method = RequestMethod.GET)
	public String loginGet(){
		System.out.println("get");
		return "login";
	}
    
	
	@RequestMapping(value = "/login",method = RequestMethod.POST)
	public String loginPost(User user ,BindingResult result){
		//提交form 时 自动注入  User  对象 但只能接收 String , int 类型的数据。
		//如果要接收 Date 类型的数据就得用下面的 数据绑定 。
		//System.out.println(user);
		//userServlet.saveUser(user);
		boolean b = false;
		User loginUser = this.userServlet.getUserName(user.getUserName());
		if(loginUser != null){
			if(loginUser.getPassword().equals(user.getPassword())){
				b = true;
			}else{
				b = false;
			}
		}else{
			b = false;
		}
		
		if(b){
			return "redirect:/userController/succer.do";
		}else{
			return "redirect:/userController/fail.do";
		}
	}
	
	
	@RequestMapping(value = "/succer")
	public String succer(){
		System.out.println("重定向了");
		return "login_succer";
	}
	
	@RequestMapping(value = "/fail")
	public String fail(){
		System.out.println("重定向了");
		return "login_fail";
	}
	
	
	//数据绑定
	@InitBinder  
	public void initBinder(WebDataBinder binder) {  
	    SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");  
	    dateFormat.setLenient(false);  
	    binder.registerCustomEditor(Date.class, new CustomDateEditor(dateFormat, true));  
	    //注册一个Date 类型的绑定器 。
	} 
    
}



login.jsp:

<%@ page language="java" contentType="text/html; charset=utf-8"
    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=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>

<h1>登陆</h1>
<form action="" method="post">
	LongName:<input type="text" id="userName" name='userName'></br>
	Password:<input type="password" id="password" name='password'></br>
	<input type="submit" value="Login">
</form>
</body>
</html>


所需jar 自行下载 。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值