JavaWeb

遇到的问题

1 . 解决setContentType设置无效问题

//这段代码必须在获取response对象之前设置
req.setContentType("text/html;charset=utf-8");

//错误示范
PrintWriter writer = resp.getWriter();
req.setCharacterEncoding("utf-8");
resp.setContentType("text/html;charset=utf-8");

//正确示范
//设置请求和相应编码
req.setCharacterEncoding("utf-8");
resp.setContentType("text/html;charset=utf-8");
PrintWriter writer = resp.getWriter();

一 . socket

IP地址

  • 查看本地IP地址,在终端使用 : ipconfig命令
  • IP地址的表示形式为 : 点分十进制 xxx.xxx.xxx.xxx

       每个十进制数的范围为:0~255 
    
    • IP地址的组成 = 网络地址 +主机地址 eg:192.168.16.69
  • IPV6是用于代替IPV4的下一代IP协议

域名

  • 将IP地址映射成域名
协议后面单独说

端口号

  • 范围 : 0~65535
  • 0~1024已被占用
  • 常见的端口号

    • 公有端口 : 0~1023

      • Http : 80
      • Https : 443
      • FTP : 21
      • Telent : 23
    • 程序注册端口 : 1024~49151

      • Tomcat : 8080
      • Mysql : 306
      • Oracle : 1521
    • 动态 私有 : 49152~65535

      #查看所有端口
      netstat -ano
      #查询具体端口
      netstat -ano|findstr "5900str"
      #查看指定端口进程
      tasklist|findstr "8696"

DNS域名解析

二 . 通信协议

网络通信协议 : 速率 , 传输码率 , 代码结构 , 传输控制......

TCP/IP协议簇

  • TCP : 传输控制协议
  • UDP : 用户数据协议

TCP UDP对比

TCP : 类似打电话

  • 连接稳定
  • 三次握手 四次分手

    最少需要三次才能保证稳定连接
    类似 : 
    A : 你愁啥?
    B : 瞅你咋地?
    A : 直接上手!
    
    A : 我要走了 
    B : 你真的要走了吗?
    B : 你真的真的要走了吗?
    A ; 我走了
  • 客户端 服务端
  • 传输完成就释放连接,效率低

UDP : 类似发短信

  • 不连接也不稳定
  • 没有明确的界限对于客服端还是服务端
  • 随时随地都可以发包
  • DDOS攻击

三 . Web服务器

Tomcat:由Apache组织提供的一种Web服务器,提供对jsp和Servlet的支持。它是一种轻量级的javaWeb容器(服务器),也是当前应用最广的JavaWeb服务器(免费)。

1 . bin

例如启动tomcat 或者停止tomcat --------可执行文件

  • *.bat 运行在windows批处理文件
  • *.sh-----linux环境中运行文件

2 . conf

存放全局配置文件

logging.properties : 编码格式等

server.xml : 修改tomcat启动端口号码等

3 . webapps

存放运行程序 部署war包、jar包、静态资源。

http://127.0.0.1:8080/com/ 默认就是查找tomcat webapps 目录中的index.html

4 . lib

tomcat 需要依赖一些jar包

5 . logs

存放 tomcat一些日志

6 . temp

存放临时文件

7 . work

四 . servlet

springmvc----底层基于Servlet

Servlet定义:Servlet是基于Java技术的Web组件,由容器管理并产生动态的内容。Servlet与客户端通过Servlet容器实现的请求/响应模型进行交互。

1 . 搭建环境

  • 1.在我们的项目中创建libs目录存放第三方的jar包
  • 2.项目中导入servlet-api.jartomcat --> libs 目录中
  • 3.创建servlet包 , 并创建IndexServlet 类 , 继承 Servlet 接口并重写方法
  • 5.IndexServlet 类上加上@WebServlet("/com")注解定义 URL访问的路径

    package com.servlet;
    
    import javax.servlet.*;
    import javax.servlet.annotation.WebServlet;
    import java.io.IOException;
    import java.io.PrintWriter;
    
    @WebServlet("/com")
    public class indexServlet implements Servlet {
        @Override
        public void init(ServletConfig servletConfig) throws ServletException {
    
        }
    
        @Override
        public ServletConfig getServletConfig() {
            return null;
        }
    
        @Override
        public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
            System.out.println("成功");
            String userName = servletRequest.getParameter("userName");
            PrintWriter writer = servletResponse.getWriter();
            if("aat".equals(userName)) {
                writer.println("success");
            }else {
                writer.println("failure");
            }
            writer.close();
        }
    
        @Override
        public String getServletInfo() {
            return null;
        }
    
        @Override
        public void destroy() {
    
        }
    }
    

2 . servlet生命周期

1 . init : 初始化方法

​ 当我们的servlet类被创建时,执行servlet类初始化方法init 代码初始化该方法只会执行一次。

2 . service : 执行每次请求

​ 每次客户端发送请求达到服务器端 都会执行到 servlet类service方法

3 . destroy : 当我们tomcat容器停止时卸载servlet

