达州住房和城乡建设部网站,软件下载网站排行榜,wordpress取消更改,平阳住房和城乡规划建设局网站文章目录 0. 项目介绍1. 环境准备2. 查看所有2.1 编写BrandMapper接口2.2 编写服务类#xff0c;创建BrandService#xff0c;用于调用该方法2.5 编写Servlet2.4 编写brand.jsp页面2.5 测试 3.添加3.1 编写BrandMapper接口 添加方法3.2 编写服务3.3 改写Brand.jsp页面#x… 文章目录 0. 项目介绍1. 环境准备2. 查看所有2.1 编写BrandMapper接口2.2 编写服务类创建BrandService用于调用该方法2.5 编写Servlet2.4 编写brand.jsp页面2.5 测试 3.添加3.1 编写BrandMapper接口 添加方法3.2 编写服务3.3 改写Brand.jsp页面添加新增按钮并跳转到新的jsp页面addBrand页面3.4 编写Servlet3.5 测试 4.修改/回显4.1 回显数据4.2 修改数据 5. 删除 0. 项目介绍
其他项目-用户登录注册页面https://blog.csdn.net/meini32/article/details/132305323
项目介绍 需求完成品牌数据的增删改查操作
技术框架说明 三层架构是将我们的项目分成了三个层面分别是 表现层 、 业务逻辑层 、 数据访问层。 整个流程是浏览器发送请求表现层的Servlet接收请求并调用业务逻辑层的方法进行业务逻辑处理而业务逻辑层方法调用数据访问层方法进行数据的操作依次返回到serlvet然后servlet将数据交由 JSP 进行展示。 数据访问层Mybatis、mysql业务逻辑层JAVA表现层JSP、Servlet 实现步骤
1. 环境准备 环境准备 创建新的项目 brand_demo引入坐标配置pom文件 创建三层架构的包结构 数据库表 tb_brand 实体类 Brand MyBatis 基础环境配置 Mybatis-config.xml BrandMapper.xml BrandMapper接口 Mybatis-config.xml
?xml version1.0 encodingUTF-8 ?
!DOCTYPE configurationPUBLIC -//mybatis.org//DTD Config 3.0//ENhttp://mybatis.org/dtd/mybatis-3-config.dtd
configuration!--起别名--typeAliasespackage namecom.itheima.pojo//typeAliasesenvironments defaultdevelopmentenvironment iddevelopmenttransactionManager typeJDBC/dataSource typePOOLEDproperty namedriver valuecom.mysql.jdbc.Driver/property nameurl valuejdbc:mysql:///db1?useSSLfalseamp;useServerPrepStmtstrue/property nameusername valueroot/property namepassword value123456//dataSource/environment/environmentsmappers!--扫描mapper--package namecom.itheima.mapper//mappers
/configurationpom.xml文件配置
?xml version1.0 encodingUTF-8?
project xmlnshttp://maven.apache.org/POM/4.0.0xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersiongroupIdorg.example/groupIdartifactIdbrand-demo/artifactIdversion1.0-SNAPSHOT/versionpackagingwar/packagingpropertiesmaven.compiler.source8/maven.compiler.sourcemaven.compiler.target8/maven.compiler.target/propertiesdependencies!-- mybatis --dependencygroupIdorg.mybatis/groupIdartifactIdmybatis/artifactIdversion3.5.5/version/dependency!--mysql--dependencygroupIdmysql/groupIdartifactIdmysql-connector-java/artifactIdversion5.1.34/version/dependency!--servlet--dependencygroupIdjavax.servlet/groupIdartifactIdjavax.servlet-api/artifactIdversion3.1.0/versionscopeprovided/scope/dependency!--jsp--dependencygroupIdjavax.servlet.jsp/groupIdartifactIdjsp-api/artifactIdversion2.2/versionscopeprovided/scope/dependency!--jstl--dependencygroupIdjstl/groupIdartifactIdjstl/artifactIdversion1.2/version/dependencydependencygroupIdtaglibs/groupIdartifactIdstandard/artifactIdversion1.1.2/version/dependency/dependenciesbuildpluginsplugingroupIdorg.apache.tomcat.maven/groupIdartifactIdtomcat7-maven-plugin/artifactIdversion2.2/version/plugin/plugins/build/project工具类 SqlsessionFactoryUtils
package com.itheima.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{InputStream inputStream null;try {inputStream Resources.getResourceAsStream(mybatis-config.xml);} catch (IOException e) {e.printStackTrace();}SqlSessionFactory sqlSessionFactory new SqlSessionFactoryBuilder().build(inputStream);}public static SqlSessionFactory getSqlSessionFactory(){return sqlSessionFactory;}
}
属性名称对应不上解决方法 在BrandMapper映射文件里定义映射关系
?xml version1.0 encodingUTF-8 ?
!DOCTYPE mapperPUBLIC -//mybatis.org//DTD Mapper 3.0//ENhttp://mybatis.org/dtd/mybatis-3-mapper.dtd!--
namespace:名称空间
--mapper namespacecom.itheima.mapper.BrandMapper!-- resultMap 标签定义映射关系--resultMap idbrandRseultMap typebrandresult columnbrand_name propertybrandName/resultresult columncompany_name propertycompanyName/result/resultMap/mapper
在接口方法中指定该映射
public interface BrandMapper {//查看所有ResultMap(brandResultMap)Select(select * from tb_brand;)ListBrand selectAll();
}2. 查看所有
说明当我们点击 index.html 页面中的 查询所有 这个超链接时就能查询到上图右半部分的数据。
2.1 编写BrandMapper接口
public interface BrandMapper {//查看所有Select(select * from tb_brand;)ListBrand selectAll();
}2.2 编写服务类创建BrandService用于调用该方法
package com.itheima.service;import com.itheima.mapper.BrandMapper;
import com.itheima.pojo.Brand;
import com.itheima.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 ListBrand selectAll(){//调用BrandMapper中的selectAll方法//获取SqlSessionSqlSession sqlSession sqlSessionFactory.openSession();//获取MapperBrandMapper brandMapper sqlSession.getMapper(BrandMapper.class);//调用方法ListBrand brands brandMapper.selectAll();sqlSession.close();return brands;}
}
2.5 编写Servlet
package com.itheima.web;import com.itheima.pojo.Brand;
import com.itheima.service.BrandService;import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;
import java.util.List;WebServlet(/selectAllServlet)
public class SelectAllServlet extends HttpServlet {//创建这个服务private BrandService service new BrandService();Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//1. 调用BrandService完成查询ListBrand brands service.selectAll();//2. 存入request域中request.setAttribute(brands,brands);//3. 转发到brand.jsprequest.getRequestDispatcher(/brand.jsp).forward(request,response);}Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {this.doGet(request, response);}
}2.4 编写brand.jsp页面
% taglib prefixc urihttp://java.sun.com/jsp/jstl/core%
% page isELIgnoredfalse %
% page contentTypetext/html;charsetUTF-8 languagejava %!DOCTYPE html
html langen
headmeta charsetUTF-8titleTitle/title
/head
body
input typebutton value新增br
hr
table border1 cellspacing0 width800trth序号/thth品牌名称/thth企业名称/thth排序/thth品牌介绍/thth状态/thth操作/th/trc:forEach items${brands} varbrand varStatusstatustr aligncenter
%-- td${brand.id}/td--%td${brand.id}/tdtd${brand.brandName}/tdtd${brand.companyName}/tdtd${brand.ordered}/tdtd${brand.description}/tdc:if test${brand.status1}td启用/td/c:ifc:if test${brand.status0}td禁止/td/c:iftda href/brand-demo/selectByIdServlet?id${brand.id}修改/a a href#删除/a/td/tr/c:forEach/table/body
/html
2.5 测试 3.添加
3.1 编写BrandMapper接口 添加方法
//添加Insert(insert into tb_brand values(null,#{brandName},#{companyName},#{ordered},#{description},#{status}))void add(Brand brand);3.2 编写服务
public class BrandService {SqlSessionFactory sqlSessionFactory SqlSessionFactoryUtils.getSqlSessionFactory();//添加数据public void add(Brand brand){//调用BrandMapper中的selectAll方法//获取SqlSessionSqlSession sqlSession sqlSessionFactory.openSession();//获取MapperBrandMapper brandMapper sqlSession.getMapper(BrandMapper.class);//调用方法brandMapper.add(brand);//提交事务sqlSession.commit();sqlSession.close();}
}3.3 改写Brand.jsp页面添加新增按钮并跳转到新的jsp页面addBrand页面 %--Created by IntelliJ IDEA.User: 11445Date: 2023/8/18Time: 20:31To change this template use File | Settings | File Templates.
--%
% page contentTypetext/html;charsetUTF-8 languagejava %!DOCTYPE html
html langenheadmeta charsetUTF-8title添加品牌/title
/head
body
h3添加品牌/h3
form action methodpost品牌名称input namebrandNamebr企业名称input namecompanyNamebr排序input nameorderedbr描述信息textarea rows5 cols20 namedescription/textareabr状态input typeradio namestatus value0禁用input typeradio namestatus value1启用brinput typesubmit value提交
/form
/body
/html 3.4 编写Servlet 在 web 包下创建 AddServlet 的 servlet 该 servlet 的逻辑如下: 设置处理post请求乱码的字符集接收客户端提交的数据将接收到的数据封装到 Brand 对象中调用 BrandService 的 add() 方法进行添加的业务逻辑处理跳转到 selectAllServlet 资源重新查询数据 package com.itheima.web;import com.itheima.pojo.Brand;
import com.itheima.service.BrandService;import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;WebServlet(/addServlet)
public class AddServlet extends HttpServlet {private BrandService service new BrandService();Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//处理post请求的乱码问题req.setCharacterEncoding(utf-8);//1. 接收表单提交的数据封装为一个Brand对象String brandName req.getParameter(brandName);String companyName req.getParameter(companyName);String ordered req.getParameter(ordered);String description req.getParameter(description);String status req.getParameter(status);//封装为一个Brand对象Brand brand new Brand();brand.setBrandName(brandName);brand.setCompanyName(companyName);brand.setOrdered(Integer.parseInt(ordered));brand.setDescription(description);brand.setStatus(Integer.parseInt(status));//2. 调用service 完成添加service.add(brand);//3. 转发到查询所有Servletreq.getRequestDispatcher(/selectAllServlet).forward(req,resp);}Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {this.doGet(req,resp);}
}
3.5 测试 4.修改/回显
在该修改页面我们可以看到将 编辑 按钮所在行的数据 回显 到表单然后需要修改那个数据在表单中进行修改然后点击 提交 的按钮将数据提交到后端后端再将数据存储到数据库中。 4.1 回显数据
//编写BrandMapper接口 添加方法
//回显根据id查询Select(select * from tb_brand where id #{id}})ResultMap(brandResultMap)Brand selectById(int id);//编写服务
import java.util.List;public class BrandService {SqlSessionFactory sqlSessionFactory SqlSessionFactoryUtils.getSqlSessionFactory();public Brand selectById(int id){//调用BrandMapper中的selectById方法//获取SqlSessionSqlSession sqlSession sqlSessionFactory.openSession();//获取MapperBrandMapper brandMapper sqlSession.getMapper(BrandMapper.class);//调用方法Brand brand brandMapper.selectById(id);sqlSession.close();return brand;}
}
编写servlet方法
package com.itheima.web;import com.itheima.pojo.Brand;
import com.itheima.service.BrandService;import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;WebServlet(/selectByIdServlet)
public class SelectByIdServlet extends HttpServlet {//创建这个服务private BrandService service new BrandService();Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//接受idString id req.getParameter(id);//1. 调用BrandService完成查询Brand brand service.selectById(Integer.parseInt(id));//2. 存入request域中req.setAttribute(brand,brand);//3. 转发到brand.jspreq.getRequestDispatcher(/update.jsp).forward(req,resp);}Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {this.doPost(req, resp);}
}
//编写update xml
% taglib prefixc urihttp://java.sun.com/jsp/jstl/core%
% page isELIgnoredfalse %
% page contentTypetext/html;charsetUTF-8 languagejava %!DOCTYPE html
html langenheadmeta charsetUTF-8title修改品牌/title
/head
body
h3修改品牌/h3
form action/updateServlet methodpost%--隐藏域提交id--%input typehidden nameid value${brand.id}品牌名称input namebrandName value${brand.brandName}br企业名称input namecompanyName value${brand.companyName}br排序input nameordered value${brand.ordered}br描述信息textarea rows5 cols20 namedescription${brand.description} /textareabr状态c:if test${brand.status 0}input typeradio namestatus value0 checked禁用input typeradio namestatus value1启用br/c:ifc:if test${brand.status 1}input typeradio namestatus value0 禁用input typeradio namestatus value1 checked启用br/c:ifinput typesubmit value提交
/form
/body
/html
修改Brand.jsp的修改连接地址
效果
4.2 修改数据 //修改 Update(“update tb_brand set brand_name #{brandName},company_name #{companyName},ordered \n” “#{ordered},description #{description},status #{status} where id #{id}”) void update(Brand brand); // 修改public void update(Brand brand){//调用BrandMapper中的selectById方法//获取SqlSessionSqlSession sqlSession sqlSessionFactory.openSession();//获取MapperBrandMapper brandMapper sqlSession.getMapper(BrandMapper.class);//调用方法brandMapper.update(brand);//提交sqlSession.commit();sqlSession.close();}WebServlet(/updateServlet)
public class UpdateServlet extends HttpServlet {//创建这个服务private BrandService service new BrandService();Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//处理post请求的乱码问题req.setCharacterEncoding(utf-8);//1. 接收表单提交的数据封装为一个Brand对象String id req.getParameter(id);String brandName req.getParameter(brandName);String companyName req.getParameter(companyName);String ordered req.getParameter(ordered);String description req.getParameter(description);String status req.getParameter(status);//封装为一个Brand对象Brand brand new Brand();brand.setId(Integer.parseInt(id));brand.setBrandName(brandName);brand.setCompanyName(companyName);brand.setOrdered(Integer.parseInt(ordered));brand.setDescription(description);brand.setStatus(Integer.parseInt(status));//2. 调用service 完成添加service.update(brand);//3. 转发到查询所有Servletreq.getRequestDispatcher(/selectAllServlet).forward(req,resp);}Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {this.doGet(req,resp);}
} 5. 删除 //删除Delete(delete from tb_brand where id #{id})void deleteById(int id); public void deleteById(int id){SqlSession sqlSession sqlSessionFactory.openSession();BrandMapper brandMapper sqlSession.getMapper(BrandMapper.class);brandMapper.deleteById(id);sqlSession.commit();sqlSession.close();}WebServlet(/deleteByIdServlet)
public class DeleteByIdServlet extends HttpServlet {BrandService service new BrandService();Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {String id req.getParameter(id);service.deleteById(Integer.parseInt(id));req.getRequestDispatcher(/selectAllServlet).forward(req,resp);}Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {this.doPost(req, resp);}
}