1. 程式人生 > >ssm框架整合基本步驟練習總結

ssm框架整合基本步驟練習總結

0.整個原始碼下載

1.導包

2.準備資料庫表

#建立資料庫ssm
drop database if exists ssm;
create database ssm;
use ssm;
#建立書本表
drop table if exists ssm_book; 
create table ssm_book (
	id int(11) primary key auto_increment not null,
    name varchar(111),
    detail varchar(256),
    userId int(22)
);

insert into ssm_book(id, name,detail,userId) values
(1,"javaWeb","JavaWeb從入門到精通",1),
(2,"PhotoShop","圖片影象處理",1),
(3,"mysql從入門到精通","資料庫專業書籍",2);

select * from ssm_book;

# 建立使用者表
create table ssm_user (
	id int(11) primary key auto_increment not null,
    username varchar(111),
    password varchar(256)
);

insert into ssm_user(id, username,password) values
(1,"aa","aa"),
(2,"bb","bb"),
(3,"cc","cc");
select * from ssm_userssm_user;

select * from ssm_book where userId = 1;

3.準備pojo

 3.1.Book.java

package com.ssm.pojo;

public class Book {
	private Integer id;
	private String name;
	private String detail;
	private Integer userId;
	
	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 getDetail() {
		return detail;
	}
	public void setDetail(String detail) {
		this.detail = detail;
	}
	
	public Integer getUserId() {
		return userId;
	}
	public void setUserId(Integer userId) {
		this.userId = userId;
	}
	@Override
	public String toString() {
		return "Book [id=" + id + ", name=" + name + ", detail=" + detail + ", userId=" + userId + "]";
	}
	
}

3.2.User.java

package com.ssm.pojo;

public class User {
	private Integer id;
	private String username;
	private String password;
	
	public Integer getId() {
		return id;
	}
	public void setId(Integer id) {
		this.id = id;
	}
	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;
	}
	@Override
	public String toString() {
		return "User [username=" + username + ", password=" + password + "]";
	}
}

4. 準備jdbc.properties檔案

我直接放在了src下

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/ssm?characterEncoding=utf-8
jdbc.username=root
jdbc.password=admin

5.applicationContext.xml配置檔案 

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:context="http://www.springframework.org/schema/context" xmlns:p="http://www.springframework.org/schema/p"
	xmlns:aop="http://www.springframework.org/schema/aop" 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-4.0.xsd
	http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd
	http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd
	http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.0.xsd">

	<!-- 配置讀取properties檔案jdbc.properties以連線資料庫 -->
	<context:property-placeholder location="classpath:jdbc.properties"/>
	<!-- 配置資料來源-->
	<bean id="druidDataSource" class="com.alibaba.druid.pool.DruidDataSource">
		<property name="driverClassName" value="${jdbc.driver}"></property>
		<property name="url" value="${jdbc.url}"></property>
		<property name="username" value="${jdbc.username}"></property>
		<property name="password" value="${jdbc.password}"></property>
	</bean>
	<!-- 配置sqlSessionFactory -->
	<bean class="org.mybatis.spring.SqlSessionFactoryBean">
		<property name="dataSource" ref="druidDataSource"></property>
	</bean>
	<!-- 配置mapper掃描器 -->
	<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
		<property name="basePackage" value="com.ssm.mapper"></property>
	</bean>
	<!-- 配置servic掃描器 -->
	<context:component-scan base-package="com.ssm.service"/>
	
	<!-- 配置事物 -->
	<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
		<property name="dataSource" ref="druidDataSource"></property>
	</bean> 
	<!--配置事物-通知  -->
	<tx:advice id="txAdvice" transaction-manager="transactionManager">
		<tx:attributes>
			<tx:method name="add*" propagation="REQUIRED"/>
			<tx:method name="delete*" propagation="REQUIRED"/>
			<tx:method name="find*" propagation="REQUIRED"/>
			<tx:method name="edit*" propagation="REQUIRED"/>
		</tx:attributes>
	</tx:advice>
	<!-- 配置事物-切面 -->
	<aop:config>
		<aop:advisor advice-ref="txAdvice" pointcut="execution(* com.ssm.service.*.*(..))"/>
	</aop:config>
	
</beans>

 6.springMVC.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"
	xmlns:mvc="http://www.springframework.org/schema/mvc"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
        http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd">
	<!--配置Controller掃描 -->
	<context:component-scan base-package="com.ssm.controller"></context:component-scan>
	<!-- 配置註解驅動 -->
	<mvc:annotation-driven></mvc:annotation-driven>
	<!-- 配置檢視解析器 -->
	<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
		<property name="prefix" value="/"></property>
		<property name="suffix" value=".jsp"></property>
	</bean>
</beans>

7.dao之mapper

由於在applicationContext.xml配置了自動掃描mapper,所以需要把mapper類和其對應的mapper.xml檔案放在同一目錄下,命名也是一樣

7.1.BookMapper.java

package com.ssm.mapper;

import java.util.List;

import com.ssm.pojo.Book;

public interface BookMapper {
	//新增一本書
	public void addBook(Book book);
	
	//根據id刪除一本書
	public void deleteBookById(Integer id);
	
	//根據ID查詢書
	public Book findBookById(Integer id);
	
	//根據書名模糊查詢書
	public List<Book> findBooksByKeyname(String keyname);
	
