肿瘤康复网,内容丰富有趣,生活中的好帮手!
肿瘤康复网 > MVC模式 和 三层架构——应用案例

MVC模式 和 三层架构——应用案例

时间:2022-03-26 08:54:45

相关推荐

目录

1.环境准备

2.创建工程

3.创建包

4.创建表

5.创建实体类

6.准备mybatis环境

7.查询所有

7.1编写BrandMapper

7.2编写工具类

7.3编写BrandService

7.4编写Servlet

7.5编写brand.jsp页面

8.其余代码下载:

1.环境准备

环境准备工作,我们分以下步骤实现:

创建新的模块 brand_demo,引入坐标

创建三层架构的包结构

数据库表 tb_brand

实体类 Brand

MyBatis 基础环境

Mybatis-config.xml

BrandMapper.xml

BrandMapper接口

2.创建工程

创建新的模块 brand_demo,引入坐标。我们只要分析出要用到哪儿些技术,那么需要哪儿些坐标也就明确了

需要操作数据库。mysql的驱动包

要使用mybatis框架。mybaits的依赖包

web项目需要用到servlet和jsp。servlet和jsp的依赖包

需要使用 jstl 进行数据展示。jstl的依赖包

pom.xml内容如下:

<?xml version="1.0" encoding="UTF-8"?><project xmlns="/POM/4.0.0" xmlns:xsi="/2001/XMLSchema-instance"xsi:schemaLocation="/POM/4.0.0 /xsd/maven-4.0.0.xsd"><parent><artifactId>test</artifactId><groupId>org.example</groupId><version>1.0-SNAPSHOT</version></parent><modelVersion>4.0.0</modelVersion><artifactId>brand-demo</artifactId><packaging>war</packaging><properties><piler.source>8</piler.source><piler.target>8</piler.target></properties><dependencies><!-- mybatis --><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.5.5</version></dependency><!--mysql--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.34</version></dependency><!--servlet--><dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>3.1.0</version><scope>provided</scope></dependency><!--jsp--><dependency><groupId>javax.servlet.jsp</groupId><artifactId>jsp-api</artifactId><version>2.2</version><scope>provided</scope></dependency><!--jstl,JSP标准标签库--><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></dependencies><build><plugins><plugin><groupId>org.apache.tomcat.maven</groupId><artifactId>tomcat7-maven-plugin</artifactId><version>2.2</version></plugin></plugins></build></project>

3.创建包

创建不同的包结构,用来存储不同的类。包结构如下

4.创建表

-- 删除tb_brand表drop table if exists tb_brand;-- 创建tb_brand表create table tb_brand(-- id 主键id int primary key auto_increment,-- 品牌名称brand_name varchar(20),-- 企业名称company_name varchar(20),-- 排序字段orderedint,-- 描述信息description varchar(100),-- 状态:0:禁用 1:启用status int);-- 添加数据insert into tb_brand (brand_name, company_name, ordered, description, status)values ('三只松鼠', '三只松鼠股份有限公司', 5, '好吃不上火', 0),('华为', '华为技术有限公司', 100, '华为致力于把数字世界带入每个人、每个家庭、每个组织,构建万物互联的智能世界', 1),('小米', '小米科技有限公司', 50, 'are you ok', 1);

5.创建实体类

pojo包下创建名为Brand的类。