​ 存放销毁相关代码

4 . getServletInfo()

返回一个String类型的字符串,其中包括了关于Servlet的信息,例如,作者、版本和版权。该方法返回的应该是纯文本字符串,而不是任何类型的标记。

5 . getServletConfig()

该方法返回容器调用init()方法时传递给Servlet对象的ServletConfig对象,ServletConfig对象包含了Servlet的初始化参数。

@WebServlet(urlPatterns = "/mayiktmeite",loadOnStartup = -1)

@WebServlet(urlPatterns = "/servletConfig", loadOnStartup = -1, initParams = {
    @WebInitParam(name = "test", value = "Atanycosts")
})

urlPatterns : 定义请求路径

loadOnStartup 的值为负数 : 第一次被访问时创建Servlet对象

loadOnStartup 的值为正数或零 : 服务器启动时创建Servlet对象 数字越小优先级越高

3 . Servlet+JDBC实现登录注册

导入相关jar包

在导入 servlet-api.jar 包和配置好 Tomcat 的基础上

导入 commons-lang3-3.4.jarmysql-connector-java-8.0.13.jar

文件创建

还是在原来的 com 包下

config.properties

文件位置 src --> config.properties

driverClass=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://127.0.0.1:3306/atanycosts?serverTimezone=UTC&useSSL=false
user=root
password=root

工具类

package com.utils;

import java.io.InputStream;
import java.sql.*;
import java.util.Properties;

public class UserUtils {
    private UserUtils() {
    }

    /**
     * 2.定义工具类 需要 声明 变量
     */
    private static String driverClass;
    private static String url;
    private static String user;
    private static String password;

    /**
     *3.使用静态代码快 来给我们声明好 jdbc变量赋值(读取config.properties)
     */
    static {
        try {
            // 1.读取config.properties  IO 路径 相对路径
            InputStream resourceAsStream = UserUtils.class.getClassLoader().getResourceAsStream("config.properties");
            // 2.赋值给我们声明好的变量
            Properties properties = new Properties();
            properties.load(resourceAsStream);
            driverClass = properties.getProperty("driverClass");
            url = properties.getProperty("url");
            user = properties.getProperty("user");
            password = properties.getProperty("password");
            // 3.注册驱动类
            Class.forName(driverClass);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    /**
     * 4.封装连接方法
     */
    public static Connection getConnection() throws SQLException {
        Connection connection = DriverManager.getConnection(url, user, password);
        return connection;
    }

    /**
     * 5.封装释放连接方法 (重载)
     */
    public static void closeConnection(ResultSet resultSet, Statement statement, Connection connection) {
        // 1.查询 释放连接 resultSet  statement connection
        try {
            if (resultSet != null)
                resultSet.close();
            if (statement != null)
                statement.close();
            if (connection != null)
                connection.close();
        } catch (Exception e) {
            e.printStackTrace();
        }

    }

    /**
     * 增删改---释放jdbc资源
     * @param statement
     * @param connection
     */
    public static void closeConnection(Statement statement, Connection connection) {
        // 1.查询 释放连接 resultSet  statement connection
        closeConnection(null, statement, connection);
    }

    /**
     * 开启事务
     * @param connection
     * @throws SQLException
     */
    public static void beginTransaction(Connection connection) throws SQLException {
        connection.setAutoCommit(false);
    }

    /**
     * 提交事务
     * @param connection
     * @throws SQLException
     */
    public static void commitTransaction(Connection connection) throws SQLException {
        connection.commit();
    }

    /**
     * 回滚事务
     * @param connection
     */
    public static void rollBackTransaction(Connection connection) {
        if (connection != null) {
            try {
                connection.rollback();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }

    /**
     * 关闭事务
     * @param connection
     */
    public static void endTransaction(Connection connection) {
        if (connection != null) {
            try {
                connection.setAutoCommit(true);
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }

}

html文件

创建 login.htmlregister.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>登录</title>
</head>
<body>
<h1>用户登录</h1>
<form action="http://localhost:8080/orderTomcat_war_exploded/login" method="post">
    <!--name=mayikt&age=12 -->
    <span>名称:</span> <input type="text" name="userName"> <br>
    <span>密&nbsp;&nbsp;&nbsp;码:</span> <input type="password" name="userPwd" value=""><br>
    <input type="submit">
</form>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>注册</title>
</head>
<body>
<h1>用户注册</h1>
<form action="http://localhost:8080/orderTomcat_war_exploded/register" method="post">
    <!--name=mayikt&age=12 -->
    <span>用户名称:</span> <input type="text" name="userName"> <br>
    <span>密&nbsp;&nbsp;&nbsp;&nbsp;码:</span> <input type="password" name="userPwd" value=""><br>
    <input type="submit">
</form>
</body>
</html>

五 . JSP?

六 . JSP+Servlet+JDBC开发课程系统

七 . cookie

八 . 过滤器

九 . Ajax

最后修改:2022 年 11 月 30 日
如果觉得我的文章对你有用,请随意赞赏