SpringBoot前期

SpringBoot前期基础

什么是服务器?
  • 服务器就是一台高性能的电脑
什么是Web服务器?
  • 就是在高性能电脑上安装了Web服务软件,比如安装了Tomcat
什么是Web服务软件?
  • Web服务软件是不具备任何业务功能的, 可以理解为容器,用来装实现具体业务功能的组件(组件指Servlet,而Controller的作用是将多个Servlet整合到了一个类文件中)

  • Web服务软件做了哪些事儿?

    • 负责搭建底层的网络连接
    • 负责根据客户端请求的静态资源路径找到静态资源文件并响应给客户端
    • 负责根据客户端请求的动态资源路径找到对应Controller里面的方法并且执行
SpringBoot框架
  • 如果不使用SpringBoot工程, 创建Maven工程,工程里面如果需要添加其它框架,需要在pom.xml文件中添加大量的依赖信息然后个别的框架还需要添加xml配置文件,在配置文件中还需要添加大量的配置信息, 这些操作都需要程序员独立完成, 使用SpringBoot创建工程时如果需要引入其它框架只需要在创建时打钩的方式引入各种框架即可, 大大提高了构建工程的效率
  • 如何创建SpringBoot工程:简单一点的可以点击创建新的项目,选择Spring Initialize,需要先查看Sever URL,可以选择https://start.springboot.io,之后需要修改点有三个,Group:组,选择你的公司或默认的服务器;Artifact:相当于你的工程名字,写完后项目的名字一般会一起修改;Java:需要根据自己的java版本选择,我的是java1.8,选择8,然后点击下一步,之后可以根据你要开发的项目来进行勾选,比如Webde 的项目可以选择Spring Web,之后点击完成Finish。创建完工程时需要看一下Build的Sync是否前面有绿色的对钩,没有的话可以尝试刷新一下Maven后重新查看,或者尝试重新创建工程。
客户端发出请求的几种方式:
  1. 地址栏中输入请求地址后回车发送请求 同步

  2. 通过超链接发送请求 同步

  3. 通过from表单发送请求 同步

    //需要在项目的java包下新建controller包,并建立相应的连接
    <form action="/hello">
        <input type="text" name="info">
        <input type="submit">
    </form>
    
  4. 通过前端框架就发送请求 异步

服务端接受请求的几种方式:
  1. 通过HttpServletRequest对象获取参数,该技术之后基本不使用

    @RequestMapping("/hello")
        @ResponseBody //次注解的作用是通过返回值方式给客户端相应数据
        public String hello(HttpServletRequest request){
            String info = request.getParameter("info");
            return "Yes:"+info;
        }
    
  2. 通过在处理请求的方法参数列表处声明的方式接收参数

        @RequestMapping("/hello")
        @ResponseBody //次注解的作用是通过返回值方式给客户端相应数据
        public String hello(String info){
            return "Yes:"+info;
        }
    
  3. 通过在处理请求的方法参数列表处声明自定义对象的方式接收参数

    //准备一个对象类(user),有姓名、密码和昵称,准备tostring和get、set方法。
    @RestController
    public class UserController {
        @RequestMapping("/reg")
        public String reg(User user){
            System.out.println("user = " + user);
            return "注册成功";
        }
    
    }
    
建立数据库连接:

可以看一下之前的DBCP的帖子,将里面的DBUtils类添加后在pom.xml文件上引入数据库的依赖。

        <!-- 连接MySQL数据库的依赖 -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.15</version>
        </dependency>

        <!-- 数据库连接池 -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.1.21</version>
        </dependency>
尝试将数据存入数据库:
  1. 在项目中添加index首页和注册页面并建立连接:

    <!--首页代码-->
    <body>
    <h1>工程首页</h1>
    <a href="/hello">请求连接</a>
    <a href="reg.html">注册页面</a>
    </body>
    <!--注册页代码-->
    <body>
    <h1>注册页面</h1>
    <form action="/reg">
      <input type="text" name="username" placeholder="姓名">
      <input type="text" name="password" placeholder="密码">
      <input type="text" name="nick" placeholder="昵称">
      <input type="submit" value="注册">
    </form>
    </body>
    
  2. 配置好数据库后在controller中实现相关方法:

    @RestController
    public class UserController {
        @RequestMapping("/reg")
        public String reg(User user){
            System.out.println("user = " + user);
    
            try (Connection conn = DBUtils.getConn()){
                PreparedStatement ps = conn.prepareStatement("insert into user values(null,?,?,?)");
                ps.setString(1, user.getUsername());
                ps.setString(2, user.getPassword());
                ps.setString(3, user.getNick());
                ps.executeUpdate();
            } catch (SQLException throwables) {
                throwables.printStackTrace();
            }
            return "注册成功";
        }
    
    }
    
  3. 在注册页面输入相关信息后点击看是否成功,成功后在数据库查询有数据即为成功。

