JavaWeb-day01-TomCat


JavaWeb

什么是服务器

能对外提供服务的电脑就是服务器

网络通信的要素

  1. 网线
  2. IP:每台电脑在网络上的地址
  3. 端口:计算机数据的进出口
  4. 协议:传输中的数据包的格式

对外提供服务器所需要的东西

  1. 资源(任何文件)
  2. 开启端口
  3. 监听程序

JavaWeb资源的分类

  • 静态资源:无论访问多少次,内容不变
  • 动态资源:每次访问,结果都可能不一样

JavaWeb的文件目录说明

开发web应用时,不同类型的文件有严格的存放规则,否则不仅可能会使web应用无法访问,还会导致web服务器启动报错
在这里插入图片描述

Tomcat

上面提到对外提供服务器中需要的第一个很简单,主要是后面两个,而有一个软件可以帮忙提供:Tomcat

什么是Tomcat

tomcat是一个轻量级的服务器软件,可以用于帮助我们开启端口和监听程序。

Tomcat的安装和使用

  • 安装
    通过上面的链接或者这个下载后解压即可,不要放到中文目录或频繁移动
  • 卸载
    找到文件夹删除即可

Tomcat目录信息

  1. bin:存放可执行文件(重点)
  2. conf:配置文件(重点)
  3. lib:第3方依赖
  4. logs:日志(重点)
  5. temp:用来临时文件
  6. webapps:存放应用程序(重点)
  7. work:工作目录,程序运行时一些文件放在这个目录

如何启动Tomcat

  1. 在文件夹下的bin目录中有一个shutup.bat文件,即为开始,shutdown即为关闭(在不选中任何东西时按Ctrl+C也可退出)
    不要点下面的exe
    不要点下面的exe
    不要点下面的exe
    在这里插入图片描述
  2. 点击开始后当出现下面划白线的文字时即为创建完成,红框处是访问的端口号
    在这里插入图片描述
    如果需要测试是否连接成功可以尝试打开浏览器,在地址栏输入测试
    注意地址栏
    测试自己的http://localhost:端口号
    在这里插入图片描述

测试别人的http://别人的ip地址:端口号
在这里插入图片描述

当然现在大多数都是WiFi联网,因此同一个WiF或局域网内的需要互相访问需要输入内网的ip而不是公网的ip
如果是内网外的访问内网里面的网站,则需要使用到内网穿透,这边推荐cpolar,具体教程请看这里

启动时可以遇到的问题

点击开启后窗口一闪而过

以管理员身份运行的换成直接打开试试或者是下面这种情况
原因:没有正确配置JAVA_HOME环境变量
解决方法:正确配置JAVA_HOME环境变量,若确定环境变量没有问题则尝试在系统变量和用户变量中都添加JAVA_HOME环境变量

端口号被占用

图例:
在这里插入图片描述

  1. 暴力解决:找到占用的端口号,并且找到对应的进程,杀死该进程

    1. 使用命令netstat –ano|findstr [指定端口号]找到占用端口的进程

    2. 打开任务管理器->查看->选择列->然后勾选PID选项,回到任务管理器上可以查看到对应的pid,然后结束进程

  2. 温柔解决:修改自身的端口号

    1. 打开conf/server.xml 配置文件
    2. 搜索8080
    3. 找到这一段并修改port
      在这里插入图片描述
      将8080改掉即可

项目部署

既然开启关闭和可能会出现的问题都解决了,剩下的就是将我们要上传的资源导入到Tomcat中,以便别人使用

  1. 打开Tomcat目录下的webapps文件夹。并创建一个用于存放自己文件的文件夹
    在这里插入图片描述
  2. 在这创建的文件夹中存放需要上传的文件
    在这里插入图片描述
  3. 再次打开浏览器,输入访问地址/文件夹名/文件名即可访问
    在这里插入图片描述

在IDEA中使用Tomcat

由于Tomcat无法运行java代码,在webapps里面创建java项目只会输出源码,所以我们需要在IDEA中连接Tomcat并使用

我这里使用的IDEA版本是2021.3.3,因此创建方式可能不同版本不适用,仅供参考

  1. 新建项目并选择Java项目
  2. 一直下一步到命名界面,更改名字后点击完成

