博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java web后台开发SSM框架(Spring+SpringMVC+MyBaitis)搭建与优化
阅读量:5294 次
发布时间:2019-06-14

本文共 13478 字,大约阅读时间需要 44 分钟。

 

 

 

一、ssm框架搭建

1.1创建项目

新建项目后规划好各层的包。

1.2导入包

 

搭建SSM框架所需包百度云链接:

1.3整合spring与mybatis

调整spring与mybatis配置文件

1.4创建、编写配置文件:

 

 

myBatis-config.xml文件

 

applicationContext.xml

 

1.5编写实体及sql映射文件

  如没有建库表,先建库表,可参考如下sql:

drop database if exists mybatis;create database mybatis CHARACTER SET UTF8;use mybatis; create table dept(    dept_id int primary key auto_increment,    dept_name varchar(50),    dept_address varchar(50));insert into dept(dept_name,dept_address) values('研发部一部','广州');insert into dept(dept_name,dept_address) values('研发部二部','广州');insert into dept(dept_name,dept_address) values('研发部三部','深圳');select * from dept;

 

 编写实体类

public class Dept implements Serializable {   private Integer deptId;   private String deptName;   private String deptAddress;   public Integer getDeptId() {      return deptId;   }   public void setDeptId(Integer deptId) {      this.deptId = deptId;   }   public String getDeptName() {      return deptName;   }   public void setDeptName(String deptName) {      this.deptName = deptName;   }   public String getDeptAddress() {      return deptAddress;   }   public void setDeptAddress(String deptAddress) {      this.deptAddress = deptAddress;   }   @Override   public String toString() {      return "Dept [deptId=" + deptId + ", deptName=" + deptName            + ", deptAddress=" + deptAddress + "]";   } }

 

  sql映射文件,并将相关信息映射到mybatis-config.xml文件。