	//根據id編輯修改書的資訊
	public void editBookInformationById(Book book);
	
	//根據使用者id查詢
	public List<Book> findBooksByUserId(Integer userId);
}

7.2.BookMapper.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
	PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
	"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ssm.mapper.BookMapper">
	<insert id="addBook" parameterType="com.ssm.pojo.Book" >
		insert into ssm_book(id, name,detail,userId) values(#{id},#{name},#{detail},#{userId})
	</insert>
	
	<delete id="deleteBookById" parameterType="Integer">
		delete from ssm_book where id = #{id}"
	</delete>
	
	<select id="findBookById" parameterType="Integer" resultType="com.ssm.pojo.Book">
		select * from ssm_book where id = #{id}
	</select>
	
	<select id="findBooksByKeyname" parameterType="String" resultType="com.ssm.pojo.Book">
		select * from ssm_book where name = "%"#{value}"%"
	</select>
	
	<update id="editBookInformationById" parameterType="Integer">
		update ssm_book 
		set name=#{name},detail=#{detail},userId=#{userId}
		where id=#{id}
	</update>
	
	<select id="findBooksByUserId" parameterType="Integer" resultType="com.ssm.pojo.Book">
		select * from ssm_book where userId = #{value}
	</select>
</mapper>

7.3.UserMapper.java

package com.ssm.mapper;

import org.apache.ibatis.annotations.Param;

import com.ssm.pojo.User;

public interface UserMapper {
	//查詢使用者
	public User findUserbyNameAndPwd(@Param("username") String username,@Param("password") String password);
	public User findUserbyName(String username);
}

7.4.UserMapper.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
	PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
	"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ssm.mapper.UserMapper">
	<select id="findUserbyNameAndPwd" resultType="com.ssm.pojo.User">
		select * from ssm_user where username=#{username,jdbcType=VARCHAR} and password=#{password,jdbcType=VARCHAR}
	</select>
	
	<select id="findUserbyName" parameterType="String" resultType="com.ssm.pojo.User">
		select * from ssm_user where username=#{username}
	</select>
</mapper> 

 8.Controller層

package com.ssm.controller;

import java.util.List;

import javax.servlet.http.HttpSession;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;

import com.ssm.pojo.Book;
import com.ssm.pojo.User;
import com.ssm.service.BookService;
import com.ssm.service.LoginService;


@Controller

public class Login {
	/**
	 * @author AL
	 * 登入
	 */
	@Autowired
	private LoginService loginService;
	@Autowired
	private BookService bookService;
	
	@RequestMapping("login")
	public String login(String username,String password,Model model) {
		User user = this.loginService.findUserByNameAndPwd(username,password);
		
		if(user!=null) {
			Integer userId = user.getId();
			List<Book> books = bookService.findBooksByUserId(userId);
			for(Book book : books) {
				System.out.println(book);
			}
			model.addAttribute("user",user);
			model.addAttribute("books",books);
			return "my";
		}
		
		return "index";
		
	}
	
}

 9.Service層

9.1.BookService介面

用於操作書籍

package com.ssm.service;

import java.util.List;

import com.ssm.pojo.Book;

public interface BookService {
	public List<Book> findBooksByUserId(Integer userId);
}

9.2.BookServiceImpl實現類

package com.ssm.service;

import java.util.List;

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

import com.ssm.mapper.BookMapper;
import com.ssm.pojo.Book;

@Service
public class BookServiceImpl implements BookService {

	@Autowired
	private BookMapper bookMapper;
	
	@Override
	public List<Book> findBooksByUserId(Integer userId) {
		List<Book> books = bookMapper.findBooksByUserId(userId);
		return books;
	}

}

9.3.登入介面

package com.ssm.service;

import com.ssm.pojo.User;

public interface LoginService {

	public User findUserByNameAndPwd(String username, String password);

}

 9.4.登入實現類

package com.ssm.service;

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

import com.ssm.mapper.UserMapper;
import com.ssm.pojo.User;

@Service
public class LoginServiceImpl implements LoginService {

	@Autowired
	private UserMapper userMapper;
	
	@Override
	public User findUserByNameAndPwd(String username, String password) {
		User user = userMapper.findUserbyNameAndPwd(username, password);
		

		return user;
	}
}

10.頁面匯入到WEB-INF下

10.1 index.jsp首頁匯入

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>index</title>
<style type="text/css">
	div{
	margin: 10px;
	}
	input{
		width: 200px;
	}
</style>
</head>
<body>
	<form action="${pageContext.request.contextPath }/login.action" method="post">
		<div>
			<div>
				username:<input type="text" name="username" placeholder="Please enter your username">
			</div>
			<div>
				password:<input type="password" name="password" placeholder="Please enter your password">
			</div>
			<div>
				<input type="submit" value="login in">
			</div>
		</div>
	</form>
</body>
</html>

10.2 登入成功後的頁面顯示my.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
	<div>
		<div>welcome:${user.username}</div>
		<div>
			<h1>your book list</h1>
			<table>
			<c:forEach items="${books }" var="book" varStatus="vs" >
				<tr>	
					<td>${vs.index }</td>
					<td>${book.id }</td>
					<td>${book.name }</td>
					<td>${book.detail }</td>
				</tr>
			</c:forEach>
			</table>
		</div>
	</div>
</body>
</html>

 11.除錯測試結果

11.1首頁

11.2 登入成功後顯示自己的書籍