2021-4-30 前端達(dá)人
本系列文章主要通過(guò)從零開始搭建自己的個(gè)人博客,來(lái)加深對(duì)SSM框架的學(xué)習(xí)與使用,了解一個(gè)系統(tǒng)從提出到設(shè)計(jì)-到開發(fā)-到測(cè)試-部署運(yùn)行的過(guò)程,并記錄在搭建過(guò)程中的學(xué)習(xí)心得、遇見的錯(cuò)誤及解決方式。
個(gè)人博客的主要功能有:
界面展示:
前臺(tái)博客列表界面
博客詳情頁(yè)面
后臺(tái)管理頁(yè)面
登錄頁(yè)面
核心框架:Spring:5.2.8.RELEASE
web框架:SpringMVC:5.2.8.RELEASE
持久層框架:Mybatis 3.2.4
數(shù)據(jù)庫(kù)連接池:阿里druid:0.2.6
數(shù)據(jù)庫(kù):MySQL5.XX
JSON數(shù)據(jù)處理:谷歌gson 2.3
jsp
Ajax
前端框架:bootstrap
富文本編輯器:百度UEditor
創(chuàng)建SQL語(yǔ)句:
-
DROP TABLE IF EXISTS `t_article`;
-
CREATE TABLE `t_article` (
-
`id` int(11) NOT NULL AUTO_INCREMENT,
-
`categoryId` int(11) NOT NULL COMMENT '分類Id',
-
`title` varchar(40) NOT NULL COMMENT '標(biāo)題',
-
`content` blob NOT NULL COMMENT '內(nèi)容',
-
`description` varchar(500) NOT NULL COMMENT '文章簡(jiǎn)介 用于列表顯示',
-
`statue` int(11) NOT NULL DEFAULT '0' COMMENT '狀態(tài) 0:正常 1:不可用',
-
`author` varchar(15) DEFAULT 'tulun' COMMENT '作者',
-
`createTime` datetime NOT NULL COMMENT '發(fā)表時(shí)間',
-
`showCount` int(11) NOT NULL DEFAULT '0' COMMENT '瀏覽量',
-
PRIMARY KEY (`id`)
-
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='文章表';
-
-
-
-- ----------------------------
-
-- Table structure for t_article_image
-
-- ----------------------------
-
DROP TABLE IF EXISTS `t_article_image`;
-
CREATE TABLE `t_article_image` (
-
`id` int(11) NOT NULL AUTO_INCREMENT,
-
`imageUrl` varchar(100) NOT NULL COMMENT '圖片地址',
-
`articleId` int(11) NOT NULL COMMENT '文章Id',
-
PRIMARY KEY (`id`,`articleId`)
-
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='文章圖 主要用于列表瀏覽';
-
-
-- ----------------------------
-
-- Table structure for t_tag
-
-- ----------------------------
-
DROP TABLE IF EXISTS `t_tag`;
-
CREATE TABLE `t_tag` (
-
`id` int(11) NOT NULL AUTO_INCREMENT,
-
`tagName` varchar(25) NOT NULL COMMENT '標(biāo)簽名稱 唯一',
-
PRIMARY KEY (`id`),
-
UNIQUE KEY `tagName_UNIQUE` (`tagName`)
-
) ENGINE=InnoDB AUTO_INCREMENT=23 DEFAULT CHARSET=utf8 COMMENT='標(biāo)簽表';
-
-
-
-- ----------------------------
-
-- Table structure for t_article_tag
-
-- ----------------------------
-
DROP TABLE IF EXISTS `t_article_tag`;
-
CREATE TABLE `t_article_tag` (
-
`articleId` int(11) NOT NULL COMMENT '文章Id',
-
`tagId` int(11) NOT NULL COMMENT '標(biāo)簽Id',
-
PRIMARY KEY (`articleId`,`tagId`)
-
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='文章標(biāo)簽中間表';
-
-
-- ----------------------------
-
-- Table structure for t_category
-
-- ----------------------------
-
DROP TABLE IF EXISTS `t_category`;
-
CREATE TABLE `t_category` (
-
`id` int(11) NOT NULL AUTO_INCREMENT,
-
`categoryName` varchar(20) NOT NULL COMMENT '分類名稱 唯一',
-
`iconClass` varchar(45) NOT NULL COMMENT '圖標(biāo)樣式',
-
`aliasName` varchar(20) NOT NULL COMMENT '別名 唯一 比如新聞 就用News 代替 欄目Id不顯示在url中',
-
`sort` int(11) NOT NULL DEFAULT '0' COMMENT '排序 (0-10)',
-
PRIMARY KEY (`id`),
-
UNIQUE KEY `aliasName_UNIQUE` (`aliasName`),
-
UNIQUE KEY `categoryName_UNIQUE` (`categoryName`)
-
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='分類表 只支持一級(jí)分類 如果需要分多個(gè)層次 用標(biāo)簽來(lái)協(xié)助實(shí)現(xiàn)';
-
-
-
-- ----------------------------
-
-- Table structure for t_manager
-
-- ----------------------------
-
DROP TABLE IF EXISTS `t_manager`;
-
CREATE TABLE `t_manager` (
-
`id` int(11) NOT NULL AUTO_INCREMENT,
-
`userName` varchar(25) NOT NULL COMMENT '用戶名',
-
`password` varchar(45) NOT NULL,
-
PRIMARY KEY (`id`)
-
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
搭建如下框架結(jié)構(gòu):
目錄說(shuō)明:
-
目錄說(shuō)明:
-
|-src
-
|--mian
-
|---java JAVA源代碼根目錄
-
|----com
-
|-----tulun
-
|------model 存放pogo類:基本基本的getter和setter方法
-
|------controller 展示層類包路徑:前端用戶請(qǐng)求映射到該包路徑下類的實(shí)現(xiàn)
-
|------service 業(yè)務(wù)邏輯層包路徑:業(yè)務(wù)邏輯實(shí)現(xiàn),調(diào)用dao層服務(wù)
-
|------dao 數(shù)據(jù)庫(kù)操作層包路徑:提供對(duì)數(shù)據(jù)庫(kù)的操作類與方法
-
|------util 工具類包路徑
-
|---resource 配置文件根目錄
-
|----myatis mybatis接口對(duì)應(yīng)配置文件目錄
-
|----spring-XXX.xml SSM中mybatis、spring核心、springMVC的全局配置文件
-
|--webapp 前端頁(yè)面內(nèi)容根目錄
-
|---WEB-INF
-
|----web.xml 前端頁(yè)面必要配置文件
-
|-pom.xml maven的配置文件
主要完成各個(gè)層之間的連接映射,完成從t_manager表中讀取數(shù)據(jù)并進(jìn)行回顯
根據(jù)數(shù)據(jù)庫(kù)表t_manager,創(chuàng)建User類
-
package com.tulun.model;
-
-
/**
-
* Description :
-
* Created by Resumebb
-
* Date :2021/4/17
-
*/
-
public class User {
-
private Integer id;
-
private String name;
-
private String passwd;
-
-
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 getPasswd() {
-
return passwd;
-
}
-
-
public void setPasswd(String passwd) {
-
this.passwd = passwd;
-
}
-
}
這里用到了阿里巴巴的druid連接池
-
<beans xmlns="http://www.springframework.org/schema/beans"
-
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-
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/context
-
http://www.springframework.org/schema/context/spring-context-3.0.xsd">
-
-
<!--開啟注解-->
-
<context:component-scan base-package="com.tulun"/>
-
-
<!--配置數(shù)據(jù)源:借助連接池druid-->
-
<bean id ="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
-
<!--注入屬性-->
-
<property name="url" value="jdbc:mysql://localhost:3306/test"/>
-
<property name="username" value="root"/>
-
<property name="password" value="123456"/>
-
</bean>
-
-
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
-
<property name="dataSource" ref="dataSource"/>
-
<!--注入mapper映射文件-->
-
<property name="configLocation" value="classpath:spring-mybatis.xml"></property>
-
<property name="mapperLocations" value="classpath:mapper/*.xml"/>
-
-
</bean>
-
-
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
-
<property name="basePackage" value="com.tulun.dao"/>
-
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
-
</bean>
-
-
</beans>
-
<?xml version="1.0" encoding="UTF-8" ?>
-
<!DOCTYPE configuration
-
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
-
"http://mybatis.org/dtd/mybatis-3-config.dtd">
-
<!--根標(biāo)簽-->
-
<configuration>
-
</configuration>
-
<?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: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.xsd
-
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.1.xsd
-
http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.1.xsd">
-
<!--掃描controller寫注解-->
-
<context:component-scan base-package="com.tulun.controller"/>
-
-
<!--配置映射器-->
-
<mvc:annotation-driven/>
-
-
<!--配置視圖解析器-->
-
<!--視圖解析器-->
-
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
-
<!--jsp頁(yè)面前綴-->
-
<property name="prefix" value="/WEB-INF/jsp/"/>
-
<!--jsp后綴-->
-
<property name="suffix" value=".jsp"/>
-
<property name="viewClass" value="org.springframework.web.servlet.view.freemarker.FreeMarkerView"/>
-
</bean>
-
-
</beans>
web配置文件
-
<?xml version="1.0" encoding="UTF-8"?>
-
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
-
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
-
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
-
-
<context-param>
-
<param-name>contextConfigLocation</param-name>
-
<param-value>classpath:spring-core.xml</param-value>
-
</context-param>
-
<listener>
-
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
-
</listener>
-
-
<!--前端控制器-->
-
<servlet>
-
<servlet-name>myBolg</servlet-name>
-
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
-
<!--將springMVC的配置文件進(jìn)行配置-->
-
<init-param>
-
<param-name>contextConfigLocation</param-name>
-
<param-value>classpath:spring-mvc.xml</param-value>
-
</init-param>
-
</servlet>
-
-
<servlet-mapping>
-
<servlet-name>myBolg</servlet-name>
-
<url-pattern>/</url-pattern>
-
</servlet-mapping>
-
-
</web-app>
-
<dependencies>
-
<dependency>
-
<groupId>junit</groupId>
-
<artifactId>junit</artifactId>
-
<version>4.11</version>
-
<scope>test</scope>
-
</dependency>
-
-
<!-- spring依賴-->
-
<dependency>
-
<groupId>org.springframework</groupId>
-
<artifactId>spring-core</artifactId>
-
<version>5.2.8.RELEASE</version>
-
</dependency>
-
-
<dependency>
-
<groupId>org.springframework</groupId>
-
<artifactId>spring-context</artifactId>
-
<version>5.2.8.RELEASE</version>
-
</dependency>
-
-
<dependency>
-
<groupId>org.springframework</groupId>
-
<artifactId>spring-beans</artifactId>
-
<version>5.2.8.RELEASE</version>
-
</dependency>
-
-
<dependency>
-
<groupId>org.springframework</groupId>
-
<artifactId>spring-expression</artifactId>
-
<version>5.2.8.RELEASE</version>
-
</dependency>
-
-
<!--web依賴/spring mvc依賴-->
-
<dependency>
-
<groupId>org.springframework</groupId>
-
<artifactId>spring-webmvc</artifactId>
-
<version>5.2.8.RELEASE</version>
-
</dependency>
-
<dependency>
-
<groupId>org.springframework</groupId>
-
<artifactId>spring-web</artifactId>
-
<version>5.2.8.RELEASE</version>
-
</dependency>
-
<dependency>
-
<groupId>javax.servlet</groupId>
-
<artifactId>javax.servlet-api</artifactId>
-
<version>3.1.0</version>
-
</dependency>
-
-
<!--tomcat servlet api -->
-
<dependency>
-
<groupId>jstl</groupId>
-
<artifactId>jstl</artifactId>
-
<version>1.2</version>
-
</dependency>
-
<dependency>
-
<groupId>taglibs</groupId>
-
<artifactId>standard</artifactId>
-
<version>1.1.2</version>
-
</dependency>
-
-
<!--mybatis依賴-->
-
<dependency>
-
<groupId>org.mybatis</groupId>
-
<artifactId>mybatis</artifactId>
-
<version>3.4.1</version>
-
</dependency>
-
<dependency>
-
<groupId>mysql</groupId>
-
<artifactId>mysql-connector-java</artifactId>
-
<version>5.1.39</version>
-
</dependency>
-
-
<!-- 整合-->
-
<dependency>
-
<groupId>org.mybatis</groupId>
-
<artifactId>mybatis-spring</artifactId>
-
<version>1.3.0</version>
-
</dependency>
-
-
<!-- 連接池-->
-
<dependency>
-
<groupId>com.mchange</groupId>
-
<artifactId>c3p0</artifactId>
-
<version>0.9.5.2</version>
-
</dependency>
-
-
<dependency>
-
<groupId>org.springframework</groupId>
-
<artifactId>spring-tx</artifactId>
-
<version>5.2.8.RELEASE</version>
-
</dependency>
-
<dependency>
-
<groupId>org.springframework</groupId>
-
<artifactId>spring-jdbc</artifactId>
-
<version>5.2.8.RELEASE</version>
-
</dependency>
-
-
<dependency>
-
<groupId>javax.servlet.jsp.jstl</groupId>
-
<artifactId>jstl</artifactId>
-
<version>1.2</version>
-
</dependency>
-
-
<dependency>
-
<groupId>javax.servlet</groupId>
-
<artifactId>servlet-api</artifactId>
-
<version>2.5</version>
-
</dependency>
-
-
<dependency>
-
<groupId>com.google.code.gson</groupId>
-
<artifactId>gson</artifactId>
-
<version>2.3</version>
-
</dependency>
-
-
<dependency>
-
<groupId>com.alibaba</groupId>
-
<artifactId>druid</artifactId>
-
<version>0.2.6</version>
-
</dependency>
-
-
<dependency>
-
<groupId>commons-logging</groupId>
-
<artifactId>commons-logging</artifactId>
-
<version>1.1.1</version>
-
</dependency>
-
-
<dependency>
-
<groupId>commons-configuration</groupId>
-
<artifactId>commons-configuration</artifactId>
-
<version>1.9</version>
-
</dependency>
-
-
</dependencies>
-
import com.tulun.model.User;
-
-
/**
-
* Description :
-
* Created by Resumebb
-
* Date :2021/4/22
-
*/
-
public interface UserMapper {
-
public User getUserById(Integer id);
-
}
-
package com.tulun.service;
-
-
import com.tulun.model.User;
-
import com.tulun.dao.UserMapper;
-
import org.springframework.beans.factory.annotation.Autowired;
-
import org.springframework.stereotype.Service;
-
-
/**
-
* Description :
-
* Created by Resumebb
-
* Date :2021/4/19
-
*/
-
@Service
-
public class UserService {
-
@Autowired
-
private UserMapper userMapper;
-
-
public User getUserById(Integer id){
-
if(id < 0)
-
return new User();
-
return userMapper.getUserById(id);
-
}
-
}
查詢t_manager中的id為1的數(shù)據(jù)進(jìn)行顯示
-
package com.tulun.controller;
-
-
import com.tulun.model.User;
-
import com.tulun.service.UserService;
-
import org.springframework.beans.factory.annotation.Autowired;
-
import org.springframework.stereotype.Controller;
-
import org.springframework.web.bind.annotation.RequestMapping;
-
import org.springframework.web.bind.annotation.ResponseBody;
-
-
/**
-
* Description :
-
* Created by Resumebb
-
* Date :2021/4/22
-
*/
-
@Controller
-
public class UserController {
-
@Autowired
-
private UserService userService;
-
-
@RequestMapping("/testUser")
-
@ResponseBody
-
public User testUser(){
-
User user = userService.getUserById(1);
-
return user;
-
}
-
}
-
<?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.tulun.dao.UserMapper">
-
<resultMap id="UserMap" type="com.tulun.model.User">
-
<result property="id" column="id"></result>
-
<result property="name" column="userName"></result>
-
<result property="passwd" column="password"></result>
-
</resultMap>
-
-
<select id="getUserById" parameterType="int" resultMap="UserMap">
-
select * from t_manager where id=#{id}
-
</select>
-
</mapper>
原因是因?yàn)槎丝诒徽加昧耍姆?wù)器的端口號(hào)就可以了。
出現(xiàn)這個(gè)錯(cuò)誤就要檢查SQL查詢語(yǔ)句,數(shù)據(jù)源的配置是否正確,經(jīng)檢查我報(bào)這個(gè)錯(cuò)是因?yàn)镾QL查詢語(yǔ)句manager寫成了manger,用戶名密碼不對(duì)也會(huì)報(bào)這個(gè)錯(cuò)。
類似這種錯(cuò),一是檢查@Service有沒有加上,二是檢查映射文件有沒有頂行寫,第一行不能有空行。
轉(zhuǎn)自:csdn。作者:resumebb
藍(lán)藍(lán)設(shè)計(jì)( m.yvirxh.cn )是一家專注而深入的界面設(shè)計(jì)公司,為期望卓越的國(guó)內(nèi)外企業(yè)提供卓越的UI界面設(shè)計(jì)、BS界面設(shè)計(jì) 、 cs界面設(shè)計(jì) 、 ipad界面設(shè)計(jì) 、 包裝設(shè)計(jì) 、 圖標(biāo)定制 、 用戶體驗(yàn) 、交互設(shè)計(jì)、 網(wǎng)站建設(shè) 、平面設(shè)計(jì)服務(wù)
藍(lán)藍(lán)設(shè)計(jì)的小編 http://m.yvirxh.cn