爆款云主机2核4G限时秒杀,88元/年起!
查看详情

活动

天翼云最新优惠活动,涵盖免费试用,产品折扣等,助您降本增效!
热门活动
  • 618智算钜惠季 爆款云主机2核4G限时秒杀,88元/年起!
  • 免费体验DeepSeek,上天翼云息壤 NEW 新老用户均可免费体验2500万Tokens,限时两周
  • 云上钜惠 HOT 爆款云主机全场特惠,更有万元锦鲤券等你来领!
  • 算力套餐 HOT 让算力触手可及
  • 天翼云脑AOne NEW 连接、保护、办公,All-in-One!
  • 中小企业应用上云专场 产品组合下单即享折上9折起,助力企业快速上云
  • 息壤高校钜惠活动 NEW 天翼云息壤杯高校AI大赛,数款产品享受线上订购超值特惠
  • 天翼云电脑专场 HOT 移动办公新选择,爆款4核8G畅享1年3.5折起,快来抢购!
  • 天翼云奖励推广计划 加入成为云推官,推荐新用户注册下单得现金奖励
免费活动
  • 免费试用中心 HOT 多款云产品免费试用,快来开启云上之旅
  • 天翼云用户体验官 NEW 您的洞察,重塑科技边界

智算服务

打造统一的产品能力,实现算网调度、训练推理、技术架构、资源管理一体化智算服务
智算云(DeepSeek专区)
科研助手
  • 算力商城
  • 应用商城
  • 开发机
  • 并行计算
算力互联调度平台
  • 应用市场
  • 算力市场
  • 算力调度推荐
一站式智算服务平台
  • 模型广场
  • 体验中心
  • 服务接入
智算一体机
  • 智算一体机
大模型
  • DeepSeek-R1-昇腾版(671B)
  • DeepSeek-R1-英伟达版(671B)
  • DeepSeek-V3-昇腾版(671B)
  • DeepSeek-R1-Distill-Llama-70B
  • DeepSeek-R1-Distill-Qwen-32B
  • Qwen2-72B-Instruct
  • StableDiffusion-V2.1
  • TeleChat-12B

应用商城

天翼云精选行业优秀合作伙伴及千余款商品,提供一站式云上应用服务
进入甄选商城进入云市场创新解决方案
办公协同
  • WPS云文档
  • 安全邮箱
  • EMM手机管家
  • 智能商业平台
财务管理
  • 工资条
  • 税务风控云
企业应用
  • 翼信息化运维服务
  • 翼视频云归档解决方案
工业能源
  • 智慧工厂_生产流程管理解决方案
  • 智慧工地
建站工具
  • SSL证书
  • 新域名服务
网络工具
  • 翼云加速
灾备迁移
  • 云管家2.0
  • 翼备份
资源管理
  • 全栈混合云敏捷版(软件)
  • 全栈混合云敏捷版(一体机)
行业应用
  • 翼电子教室
  • 翼智慧显示一体化解决方案

合作伙伴

天翼云携手合作伙伴,共创云上生态,合作共赢
天翼云生态合作中心
  • 天翼云生态合作中心
天翼云渠道合作伙伴
  • 天翼云代理渠道合作伙伴
天翼云服务合作伙伴
  • 天翼云集成商交付能力认证
天翼云应用合作伙伴
  • 天翼云云市场合作伙伴
  • 天翼云甄选商城合作伙伴
天翼云技术合作伙伴
  • 天翼云OpenAPI中心
  • 天翼云EasyCoding平台
天翼云培训认证
  • 天翼云学堂
  • 天翼云市场商学院
天翼云合作计划
  • 云汇计划
天翼云东升计划
  • 适配中心
  • 东升计划
  • 适配互认证

开发者

开发者相关功能入口汇聚
技术社区
  • 专栏文章
  • 互动问答
  • 技术视频
资源与工具
  • OpenAPI中心
开放能力
  • EasyCoding敏捷开发平台
培训与认证
  • 天翼云学堂
  • 天翼云认证
魔乐社区
  • 魔乐社区

支持与服务

