ssm框架整合基本步驟練習總結
阿新 • • 發佈:2018-12-10
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>