在这里插入图片描述

  1. 右键项目文件选择Add Framework Support
    在这里插入图片描述

  2. 勾选Web Application后确定
    在这里插入图片描述

  3. 添加完成后选择右上角的Add Configuration
    在这里插入图片描述

  4. 点击右上角加号,并选择Tomcat中的local
    在这里插入图片描述

  5. 切换到Deployment选项卡下,点击+号并选择Artifact
    在这里插入图片描述
    8.此处的文字为需要访问此项目所输入的地址,建议为空在这里插入图片描述

  6. 点击OK后即创建成功

用IDEA在Tomcat中部署Java项目

既然已经成功将Tomcat加到IDEA中了,那么怎么样才能将Java代码执行的结果输出到页面上呢?为此我们需要使用Servlet

Servlet

什么是Servlet

Servlet是运行在web上的一种应用程序,用来定义java类被浏览器访问时的规则

如何编写一个Servlet

  1. 编写一个普通的Java类
  2. 继承HttpServlet
  3. 重写service方法
  4. 配置@WebServlet注解,用于配置该Servlet的访问地址

案例:

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;

//访问这个java类的地址
@WebServlet("/test")
//继承HttpServlet
public class Main extends HttpServlet {

    @Override//重写service方法
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    	System.out.println("啊啊啊");
        resp.getWriter().write("hello world");
    }
}

运行结果:

在这里插入图片描述

Servlet接收网页发送过来的数据

可以看到hello world上面的啊啊啊并没有输出,原因是上面使用的是java内部的控制台输出,运行时只会在IDEA内才能看到,Scanner同理,那么如何接收用户通过网页传输的数据内
我们可以看到在重写service方法时里面有两个参数,一个为HttpServletRequest(请求),另一个为HttpServletResponse(响应)

  • HttpServletRequest:获取请求消息数据,即获取传输过来的数据
  • HttpServletResponse:设置响应消息,即向用户返回的数据

通过这两个我们即可接收并根据用户的信息来返回了

具体案例:根据用户所输的账号密码来判断能否登录,数据源于数据库
html代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>登录界面</title>
</head>
<body>
	<!--action:值返传到哪个页面,method:将表单的值传回时的类型-->
    <form action="login" method="post">
    	//name:获取值时使用
        账号:<input name="name"/><br/>
        密码:<input name="pwd"/><br/>
        <button>登录</button>
    </form>
</body>
</html>

method中的参数一般为post或者get,详细请看这里
java代码:

import com.blb.utils.JdbcTemplateUtils;
import org.springframework.jdbc.core.JdbcTemplate;

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("/login")
public class loginServlet extends HttpServlet {
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //获取网页表单传过来的对象
        String name=req.getParameter("name");
        String pwd=req.getParameter("pwd");

        //判断用户名是否存在
        JdbcTemplate jdbcTemplate = JdbcTemplateUtils.getJdbcTemplate();
        String password = jdbcTemplate.queryForObject("select userPassword from user where userName=?", String.class, name);
        if(password==null){
            //响应
            resp.getWriter().write("用户名不存在");
            return;
        }
        if(!pwd.equals(password)){
            resp.getWriter().write("密码错误");
            return;
        }
        resp.getWriter().write("登录成功");
    }
}

html运行界面:
在这里插入图片描述
登录运行结果
在这里插入图片描述
可以看到全都是问号,原因是字符编码不统一

乱码问题

1. html页面乱码

html本身乱码
在这里插入图片描述
解决方法:在html的<head>中添加<meta charset="UTF-8">

2. request乱码

html传入Java时乱码
在这里插入图片描述
解决方法:在方法最前面添加req.setCharacterEncoding("UTF8");
必须在request.getParameter(String key)获取request中的数据之前设置字符集不然还是乱码,所以最好写在方法最前面

3. 文件乱码

文件本身乱码
在这里插入图片描述
解决办法:将字符编码更改为UTF-8

4. jdbc乱码

数据传入数据库时乱码
解决方法:与数据库连接的URL后添加?useUnicode=true&characterEncoding=utf-8

5. 数据库乱码

数据库本身乱码

解决方法:更改数据库的编码格式更改为UTF8

6. 数据库表乱码

数据库表内数据乱码
在这里插入图片描述
解决方法:修改数据库的排序规则为utf8mb4_general_ci

7. tomcat日志乱码

在这里插入图片描述
解决方法:打开conf/logging.properties,将其中的UTF-8全部替换为GBK

8. response乱码

从Java转回web时乱码
在这里插入图片描述
解决方法:解决方法:在方法最前面添加下面两个
req.setCharacterEncoding("UTF8");:设置服务器端的编码
resp.setContentType("text/html;charset=UTF-8");:设置客户端所相应的类型和字符编码

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值