尝试使用前期的Springboot建立一个商品管理系统(JDBC版本)
  1. 首先准备相关的页面:添加,商品列表,修改和删除暂时使用动态请求,在数据库添加商品表

    <!--工程首页代码-->
    <body>
    <h1>工程首页</h1>
    <a href="/hello">请求连接</a>
    <a href="/reg.html">注册页面</a>
    <a href="/login.html">登录页面</a>
    <h1>商品管理系统</h1>
    <a href="/insert.html">添加商品</a>
    <a href="/select">商品列表</a>
    <a href="/update.html">修改商品</a>
    </body>
    <!--添加页面代码-->
    <body>
    <h1>添加商品页面</h1>
    <form action="/insert">
        <input type="text" name="title" placeholder="商品标题">
        <input type="text" name="num" placeholder="商品库存">
        <input type="text" name="price" placeholder="价格">
        <input type="submit" value="添加商品">
    </form>
    </body>
    <!--修改页面代码-->
    <body>
    <form action="/update">
        <input type="text" name="id" placeholder="修改id">
        <input type="text" name="title" placeholder="修改标题">
        <input type="text" name="num" placeholder="修改库存">
        <input type="text" name="price" placeholder="修改价格">
        <input type="submit" value="点击修改">
    </form>
    </body>
    <!--数据库建立商品表代码
    create table product(id int primary key auto_increment,title varchar(50),num int,price double(10,2))
    注:double(总长度,小数长度)例如上面的就是总长度为10,小数长度为2,写出后为3000.00元
    -->
    
  2. 同样准备相关的controller页面

    @RestController
    public class ProductController {
        @RequestMapping("/insert")
        public String insert(Product product){//添加功能
            System.out.println("product = " + product);
    
            try (Connection conn = DBUtils.getConn()){
                PreparedStatement ps = conn.prepareStatement("insert into product values(null,?,?,?)");
                ps.setString(1,product.getTitle());
                ps.setInt(2,product.getNum());
                ps.setDouble(3,product.getPrice());
                ps.executeUpdate();
            } catch (SQLException throwables) {
                throwables.printStackTrace();
            }
            return "添加完成!<a href='/'>返回首页</a>";
        }
    
        @RequestMapping("/select")
        public String  select(){//查询列表功能
            ArrayList<Product> list = new ArrayList<>();
            try (Connection conn = DBUtils.getConn()){
                PreparedStatement ps = conn.prepareStatement("select * from product");
                ResultSet rs = ps.executeQuery();
                while(rs.next()){//遍历获得的结果对象
                    Product p = new Product();//将对象实例化,用来封装查到的数据
                    p.setId(rs.getInt(1));
                    p.setTitle(rs.getString(2));
                    p.setNum(rs.getInt(3));
                    p.setPrice(rs.getDouble(4));
                    list.add(p);//将对象装进集合中
                }
            } catch (SQLException throwables) {
                throwables.printStackTrace();
            }
            //将集合中的数据封装在表格中进行输出(仅为实验,后续不会这样写)
            String html = "<table border='1'>";
            html+="<tr><th>id</th><th>标题</th><th>库存</th><th>价格</th><th>操作</th></tr>";
            //遍历商品集合
            for (Product p: list) {
                html+="<tr>";
                html+="<td>"+p.getId()+"</td>";
                html+="<td>"+p.getTitle()+"</td>";
                html+="<td>"+p.getNum()+"</td>";
                html+="<td>"+p.getPrice()+"</td>";
                html+="<td><a href='/delete?id="+p.getId()+"'>删除</a></td>";
                html+="</tr>";
            }
            html+="</table>";
            return html;
        }
    
        @RequestMapping("/delete")
        public String delete(int id){//删除功能
            System.out.println("id = " + id);
            try (Connection conn = DBUtils.getConn()){
                PreparedStatement ps = conn.prepareStatement("delete from product where id=?");
                ps.setInt(1,id);
                ps.executeUpdate();
            } catch (SQLException throwables) {
                throwables.printStackTrace();
            }
            return "删除成功!<a href='/select'>返回列表页面</a>";
        }
    
        @RequestMapping("/update")
        public String update(Product product){//修改功能,现在需要输入全部的内容才能修改,之后会有更好版本
            System.out.println("product = " + product);
            try(Connection conn = DBUtils.getConn()) {
                PreparedStatement ps = conn.prepareStatement("update product set title=?,num=?,price=? where id=?");
                ps.setString(1, product.getTitle());
                ps.setInt(2,product.getNum());
                ps.setDouble(3,product.getPrice());
                ps.setInt(4,product.getId());
                ps.executeUpdate();
            } catch (SQLException throwables) {
                throwables.printStackTrace();
            }
            return "修改完成!<a href='/'>返回首页</a>";
        }
    }
    
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
资源包主要包含以下内容: ASP项目源码:每个资源包中都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目中都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包中都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值