手把手搭建一个SSM项目(适合新手)

ssm项目整合(Spring+SpringMVC+Mybatis)


该项目实现的功能有

1.用户登录

2.新增用户信息

3.返回所有用户信息

4.更新用户信息

5删除用户信息


项目源码下载

项目结构:


手把手搭建一个SSM项目(适合新手)_第1张图片
手把手搭建一个SSM项目(适合新手)_第2张图片

具体搭建步骤:

创建数据库和对应的表结构

SET FOREIGN_KEY_CHECKS=0;

-- ----------------------------
-- Table structure for `adminuser`
-- ----------------------------
DROP TABLE IF EXISTS `adminuser`;
CREATE TABLE `adminuser` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `username` varchar(255) DEFAULT NULL,
  `password` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of adminuser
-- ----------------------------
INSERT INTO `adminuser` VALUES ('1', '小落', 'qwe');



1.新建一个web项目  在WebRoot/WEB-INF/lib下导入必须的jar包

aopalliance-1.0.jar
aspectjweaver-1.7.1.jar
commons-fileupload-1.2.2.jar
commons-logging-1.1.1.jar
druid-0.2.9.jar
jstl-1.2.jar
junit-4.11.jar
mybatis-3.1.1.jar
mybatis-spring-1.1.1.jar
mysql-connector-java-5.1.21.jar
servlet-api-3.0-alpha-1.jar
spring-aop-3.2.0.RELEASE.jar
spring-beans-3.2.0.RELEASE.jar
spring-context-3.2.0.RELEASE.jar
spring-core-3.2.0.RELEASE.jar
spring-expression-3.2.0.RELEASE.jar
spring-jdbc-3.1.1.RELEASE.jar
spring-test-3.2.0.RELEASE.jar
spring-tx-3.1.1.RELEASE.jar
spring-web-3.2.0.RELEASE.jar
spring-webmvc-3.2.0.RELEASE.jar


2.创建db.properties数据库连接配置文件

db.properties

#hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect
#driverClassName=com.mysql.jdbc.Driver
#来验证数据库连接的有效性
validationQuery=SELECT 1 
jdbc_url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull
jdbc_username=root
jdbc_password=root



3.创建包结构
com.jsx.controller 
com.jsx.dao
com.jsx.mapping
com.jsx.model
com.jsx.service
com.jsx.service.impl
4.创建spring.xml配置文件

spring.xml



	
	
	
	



5.创建spring-mybatis.xml配置文件

spring-mybatis.xml




	
	
		
		
		

		
		
		
		
		
		
		
		
		
		
		  
		
		
		
		
		
		
		
		
		

		
		
		
		
		
		
		
		
		
		
		
		
	

	
	
		
		
		
		
	
	
	
		
		
	

	
	
		
	

	
	
 
	
	
		
			
			
			
			
			
			
			
			
			
			
			

			
			
			
			
			

			
		
	
	
		
		
	


	
	
	
		
			
				com.jsx.service.*
			
		
	
	
	
		
	


6.创建spring-mvc.xml配置文件

spring-mvc.xml








	



7.在WebRoot/WEB-INF/web.xml下配置上述配置文件和其他属性