为您提供全方位支持与服务,全流程技术保障,助您轻松上云,安全无忧
文档与工具
  • 文档中心
  • 新手上云
  • 自助服务
  • OpenAPI中心
定价
  • 价格计算器
  • 定价策略
基础服务
  • 售前咨询
  • 在线支持
  • 在线支持
  • 工单服务
  • 建议与反馈
  • 用户体验官
  • 服务保障
  • 客户公告
  • 会员中心
增值服务
  • 红心服务
  • 首保服务
  • 客户支持计划
  • 专家技术服务
  • 备案管家

了解天翼云

天翼云秉承央企使命,致力于成为数字经济主力军,投身科技强国伟大事业,为用户提供安全、普惠云服务
品牌介绍
  • 关于天翼云
  • 智算云
  • 天翼云4.0
  • 新闻资讯
  • 天翼云APP
基础设施
  • 全球基础设施
  • 信任中心
最佳实践
  • 精选案例
  • 超级探访
  • 云杂志
  • 分析师和白皮书
  • 天翼云·创新直播间
市场活动
  • 2025智能云生态大会
  • 2024智算云生态大会
  • 2023云生态大会
  • 2022云生态大会
  • 天翼云中国行
天翼云
  • 活动
  • 智算服务
  • 产品
  • 解决方案
  • 应用商城
  • 合作伙伴
  • 开发者
  • 支持与服务
  • 了解天翼云
      • 文档
      • 控制中心
      • 备案
      • 管理中心

      JavaWeb之MVC开发模式之商品实例CURD详解

      首页 知识中心 软件开发 文章详情页

      JavaWeb之MVC开发模式之商品实例CURD详解

      2024-03-28 09:00:50 阅读次数:55

      JavaWeb,mvc

      三层MVC开发模式架构

      使用自己设计的商城实体类创建对应的数据库表和类完成增删改查管理模块。 (1)不使用MVC设计模式完成增删改查管理功能。 (2)使用MVC设计模式完成增删改查管理功能。 (3)对比(1)和(2)理解使用MVC模式的优势。 JavaWeb之MVC开发模式之商品实例CURD详解 JavaWeb之MVC开发模式之商品实例CURD详解

      一.先建立目标类对象:Curriculum。

      属性对象为:ID,curriculumName,price,introduction。 JavaWeb之MVC开发模式之商品实例CURD详解

      二.建立DAO层,作用于对于Mysql数据库的增删改查的操作。 对于servlet与数据库操作CURD之间写了一个FService,便于代码的维护和排除管理。具体代码如下: CurriculumDao代码如下:

          public List<Curriculum> GetAllCurriculum() throws SQLException {
              QueryRunner r=new QueryRunner(DataSourceUtils.getDataSource());
              String sql="select * from curriculum";
              return r.query(sql,new BeanListHandler<Curriculum>(Curriculum.class));
          }
          public Curriculum selectTypeNameByID(int feid) throws SQLException {
              QueryRunner r=new QueryRunner(DataSourceUtils.getDataSource());
              String sql="select * from curriculum where id=?";
              return r.query(sql,new BeanHandler<Curriculum>(Curriculum.class),feid);
          }
          public Curriculum select(int id) throws SQLException {
              QueryRunner r = new QueryRunner(DataSourceUtils.getDataSource());
              String sql = "select * from curriculum where id = ?";
              return r.query(sql, new BeanHandler<Curriculum>(Curriculum.class),id);
          }
          public void insert(Curriculum f) throws SQLException {
              QueryRunner r = new QueryRunner(DataSourceUtils.getDataSource());
              String sql = "insert into curriculum(curriculumName,price,introduction) values(?,?,?)";
              r.update(sql,f.getCurriculumName(),f.getPrice(),f.getIntroduction());
          }
          public void update(Curriculum f) throws SQLException {
              QueryRunner r = new QueryRunner(DataSourceUtils.getDataSource());
              String sql = "update curriculum set curriculumName=?,price=?,introduction=? where id = ?";
              r.update(sql,f.getCurriculumName(),f.getPrice(),f.getIntroduction(),f.getId());
          }
          public void delete(int id) throws SQLException {
              QueryRunner r = new QueryRunner(DataSourceUtils.getDataSource());
              String sql = "delete from curriculum where id = ?";
              r.update(sql,id);
          }
          public static void main(String[] args) throws SQLException {
              CurriculumDao td=new CurriculumDao();
              List<Curriculum> list=td.GetAllCurriculum();
              //System.out.println("size="+list.size());
          }
      

      FService代码如下:

       CurriculumDao tDao=new CurriculumDao();
          public List<Curriculum> GetAllCurriculum()
          {
              List<Curriculum> list=null;
              try {
                  list=tDao.GetAllCurriculum();
              } catch (SQLException e) {
                  e.printStackTrace();
              }
              return list;
          }
          public Curriculum selectTypeNameByID(int feid)
          {
              Curriculum type=null;
              try {
                  type=tDao.selectTypeNameByID(feid);
              } catch (SQLException e) {
                  e.printStackTrace();
              }
              return type;
          }
          public Curriculum select(int id) {
              Curriculum f=null;
              try {
                  f = tDao.select(id);
              } catch (SQLException e) {
                  // TODO Auto-generated catch block
                  e.printStackTrace();
              }
              return f;
          }
          public void insert(Curriculum f) {
              try {
                  tDao.insert(f);
              } catch (SQLException e) {
                  // TODO Auto-generated catch block
                  e.printStackTrace();
              }
          }
          public void update(Curriculum f) {
              try {
                  tDao.update(f);
              } catch (SQLException e) {
                  // TODO Auto-generated catch block
                  e.printStackTrace();
              }
          }
          public boolean delete(int id) {
              try {
                  tDao.delete(id);
                  return true;
              } catch (SQLException e) {
                  // TODO Auto-generated catch block
                  e.printStackTrace();
                  return false;
              }
          }
      

      三,过滤层Filter

      过滤器是指“过滤器”,它是客户端和服务器资源文件之间的过滤器。 在访问资源文件之前,通过一系列过滤器对请求进行修改和判断,对不符合规则的请求进行拦截或中途修改;还可以过滤、拦截或修改响应。 作用:用来过滤网站的数据。 处理中文乱码 登录验证等等 JavaWeb之MVC开发模式之商品实例CURD详解

      具体代码如下:

      public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain)
              throws ServletException, IOException {
              req.setCharacterEncoding("utf-8");//解决请求过程的乱码
              chain.doFilter(req, resp);
          }
      

      需要注意,我们配置注册url映射写一下任何请求访问都需要经过过滤层,这样就实现了对于中文字符的过滤与转码。

      1.@WebFilter(filterName = "EncodeFilter",urlPatterns = "/*")
      

      四.增加商品

      写一个form表单,写三个输入框,获取到课程名称,课程价格,课程介绍。 传值到映射路径为Curriculum_add的servlet中。

      4.1 增加前端adds.jsp

      <form class="form-inline" method="post" action="/MVC_war_exploded/Curriculum_add">
          课程名称:<input type="text" class="form-control" id="input_curriculumName" name="curriculumName" placeholder="名称" required="required" ><br/>
          课程价格:<input type="text" class="form-control" id="input_price" name="price" placeholder="价格" required="required" ><br/>
          课程介绍:<input type="text" class="form-control" id="input_introduction" name="introduction" placeholder="课程" required="required" ><br/>
      <input type="submit" class="btn btn-warning" value="添加课程教程"/>
      

      4.2 增加的servlet服务

      获取到前端发来的带参请求,传递给fService里然后调用Dao层,实现了对于数据项Mysql里添加数据的操作。

      1. private FService fService = new FService();
      2. protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
      3.    String curriculumName = request.getParameter("curriculumName");
        
      4.    String price = request.getParameter("price");
        
      5.    String introduction = request.getParameter("introduction");
        
      6.    double price1=Double.parseDouble(price);
        
      7.    fService.insert(new Curriculum(curriculumName,price1,introduction));
        
      8.    request.getRequestDispatcher("/Curriculum_list").forward(request, response);
        
      9. }
      10. protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
      11.    doGet(request, response);
        
      12. } Adds.jsp->添加我们的目标商品: JavaWeb之MVC开发模式之商品实例CURD详解 发起请求后处理跳转结果页面: JavaWeb之MVC开发模式之商品实例CURD详解

      五.删除课程

      删除商品的按钮设计在list前端展示所有课程页面里。

      1.<a rel="nofollow" class="btn btn-danger" href="/MVC_war_exploded/Curriculum_delete?id=${f.id }">删除</a>
      

      当发生点击事件,向映射路径为Curriculum_delete的servlet发起了一个带参请求。 Curriculum_delete的servlet代码如下: 由FService调用DAO层执行删除sql语句的操作:

        private FService fService = new FService();
          protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
              int id = Integer.parseInt(request.getParameter("id"));
              fService.delete(id);
              request.getRequestDispatcher("/Curriculum_list").forward(request, response);
          }
          protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
              doGet(request, response);
          }
      

      删除执行结果: JavaWeb之MVC开发模式之商品实例CURD详解 JavaWeb之MVC开发模式之商品实例CURD详解

      五.修改操作

      修改和删除大致相同,在list页面里加一个修改的按钮如下:

      <a rel="nofollow" class="btn btn-primary" href="/MVC_war_exploded/Curriculum_editshow?id=${f.id }">修改</a>
      

      当发生点击事件,向映射路径为Curriculum_editshow的servlet发起了一个带参请求。

              int id = Integer.parseInt(request.getParameter("id"));
              fService.delete(id);
              request.getRequestDispatcher("/Curriculum_list").forward(request, response);
      

      JavaWeb之MVC开发模式之商品实例CURD详解

      删除之后: JavaWeb之MVC开发模式之商品实例CURD详解

      六.修改课程

      修改课程作为一个独立的页面,使用一个form搜集需要改的目标值,然后指向路径为Curriculum_edit的servlet执行修改操作:

         <form class="form-horizontal" action="/MVC_war_exploded/Curriculum_edit" method="post">
              <input type="hidden" name="id" value="${f.id }">
              <div class="form-group">
                  <div class="col-sm-6">
                      课程名称:<input type="text" class="form-control" id="input_curriculumName" name="curriculumName" value="${f.curriculumName }" required="required"><br/>
                      课程价格:<input type="text" class="form-control" id="input_price" name="price" value="${f.price }" required="required"><br/>
                      课程介绍:<input type="text" class="form-control" id="input_introduction" name="introduction" value="${f.introduction }" required="required">
                      
                  </div>
              </div>
              <div class="form-group">
                  <div class="col-sm-offset-1 col-sm-10">
                      <button type="submit" class="btn btn-success">提交修改</button>
                  </div>
              </div>
          </form>
      

      Curriculum_edit服务:

              Curriculum t = new Curriculum();
              try {
                  BeanUtils.copyProperties(t, request.getParameterMap());
              } catch (Exception e) {
                  e.printStackTrace();
              }
              fService.update(t);//更新修改的内容
              request.getRequestDispatcher("/Curriculum_list").forward(request, response);
      

      七.查询全部 前端JSP如下:

              <c:forEach items="${list }" var="f">
                  <tr>
                      <td><p>${f.id }</p></td>
                      <td><p>${f.curriculumName }</p></td>
                      <td><p>${f.price }</p></td>
                      <td><p>${f.introduction }</p></td>
                      <td>
                          <a rel="nofollow" class="btn btn-primary" href="/MVC_war_exploded/Curriculum_editshow?id=${f.id }">修改</a>
                          <a rel="nofollow" class="btn btn-danger" href="/MVC_war_exploded/Curriculum_delete?id=${f.id }">删除</a>
                      </td>
                  </tr>
              </c:forEach>
      

      Servlet代码如下:

              List<Curriculum> list= fService.GetAllCurriculum();
              request.setAttribute("list", list);
              this.getServletContext().removeAttribute("Curriculum");
              this.getServletContext().setAttribute("Curriculum",list);
              request.getRequestDispatcher("/Curriculum_list.jsp").forward(request, response);
      

      JavaWeb之MVC开发模式之商品实例CURD详解

      实验总结

      对比(1)和(2)理解使用MVC模式的优势:分工明确,便于维护,重用性高,多个视图共享一个模型,有利于分工合作,可以加快开发进度。 MVC架构图如下: JavaWeb之MVC开发模式之商品实例CURD详解

      实验过程中没有遇到较大的问题,在使用Maven的时候遇到过包与sql版本不兼容的问题,通过更换本地包解决了此问题。 本次实验让我对MVC三层架构有了非常深刻的理解,对后面非原生的web开发过程中的推动作用很大。

      版权声明:本文内容来自第三方投稿或授权转载,原文地址:https://blog.51cto.com/u_15568258/5765717,作者:上进小菜猪,版权归原作者所有。本网站转在其作品的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如因作品内容、版权等问题需要同本网站联系,请发邮件至ctyunbbs@chinatelecom.cn沟通。

      上一篇:C++ 递归算法解析(演示语言:c++/c#/python/lua)(用博主会的所有语言来演示一波)

      下一篇:01-HTML学习-简单介绍

      相关文章

      2025-03-25 08:08:18

      ssm(Spring+Spring mvc+mybatis)Service层接口——IDeptService

      ssm(Spring+Spring mvc+mybatis)Service层接口——IDeptService

      2025-03-25 08:08:18
      mvc , mybatis , Service , Spring
      2025-02-25 08:57:55

      JavaWeb输出HelloWorld

      JavaWeb输出HelloWorld

      2025-02-25 08:57:55
      JavaWeb , 分享 , 天才 , 日常
      2024-09-25 10:14:48

      JavaWeb——jQuery常用方法

      JavaWeb——jQuery常用方法

      2024-09-25 10:14:48
      javascript , JavaWeb , jQuery
      2024-09-25 10:14:09

      《Spring MVC》 第三章 @Controller、@RequestMapping 注解和获取请求参数

      使用@Controller、@RequestMapping 注解提供Web服务,介绍如何获取请求参数。

      2024-09-25 10:14:09
      Controller , mvc , spring
      2024-09-24 06:29:56

      SpringBoot-自动配置

      SpringBoot-自动配置

      2024-09-24 06:29:56
      mvc , SpringBoot
      2024-09-23 05:58:49

      Spring MVC 架构详解

      Spring MVC(Model-View-Controller)是 Spring 框架中用于构建 Web 应用程序的模块。它通过分离应用程序的不同方面(输入逻辑、业务逻辑和 UI 逻辑)来简化开发工作。

      2024-09-23 05:58:49
      mvc , spring , 视图
      2024-09-23 05:58:49

      Spring MVC 请求处理流程详解

      Spring MVC 是一个强大的 Web 框架,它通过明确的分层架构使得 Web 应用程序的开发变得更加简洁和模块化。

      2024-09-23 05:58:49
      java , mvc , spring
      2024-08-06 09:37:28

      什么是Ruby on Rails(简称ROR)

      Ruby on Rails是一套用Ruby写的Web应用程序框架,Ruby是一个与Python,Smalltalk和Perl相似的动态语言。

      2024-08-06 09:37:28
      mvc , ruby
      2024-08-06 09:36:58

      什么是MVC-1

      模型-视图-控制器(MVC)是Xerox PARC在八十年代为编程语言Smalltalk-80发明的一种软件设计模式,至今已被广泛使用。最近几年被推荐为Sun公司J2EE平台的设计模式,并且受到越来越多的使用 ColdFusion 和 PHP 的开发者的欢迎。模型-视图-控制器模式是一个有用的工具箱,它有很多好处,但也有一些缺点。

      2024-08-06 09:36:58
      mvc , 设计模式
      2024-06-25 09:53:21

      一天十道Java面试题----第五天(spring的事务传播机制------>mybatis的优缺点)

      方法A是一个事务的方法,方法A执行过程中调用了方法B,那么方法B有无事务以及方法B对事务的要求不同都会对方法A的事务具体执行造成影响,同时方法A的事务对方法B的事务执行也有影响,这种影响具体是什么就由两个方法所定义的事务传播类型所决定。

      2024-06-25 09:53:21
      java , mvc , spring
      查看更多
      推荐标签

      作者介绍

      天翼云小翼
      天翼云用户

      文章

      33561

      阅读量

      5243901

      查看更多

      最新文章

      ssm(Spring+Spring mvc+mybatis)Service层接口——IDeptService

      2025-03-25 08:08:18

      JavaWeb输出HelloWorld

      2025-02-25 08:57:55

      JavaWeb——jQuery常用方法

      2024-09-25 10:14:48

      《Spring MVC》 第三章 @Controller、@RequestMapping 注解和获取请求参数

      2024-09-25 10:14:09

      SpringBoot-自动配置

      2024-09-24 06:29:56

      Spring MVC 架构详解

      2024-09-23 05:58:49

      查看更多

      热门文章

      SpringMVC-<mvc:annotation-driven/>

      2023-05-31 08:32:43

      JavaWeb——jQuery常用方法

      2024-09-25 10:14:48

      解读静态资源的访问

      2023-06-14 09:10:50

      Servlet读取JSP页面中文乱码

      2023-06-21 06:43:02

      SpringMVC的运行流程(一)

      2023-06-20 08:16:18

      JavaWeb——jQuery九大选择器

      2023-06-21 06:37:32

      查看更多

      热门标签

      java Java python 编程开发 代码 开发语言 算法 线程 Python html 数组 C++ 元素 javascript c++
      查看更多

      相关产品

      弹性云主机

      随时自助获取、弹性伸缩的云服务器资源

      天翼云电脑(公众版)

      便捷、安全、高效的云电脑服务

      对象存储

      高品质、低成本的云上存储服务

      云硬盘

      为云上计算资源提供持久性块存储

      查看更多

      随机文章

      SpringMVC的运行流程(一)

      Spring系列之零碎知识点

      JavaWeb之Servlet接口

      ssm(Spring+Spring mvc+mybatis)Service层接口——IDeptService

      IDEA实用教程(八)—— 创建JavaWeb项目

      JavaWeb输出HelloWorld

      • 7*24小时售后
      • 无忧退款
      • 免费备案
      • 专家服务
      售前咨询热线
      400-810-9889转1
      关注天翼云
      • 旗舰店
      • 天翼云APP
      • 天翼云微信公众号
      服务与支持
      • 备案中心
      • 售前咨询
      • 智能客服
      • 自助服务
      • 工单管理
      • 客户公告
      • 涉诈举报
      账户管理
      • 管理中心
      • 订单管理
      • 余额管理
      • 发票管理
      • 充值汇款
      • 续费管理
      快速入口
      • 天翼云旗舰店
      • 文档中心
      • 最新活动
      • 免费试用
      • 信任中心
      • 天翼云学堂
      云网生态
      • 甄选商城
      • 渠道合作
      • 云市场合作
      了解天翼云
      • 关于天翼云
      • 天翼云APP
      • 服务案例
      • 新闻资讯
      • 联系我们
      热门产品
      • 云电脑
      • 弹性云主机
      • 云电脑政企版
      • 天翼云手机
      • 云数据库
      • 对象存储
      • 云硬盘
      • Web应用防火墙
      • 服务器安全卫士
      • CDN加速
      热门推荐
      • 云服务备份
      • 边缘安全加速平台
      • 全站加速
      • 安全加速
      • 云服务器
      • 云主机
      • 智能边缘云
      • 应用编排服务
      • 微服务引擎
      • 共享流量包
      更多推荐
      • web应用防火墙
      • 密钥管理
      • 等保咨询
      • 安全专区
      • 应用运维管理
      • 云日志服务
      • 文档数据库服务
      • 云搜索服务
      • 数据湖探索
      • 数据仓库服务
      友情链接
      • 中国电信集团
      • 189邮箱
      • 天翼企业云盘
      • 天翼云盘
      ©2025 天翼云科技有限公司版权所有 增值电信业务经营许可证A2.B1.B2-20090001
      公司地址:北京市东城区青龙胡同甲1号、3号2幢2层205-32室
      • 用户协议
      • 隐私政策
      • 个人信息保护
      • 法律声明
      备案 京公网安备11010802043424号 京ICP备 2021034386号