前端 后端 数据库 连接起来

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

  1. 负责建立底层的网络连接

  2. 负责将客户端请求的文件返回给客户端

  3. 负责根据客户端请求的路径找到对应的Servlet 并进行响应

如何创建Web工程

  1. 创建maven工程 选择通过 maven-archetype-webapp骨架创建工程

  2. 配置Tomcat 点击绿色扳手旁边Add Config.... 点击灯泡 删除 application Context

  3. 给工程添加java和resources文件夹 并且在工程设置页面中的facets里面打钩 ,在工程设置页面的models->dependencies添加Tomcat相关jar包

  4. 创建Servlet 处理拦截路径 在doGet方法中写返回数据的代码

Servlet响应流程

  • 用户在浏览器中输入http://localhost:8080/hello请求地址 当发出请求时,该请求会首先被Tomcat拦截, 然后根据请求的路径中的字地址找到对应的Servlet,两种查找方式:1. 通过web.xml配置文件 2. 通过注解方式(servlet3.0以上版本推荐使用的方式), 找到对应的Servlet后Tomcat会通过反射技术将Servlet实例化,并且调用对象中的service方法, 在service方法内部判断请求方式,如果请求方式是get则掉doGet方法, 如果请求方式为post 则调用doPost方法

请求方式GET和POST

  1. get请求: 请求参数放在请求地址的后面(不能传递敏感信息), 请求参数的大小有限制(只能传递4k以内数据)

    • 浏览器地址栏中发出的请求

    • 通过html页面中的超链接

    • 通过form表单 默认提交方式(method=get)

  2. post请求: 请求参数放在请求体内(由于不可见所以安全性较高), 请求参数无大小限制(一般用于文件上传)

    • 通过form表单 method=post

SayHello练习

  1. 在webapp下面创建sayhello.html页面 页面中准备form表单 提交地址为sayhello, 表单中一个文本框

  2. 创建Servlet名字为ServletSayHello, 处理路径为 /sayhello 在doGet方法中获取传递过来的参数 , 在接收到的参数后面拼上"你好" 返回给浏览器

乘法练习

  1. 在webapp下面创建mul.html页面 页面中准备form表单 提交地址为mul 表单里面两个文本输入框 分别获取用户输入的两个数字, 再加一个提交按钮

  2. 创建Servlet 名为 ServletMul 处理路径为 /mul , 在doGet方法中或传递过来的两个参数,获取到的参数为字符串 需要转成int 把相乘之后的结果返回给浏览器

AI练习

  1. 在webapp下面创建ai.html页面 页面中准备form表单 提交地址为ai ,表单里面1个文本输入框 获取用户输入的信息, 再加一个提交按钮

  2. 创建ServletAI 处理路径 /ai 在doGet方法中获取传递过来的信息, 对信息内容进行替换 把替换完的内容 返回给浏览器.

注册功能步骤:

  1. 创建maven工程 选择通过 maven-archetype-webapp骨架创建工程

  2. 配置Tomcat 点击绿色扳手旁边Add Config.... 点击灯泡 删除 application Context

  3. 给工程添加java和resources文件夹 并且在工程设置页面中的facets里面打钩 ,在工程设置页面的models->dependencies添加Tomcat相关jar包

  4. 在webapp下面创建注册页面 reg.html 在页面中准备form表单 提交地址为reg 请求方式改成post , 两个文本输入框 和 一个提交按钮

  5. 创建ServletReg, 拦截路径为 /reg 在doPost里面 先设置字符集 获取传递过来的用户名和密码 在控制台输出

  6. 把jdbc02工程中pom.xml里面用到的MySQL坐标 和数据库连接池坐标 复制到新工程的pom.xml里面

  7. 把jdbc02工程中的DBUtils复制到新工程的cn.tedu包下面

  8. 把jdbc02工程中的jdbc.properties配置文件复制到新工程的相同位置

  9. 在ServletReg的doPost方法里面 把获取到的用户名和密码通过JDBC代码保存到数据库里面

 <!-- 连接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>


import com.alibaba.druid.pool.DruidDataSource;

import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.Properties;

public class DBUtils {
    private static  DruidDataSource ds;
    static {
        //通过属性对象读取配置文件数据 替换掉下面写死的内容
        //创建属性对象
        Properties p=new Properties();
        //获取文件输入流
        InputStream ips=DBUtils.class.getClassLoader().getResourceAsStream("jdbc.properties");
        //让文件和属性对象关联 异常抛出
        try {
            p.load(ips);
        } catch (IOException e) {
            e.printStackTrace();
        }
        //从属性对象中获取数据 只能获取字符串类型
        String username=p.getProperty("db.username");
        String password=p.getProperty("db.password");
        String driver=p.getProperty("db.driver");
        String url=p.getProperty("db.url");

        //创建数据库连接池
        ds=new DruidDataSource();
        //设置数据库连接信息
        ds.setDriverClassName(driver);
        ds.setUrl(url);
        ds.setUsername(username);
        ds.setPassword(password);
        //获取初始数量和最大连接数量
        String initSize=p.getProperty("db.initialSize");
        String maxSize=p.getProperty("db.maxActive");

        ds.setInitialSize(Integer.parseInt(initSize));//设置初始连接数量
        ds.setMaxActive(Integer.parseInt(maxSize));//设置最大连接数量

    }
    public static Connection getConn() throws Exception {
        Connection conn=ds.getConnection();//获取连接 异常抛出
        System.out.println(conn);
        return conn;
    }

}
db.driver=com.mysql.cj.jdbc.Driver
db.url=jdbc:mysql://localhost:3306/(你自己的数据库名)?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&rewriteBatchedStatements=true
db.username=root
db.password=root
db.maxActive=10
db.initialSize=2
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<form action="reg" method="post">
<input type="text" name="username">
<input type="text" name="password">
<input type="submit" value="注册">
</form>
</body>
</html>


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.io.PrintWriter;
import java.sql.Connection;
import java.sql.PreparedStatement;

@WebServlet(name = "ServletReg",urlPatterns = "/reg")
public class ServletReg extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
                request.setCharacterEncoding("utf-8");
                String username=request.getParameter("username");
                String password=request.getParameter("password");
        System.out.println(username+":"+password);
        try ( Connection conn=DBUtils.getConn()){
           String sql="insert into user values(null,?,?)";
           PreparedStatement ps=conn.prepareStatement(sql);
           ps.setString(1,username);
           ps.setString(2,password);
           ps.executeUpdate();
           response.setContentType("text/html;charset=utf-8");
          PrintWriter pw=response.getWriter();
          pw.print("注册完成!");
          pw.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
   /*         request.setCharacterEncoding("utf-8");
            String username=request.getParameter("username");
            String password=request.getParameter("password");
            System.out.println(username+":"+password);
        try ( Connection conn=DBUtils.getConn()){
            String sql="insert into user values(null,?,?)";
            PreparedStatement ps=conn.prepareStatement(sql);
            ps.setString(1,username);
            ps.setString(2,password);
            ps.executeUpdate();
            response.setContentType("text/html;charset=utf-8");
            PrintWriter pw=response.getWriter();
            pw.print("注册完成");
            pw.close();

        } catch (Exception e) {
            e.printStackTrace();
        }
*/
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值