insert into dept(dept_name,dept_address) values(#{deptName},#{deptAddress});

 

myBatis-config.xml文件修改后为如下内容

 

1.6编写Dao接口及实现

DeptDaoImpl.java

@Repository("deptDao")public class DeptDaoImpl{     @Resource   private SqlSessionTemplate sqlSessionTemplate;     /**    * 根据部门编号查询部门信息    * @param deptId 部门编号    * @return 部门信息    */   public Dept selectDept(Integer deptId){      Dept dept=   sqlSessionTemplate.selectOne("cn.itcast.entity.DeptMapper.selectDept", deptId);             return dept;   }   /**    * 添加部门信息    * @param dept 部门信息    * @return 添加成功的记录数    */   public int insertDept(Dept dept){         System.out.println("------dao.dept:"+dept);         return sqlSessionTemplate.insert("cn.itcast.entity.DeptMapper.insertDept", dept);         }}

 

1.7测试spring与mybatis整合

public class TestDeptDao {    //@Resource //这里没法使用,后继版本有其它方式可以注入   static private DeptDaoImpl deptDao;   @BeforeClass   public static void setUpBeforeClass() throws Exception {      ApplicationContext context =new ClassPathXmlApplicationContext("applicationContext.xml");      deptDao=(DeptDaoImpl) context.getBean("deptDao");   }    @AfterClass   public static void tearDownAfterClass() throws Exception {   }    @Test   public void testSelectDept() {      System.out.println(deptDao.selectDept(1));   }    @Test   public void testInsertDept() {      Dept dept=new Dept();      //dept.setDeptId(117);      dept.setDeptName("name117");      dept.setDeptAddress("address117");      System.out.println("受影响行数:"+deptDao.insertDept(dept));   }}

 

1.8整合springmvc

修改web.xml文件,加入springmvc相关信息,编写 控制器类及相关jsp 文件

 

  spring-mvc.xml

 

 web.xml文件配置

index.jsp
org.springframework.web.context.ContextLoaderListener
contextConfigLocation
classpath:applicationContext.xml
mvc
org.springframework.web.servlet.DispatcherServlet
contextConfigLocation
classpath:spring-mvc.xml
1
mvc
*.action
encodingFilter
org.springframework.web.filter.CharacterEncodingFilter
encoding
UTF-8
encodingFilter
/*

 

 编写控制器类

@Controller@RequestMapping(value="/dept")public class DeptAction {   @Resource   private DeptDaoImpl deptDao;     @RequestMapping(value="/insert")   public String insert(Dept dept){      System.out.println("---action.dept:"+dept);      deptDao.insertDept(dept);      return "forward:/jsp/main.jsp";   }}

 

  缩写跳转页面

/jsp/main.jsp

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> this is main jsp

 

1.9测试ssm整合

缩写测试页面

index.jsp

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>   
名称:
地址:

 

 

二、ssm框架优化

2.1中文乱码

中文乱码处理,在web.xml中配置拦截器(参考前面)

encodingFilter
org.springframework.web.filter.CharacterEncodingFilter
encoding
UTF-8
encodingFilter
/*

 

2.2添加业务层

1).添加业务层相关包、接口及实现

接口包:cn.itcast.service

实现类包:cn.itcast.service.impl

编写接口与实现类(实现类用@Service进行注解,dao接口结合下边的配置,通过@Autowired方式注入代理实例),略。

 

2.3添加dao层接口

2.4修改applicationContext.xml与spring-mvc.xml文件

添加如下内容:

 

spring-mvc.xml

 

2.5修改各层的调用

控制器类通过业务层接口调用业务层,业务层再通过dao接口(可删除dao实现类,及测试类)获取代理对象执行相关SQL,进行数据的操作

 

三、开发环境与插件

3.1软件、框架版本约定

编号

工具

版本

说明

  1.  

MyBatis

3.2

实现持久化操作

  1.  

Spring

3.2

用于分层解藕

  1.  

Junit

4.0

单元测试

  1.  

JQuery

2.0 (支持IE 10 和以上的版本)

实现ajax各种特效和插件

  1.  

EasyUI

1.3.5

基于jQuery的用户界面插件

  1.  

SVN

1.6

开发版本控制软件

  1.  

sitemesh

2.4.2

网页布局和修饰的框架

  1.  

Ztree

3.5.26

树状数据的web显示

3.2开发环境

操作系统

Windows 7

 

开发工具

myEclipse 10

 

数据库

mysql-5.5

 

Web容器

Tomcat 7 / Tomcat6

 

JDK

JDK 1.6+ J2EE 6.0 + Tomcat 7.0  (开发环境与部署环境相同)

JDK 1.5 + J2EE 5.0 + Tomcat 6.0 (开发环境与部署环境相同)

3.3 SVN介绍

1: CVS: 版本控制器鼻祖     2: SVN集中式版本控制器    3: git分布式版本控制器

2: svn安装工具

3: 创建仓库: svnadmin create "e:\testdir\student_svn"   

3.1: 通过客户端选定要提交的文件夹import 信息提交到仓库(仓库URLsvn://localhost:3690)的时候会出现: "目标积极拒绝,无法连接" 说明服务是没有启动

3.2: 启动服务:  svnserve -d -r e:\testdir\student_svn     上传项目的时候会提示: 认证失败,这是由于没有设置用户名与密码

3.3: 修改E:\testdir\student_svn\conf目录下的svnserve.conf及pwsswd文件,svnserve.conf文件中开启密码(去掉前面的注释包括空格): password-db = passwd,pwsswd文件添加用户名及密码格式:用户名=密码

3.4: 通过dos命令创建的服务,命令行窗口是不能够关闭的(关闭窗口,服务也关闭), -d 此参数是仅仅在Linux下面有效的

4: import:  第一次提交,对于同一个项目import只能使用一次,以后都是在原来版本下 commit

5: checkout: 从仓库中下载指定的版本,默认下载是最新版 (在下载的项目中有隐藏 "svn"文件夹)此文件夹中记录服务器相关信息

6: export: 从仓库中下载指定的版本,默认下载是最新版,但是下载完毕之后与SVN仓库没有任何联系,以后也不能进行版本的更新

7:update: 可以更新仓库中新版本,默认是最新版

8: revert: 可以指定某些文件还原到下载的初始版本

9:commit: 本地的工作副本提交到仓库中

10: 在myEclipse中配置svn插件 svn.link 文件中配置: path=soft\\svn,启动myelcipse即可使用SVN功能

插件安装与使用参考:

1)解压zip文件

2)把features,pougins文件夹copy到C:\Users\chufeng\MyEclipse\MyEclipse 10\soft\svn目录下(C:\Users\chufeng\MyEclipse\MyEclipse 10\为myeclipse安装目录, soft/svn可以自己创建)

3)进入C:\Users\chufeng\MyEclipse\MyEclipse 10\dropins目录,并新建svn.link文件,添加内容:path=soft\svn

4)启动myeclipse

5)选择myeclipse的“file"-->import-->svn-->从svn中检出-->检出时,需要填写URL地址,URL为:svn://IP地址[:端口号],使用默认的端口时可以不用写端口

3.4简化实体别名及mapper.xml文件配置

修改applicationContext.xml

 

mybatis-config.xml添加支持基于包的别名扫描

 

3.5 mybatis逆向工程代码生成器(插件)

--安装插件:

1。解压mybatis_generator_1.3.1.zip文件

2。把features,pougins文件夹copy到C:\Users\chufeng\MyEclipse\MyEclipse 10\soft\mybatis目录下(C:\Users\chufeng\MyEclipse\MyEclipse 10\为myeclipse安装目录, soft\mybaits可以自己创建)

3。进入C:\Users\chufeng\MyEclipse\MyEclipse 10\dropins目录,并新建mybatis.link文件,添加内容:path=C:\\Users\\chufeng\\MyEclipse\\MyEclipse 10\\soft\\mybatis

4。启动myeclipse

--使用插件

5。项目中添加generatorConfig.xml文件,并修改相关内容。右建可以找到generator mybatis artifacts生成

mybatis逆向工程代码生成器(插件)百度云链接: 

 

generatorConfig.xml文件内容:

注意:

1.完成后记得把实体实现Serializable,重写一下toString()方法,方便以后使用。

2.当重新使用generatorConfig.xml生成代码时,会在已经存在的数据库后面继续追加代码而非覆盖导致出现大量的重复代码,一个聪明的办法是生成前先注释掉已经生成好的数据库。

 

3.6 jquery与easyUI技术整合

jquery-easyui-1.3.5版本,解压后文件夹直接copy到项目webroot虚拟目录下,文件夹说明:

demo:可以查阅例子,在项目中可以删除

local:本地化资源,一般保留本地化文件

plugins:部署用,

src:源码,分析用,可以删除

thems:样式、图标等信息

导入easyUI相关的文件

 

编写测试页面easyUI.jsp:

 

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%><%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>  
My JSP 'MyJsp.jsp' starting page
test my panel

 

浏览器输入地址访问,并观察是否正常!

注意:

1.jquery.min.js 报错(有红点的问题):解决方式为选中 :项目文件夹 -> 鼠标右键 -> MyEclipse -> manage validation -> 左面点击 -> Excluded resources -> 找到jquery.min.js -> 打上钩 -> apply

2.浏览器:建议使用IE10或以上版本、火狐

 

3.7 json使用

导入包

spring-mvc.xml配置支持JSON注解

 

action中添加支持json交互方法:

@RequestMapping("/doAjax")   @ResponseBody //如果返回json格式,需要这个注解,这里用来测试环境   public Object doAjax(Supplier supplier){      System.out.println("---doAjax.supplier:"+supplier);      supplier.setSupName("supName1");      return supplier;   }

 

 

编写测试页面:json.jsp

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%><%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>  
My JSP 'json.jsp' starting page

 

 四、Java Web框架对比:SSH和SSM

4.1 SSH:Spring+Struts2+Hibernate SSM:Spring+SpringMVC+MyBaitis

   两个框架都是IoC容器+MVC框架+ORM框架。IoC的意思是控制反转,意思是把创建和查找依赖对象的控制权交给容器而不是自己实例化对象;MVC框架采用MVC分层,模型层处理数据逻辑,通常是模型对象在数据库存取数据,视图层处理数据显示,控制器层处理用户交互,通常从视图读取数据,控制用户输入,并向模型发送数据;ORM框架即对象-关系映射模型,在数据库表和持久化对象间进行映射,这样在操作数据库时只需要对对象操作。

 

4.2 Spring

   在IoC容器方面,SSH和SSM都是使用Spring。Spring是轻量级的IoC和AOP容器。IoC容器是Spring的核心,负责创建对象,管理对象,装配对象,配置对象,并且管理这些对象的整个生命周期。管理对象动态向某个对象提供其他对象,通过依赖注入来实现,Spring有三种注入方式:接口注入、Set注入和构造注入。Spring AOP即面向切面编程,可以用在日志和事务管理等方面。

 

4.3 Struts2与SpringMVC

   MVC整合框架两者分别使用的是Struts2和SpringMVC。两者的区别:1.Struts2是类级别的拦截, 一个类对应一个request上下文,SpringMVC是方法级别的拦截,一个方法对应一个request上下文,因此容易实现restful API;2.Struts2是多例的,每次请求都创建一个Action,类属性被方法共享,而SpringMVC是单例的,只有一个实例,方法之间变量不共享;3.Struts2的核心控制器是Filter,SpringMVC的核心控制器是Servlet;4.拦截器方面,Struts2有自己的interceptor机制,SpringMVC用的是独立的AOP方式;5.SpringMVC是Spring的一个模块,项目管理和安全性比Struts2好,配置文件少,并且集成了Ajax,处理ajax请求,直接通过返回数据,方法中使用注解@ResponseBody,能自动将对象转换为JSON数据。

 

4.4 Hibernate与MyBaitis

   ORM框架分别用的是Hibernate和MyBaitis。MyBatis的sql语句是手动编写的,可以进行更为细致的SQL优化,可以减少查询字段,具有高度灵活,可优化,易维护的特点。但需要维护SQL和结果映射,工作量大。Hibernate面向对象查询,以对象化的思维操作数据库,hql与具体的数据库无关,移植性更好。Hibernate无需编写SQL,映射的规则也可以由IDE生成,提高了开发效率,还提供了缓存、日志、级联等强大功能。但是对于多表关联复杂SQL、数据系统权限限制、根据条件编写SQL、存储过程等十分不便,性能难以通过SQL优化。

 

 
 
 
 
 
 

转载于:https://www.cnblogs.com/iOS-mt/p/8461358.html

你可能感兴趣的文章
简单了解HashCode()
查看>>
闭包理解
查看>>
asp.net C#后台实现下载文件的几种方法(全)
查看>>
Web前端开发工程师的具备条件
查看>>
为什么要用日志框架 Logback 基本使用
查看>>
实用Android开发工具和资源精选
查看>>
TileMap
查看>>
JS属性大全
查看>>
java复制文件
查看>>
第一册:lesson seventy nine.
查看>>
GCD的同步异步串行并行、NSOperation和NSOperationQueue一级用dispatch_once实现单例
查看>>
团队作业
查看>>
数据持久化时的小bug
查看>>
mysql中key 、primary key 、unique key 与index区别
查看>>
bzoj2257
查看>>
Linux查看文件编码格式及文件编码转换<转>
查看>>
Leetcode: Find Leaves of Binary Tree
查看>>
Vue 模板解释
查看>>
http://www.bootcss.com/
查看>>
20145308 《网络对抗》 注入shellcode+Return-to-libc攻击 学习总结
查看>>