package com.pojo;/*** 品牌实体类*/public class Brand {// id 主键private Integer id;// 品牌名称private String brandName;// 企业名称private String companyName;// 排序字段private Integer ordered;// 描述信息private String description;// 状态:0:禁用 1:启用private Integer status;public Brand() {}public Brand(Integer id, String brandName, String companyName, String description) {this.id = id;this.brandName = brandName;panyName = companyName;this.description = description;}public Brand(Integer id, String brandName, String companyName, Integer ordered, String description, Integer status) {this.id = id;this.brandName = brandName;panyName = companyName;this.ordered = ordered;this.description = description;this.status = status;}public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getBrandName() {return brandName;}public void setBrandName(String brandName) {this.brandName = brandName;}public String getCompanyName() {return companyName;}public void setCompanyName(String companyName) {panyName = companyName;}public Integer getOrdered() {return ordered;}public void setOrdered(Integer ordered) {this.ordered = ordered;}public String getDescription() {return description;}public void setDescription(String description) {this.description = description;}public Integer getStatus() {return status;}public void setStatus(Integer status) {this.status = status;}@Overridepublic String toString() {return "Brand{" +"id=" + id +", brandName='" + brandName + '\'' +", companyName='" + companyName + '\'' +", ordered=" + ordered +", description='" + description + '\'' +", status=" + status +'}';}}

6.准备mybatis环境

定义核心配置文件Mybatis-config.xml,并将该文件放置在resources

<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE configurationPUBLIC "-////DTD Config 3.0//EN""/dtd/mybatis-3-config.dtd"><configuration><!--起别名--><typeAliases><package name="com.pojo"/></typeAliases><environments default="development"><environment id="development"><transactionManager type="JDBC"/><dataSource type="POOLED"><property name="driver" value="com.mysql.jdbc.Driver"/>//数据库地址<property name="url" value="jdbc:mysql://localhost:13306/db1"/><property name="username" value="root"/><property name="password" value="1234"/></dataSource></environment></environments><mappers><!--扫描mapper--><package name="com.mapper"/></mappers></configuration>

resources下创建放置映射配置文件的目录结构com/mapper(注意:这个包名创建时只能使用"/",不能使用".",xml和原文件包的结构应该一样),并在该目录下创建映射配置文件BrandMapper.xml

<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapperPUBLIC "-////DTD Mapper 3.0//EN""/dtd/mybatis-3-mapper.dtd"><mapper namespace="com.mapper.BrandMapper"><resultMap id="brandResultMap" type="brand"><result column="brand_name" property="brandName"></result><result column="company_name" property="companyName"></result></resultMap><insert id="add">insert into tb_brand values(null,#{brandName},#{companyName},#{ordered},#{description},#{status});</insert><update id="update">update tb_brand set brand_name=#{brandName},company_name=#{companyName},ordered=#{ordered},description=#{description},status=#{status} where id=#{id};</update><delete id="delete">delete from tb_brand where id=#{id};</delete><select id="selectAll" resultMap="brandResultMap">select * from tb_brand;</select><select id="selectByIdBrand" resultMap="brandResultMap">select * from tb_brand where id=#{id};</select></mapper>

7.查询所有

当我们点击index.html页面中的查询所有这个超链接时,就能查询到上图右半部分的数据。

对于上述的功能,点击查询所有超链接是需要先请后端的servlet,由servlet跳转到对应的页面进行数据的动态展示。而整个流程如下图:

7.1编写BrandMapper

mapper包下创建创建BrandMapper接口,在接口中定义selectAll()方法

List<Brand> selectAll();

7.2编写工具类

com包下创建utils包,并在该包下创建名为SqlSessionFactoryUtils工具类

package com.util;import org.apache.ibatis.io.Resources;import org.apache.ibatis.session.SqlSessionFactory;import org.apache.ibatis.session.SqlSessionFactoryBuilder;import java.io.IOException;import java.io.InputStream;public class SqlSessionFactoryUtils {private static SqlSessionFactory sqlSessionFactory;static {//静态代码块会随着类的加载而自动执行,且只执行一次try {String resource = "mybatis-config.xml";InputStream inputStream = Resources.getResourceAsStream(resource);sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);} catch (IOException e) {e.printStackTrace();}}public static SqlSessionFactory getSqlSessionFactory(){return sqlSessionFactory;}}

7.3编写BrandService

service包下创建BrandService

package com.service;import com.mapper.BrandMapper;import com.pojo.Brand;import com.util.SqlSessionFactoryUtils;import org.apache.ibatis.session.SqlSession;import org.apache.ibatis.session.SqlSessionFactory;import java.util.List;public class BrandService {SqlSessionFactory sqlSessionFactory = SqlSessionFactoryUtils.getSqlSessionFactory();// 查询所有public List<Brand> selectAll(){SqlSession sqlSession = sqlSessionFactory.openSession();BrandMapper mapper = sqlSession.getMapper(BrandMapper.class);List<Brand> brands = mapper.selectAll();sqlSession.close();return brands;}// 添加数据public void add(Brand brand){SqlSession sqlSession = sqlSessionFactory.openSession();BrandMapper mapper = sqlSession.getMapper(BrandMapper.class);mapper.add(brand);// 增删改需要提交事务才能正常进行,查询不需要mit();sqlSession.close();}//按照id查询public Brand selectById(int id){SqlSession sqlSession = sqlSessionFactory.openSession();BrandMapper mapper = sqlSession.getMapper(BrandMapper.class);Brand brand = mapper.selectByIdBrand(id);sqlSession.close();return brand;}//修改public void Update(Brand brand){SqlSession sqlSession = sqlSessionFactory.openSession();BrandMapper mapper = sqlSession.getMapper(BrandMapper.class);mapper.update(brand);mit();sqlSession.close();}//删除public void Delete(Brand brand){SqlSession sqlSession = sqlSessionFactory.openSession();BrandMapper mapper = sqlSession.getMapper(BrandMapper.class);mapper.delete(brand);mit();sqlSession.close();}}

7.4编写Servlet

web包下创建名为SelectAllServletservlet,该servlet的逻辑如下:

调用BrandServiceselectAll()方法进行业务逻辑处理,并接收返回的结果

将上一步返回的结果存储到request域对象中

跳转到brand.jsp页面进行数据的展示

具体的代码如下

package com.web;import com.pojo.Brand;import com.service.BrandService;import javax.servlet.*;import javax.servlet.http.*;import javax.servlet.annotation.*;import java.io.IOException;import java.util.List;@WebServlet(name = "SelectAllServlet", value = "/SelectAllServlet")public class SelectAllServlet extends HttpServlet {private BrandService brandService = new BrandService();@Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {BrandService brandService = new BrandService();List<Brand> brands = brandService.selectAll();request.setAttribute("brands",brands);request.getRequestDispatcher("/brand.jsp").forward(request,response);}@Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {this.doGet(request, response);}}

7.5编写brand.jsp页面

brand.jsp页面在表格中使用JSTLEL表达式从request域对象中获取名为brands的集合数据并展示出来。页面内容如下:

<%@ page contentType="text/html;charset=UTF-8" language="java" %><%@ taglib prefix="c" uri="/jsp/jstl/core" %><%@ page isELIgnored="false" %><html><head><title>显示页面</title></head><body><input type="button" value="新增" id="add"><br><table border="1px"><tr><th>序号</th><th>品牌名称</th><th>企业名称</th><th>排序</th><th>品牌介绍</th><th>状态</th><th>操作</th></tr><c:forEach items="${brands}" var="brand"><tr align="center"bgcolor="#ffc0cb"><td>${brand.id}</td><td>${brand.brandName}</td><td>${panyName}</td><td>${brand.ordered}</td><td>${brand.description}</td><c:if test="${brand.status==1}"><td>启用</td></c:if><c:if test="${brand.status!=1}"><td>禁止</td></c:if><td><a href="/brand-demo/selectByIdServlet?id=${brand.id}">修改</a> <a href="/brand-demo/DeleteServlet?id=${brand.id}">删除</a></td></tr></c:forEach></table><script>document.getElementById("add").onclick=function (){location.href="/brand-demo/AddBrand.jsp";}</script></body></html>

8.其余代码下载:

mvc三层架构应用案例简单代码-Java文档类资源-CSDN文库

可以点个免费的赞吗!!!

如果觉得《MVC模式 和 三层架构——应用案例》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。