web.xml



  
  
  
  	contextConfigLocation
  	classpath:spring.xml;classpath:spring-mybatis.xml
  
  
  
    字符集过滤器
    encodingFilter
    org.springframework.web.filter.CharacterEncodingFilter
    
      字符集编码
      encoding
      UTF-8
    
  
  
    encodingFilter
    /*
  
  
  
    spring监听器
    org.springframework.web.context.ContextLoaderListener
  
  
  
    org.springframework.web.util.IntrospectorCleanupListener
  
  
  
    spring mvc servlet
    springMvc
    org.springframework.web.servlet.DispatcherServlet
    
      spring mvc 配置文件
      contextConfigLocation
      classpath:spring-mvc.xml
    
    1
  
  
    springMvc
    *.do
  
  
  
    15
  
  
  
    index.jsp
  




8.在model下创建User实体类

User.java

package com.jsx.model;

public class User {
    private int id;
    private String username;
    private String password;

    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getUsername() {
		return username;
	}
	public void setUsername(String username) {
		this.username = username == null ? null : username.trim();
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password == null ? null : password.trim();
	}
}


9.在mapping下创建User.xml定义实体类要实现的功能 (其中定义你的功能,对应要对数据库进行的那些操作)

User.xml





  
    
    
    
  
  
  
    id, username, password
  
  
  
  
  
  
  
    delete from adminuser
    where id = #{id}
  
  
  
    insert into adminuser (username, password)
    values (#{username,jdbcType=VARCHAR}, #{password,jdbcType=VARCHAR})
  
  
  
    insert into adminuser
    
      
        username,
      
      
        password,
      
    
    
      
        #{username,jdbcType=VARCHAR},
      
      
        #{password,jdbcType=VARCHAR},
      
    
  
  
  
    update adminuser
    
      
        username = #{username,jdbcType=VARCHAR},
      
      
        password = #{password,jdbcType=VARCHAR},
      
    
    where id = #{id}
  
  
  
    update adminuser
    set username = #{username,jdbcType=VARCHAR},
      password = #{password,jdbcType=VARCHAR}
    where id = #{id}
  
  
  
  


10.在dao创建UserDao将将User.xml中的操作按照id映射成Java函数。

UserDao.java

package com.jsx.dao;

import java.util.List;
import com.jsx.model.User;

public interface UserDao {  
    int insert(User user);
    int insertSelective(User user);
    int deleteByPrimaryKey(int id);
    int updateByPrimaryKeySelective(User user);
    int updateByPrimaryKey(User user);
    User selectByPrimaryKey(int id);
    List getAll();
	User selectByUsernameAndPassword(User user);
}


11.在service下创建UserService接口  (为控制层提供服务,接受控制层的参数,完成相应的功能,并返回给控制层。)

UserService.java

package com.jsx.service;

import java.util.List;
import com.jsx.model.User;

public interface UserService {
	String addInfo(User addInfo);
	List getAll();
	String delete(int id);
	User findById(int id);
	String update(User addInfo);
	User login(User user);
}


12.在service.impl下创建UserService接口实现类UserServiceImpl

UserServiceImpl.java

package com.jsx.service.impl;

import java.util.List;

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

import com.jsx.dao.UserDao;
import com.jsx.model.User;
import com.jsx.service.UserService;

@Service("userService")
public class UserServiceImpl implements UserService{
	@Autowired
    private UserDao userDao;
	public UserDao getUserDao() {
		return userDao;
	}
	public void setUserDao(UserDao userDao) {
		this.userDao = userDao;
	}
	
	//表示一个方法声明的目的是覆盖父类方法声明。如果一个方法是注释,该注释类型但不重写基类方法,编译器必须生成一个错误消息。
	@Override
	public String addInfo(User addInfo) {
		if (userDao.insertSelective(addInfo) == 1) {
			return "添加成功";
		}
		return "添加失败";
	}
	@Override
	public List getAll() {
		return userDao.getAll();
	}
	@Override
	public String delete(int id) {
		if (userDao.deleteByPrimaryKey(id) == 1) {
			return "删除成功";
		}
		return "删除失败";
	}
	@Override
	public User findById(int id) {
		return userDao.selectByPrimaryKey(id);
	}
	@Override
	public String update(User addInfo) {
		if (userDao.updateByPrimaryKeySelective(addInfo) == 1) {
			return "更新成功";
		}
		return "更新失败";
	}
	@Override
	public User login(User user) {
		return userDao.selectByUsernameAndPassword(user);
	}
}


13.在controller下创建UserController处理由DispatcherServlet 分发的请求

UserController.java

package com.jsx.controller;


import java.util.List;
import java.util.UUID;
import javax.servlet.http.HttpServletRequest;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import com.jsx.model.User;
import com.jsx.service.UserService;

@Controller
public class UserController {
	@Autowired
	private UserService userService;
	public UserService getUserService() {
		return userService;
	}
	public void setUserService(UserService userService) {
		this.userService = userService;
	}
	
	@SuppressWarnings("finally")
	@RequestMapping("addInfo")
	public String add(User user,HttpServletRequest request){
		try {			
//			user.setId(UUID.randomUUID().toString());
			System.out.println(user.getId() + ":::::" + user.getUsername() + ":::::" + user.getPassword());
			String str = userService.addInfo(user);
			System.out.println(str);
			request.setAttribute("InfoMessage", str);
		} catch (Exception e) {
			e.printStackTrace();
			request.setAttribute("InfoMessage", "添加信息失败!具体异常信息:" + e.getMessage());
		} finally {			
			return "result";
		}
	}
	
	@RequestMapping("getAll")
	public String getAddInfoAll(HttpServletRequest request){
		try {			
			List list = userService.getAll();
			System.out.println("------User_list-----"+list.size());
			request.setAttribute("addLists", list);
			return "listAll";
		} catch (Exception e) {
			e.printStackTrace();
			request.setAttribute("InfoMessage", "信息载入失败!具体异常信息:" + e.getMessage());
			return "result";
		}
	}
	
	@SuppressWarnings("finally")
	@RequestMapping("del")
	public String del(int id,HttpServletRequest request){
		try {			
			String str = userService.delete(id);
			request.setAttribute("InfoMessage", str);
		} catch (Exception e) {
			e.printStackTrace();
			request.setAttribute("InfoMessage", "删除信息失败!具体异常信息:" + e.getMessage());
		} finally {			
			return "result";
		}
	}
	@RequestMapping("modify")
	public String modify(int id,HttpServletRequest request){
		try {			
			User user = userService.findById(id);
			request.setAttribute("add", user);
			return "modify";
		} catch (Exception e) {
			e.printStackTrace();
			request.setAttribute("InfoMessage", "信息载入失败!具体异常信息:" + e.getMessage());
			return "result";
		}
	}
	@SuppressWarnings("finally")
	@RequestMapping("update")
	public String update(User user,HttpServletRequest request){
		try {			
			String str = userService.update(user);
			request.setAttribute("InfoMessage", str);
		} catch (Exception e) {
			e.printStackTrace();
			request.setAttribute("InfoMessage", "更新信息失败!具体异常信息:" + e.getMessage());
		} finally {			
			return "result";
		}
	}
	@RequestMapping("login")
	public String login(User user,HttpServletRequest request){
		try {			
			System.out.println("------login--qian----"+user.getUsername()+","+user.getPassword()+".");
			User loginUser = null;
			loginUser=userService.login(user);
			if(loginUser!=null){
				request.setAttribute("loginUser", loginUser.getUsername());
				return "index";
			}else{
				request.setAttribute("loginUser", "登录失败");
				return "index";
			}
		} catch (Exception e) {
			e.printStackTrace();
			request.setAttribute("InfoMessage", "登录失败!具体异常信息:" + e.getMessage());
			return "result";
		}
	}

}


   (连接页面请求和服务层,获取页面请求的参数,通过自动装配,映射不同的URL到相应的处理函数,并获取参数,对参数进行处理,之后传给服务层)
14.创建jsp页面

add.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>


  
    添加数据
  
  
    
用户名: 密码:

index.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>


  
    My JSP 'index.jsp' starting page
  
  
  			

---${loginUser}---

新增数据 查看全部数据

listAll.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>


  
    所有用户所有信息
  
  
  	

所有用户所有信息

编号 用户名 密码 操作
${list.id} ${list.username} ${list.password} 更新    删除

login.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>


  
    用户登录
  
  
    
用户名: 密码:


modify.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>


  
    修改数据
  
  
    
用户名: 密码:


result.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>


  
    结果页
  
  
  			  ${InfoMessage}
    			返回首页
  





你可能感兴趣的:(【JavaEE技术】)