【javaweb学习笔记】tomcat和servlet

代码重工

CS与BS区别

CS: 客户端服务器架构模式
优点:充分利用客户端机器资源,减轻服务器的负荷。
(一部分安全要求不高的计算任务存储任务放在客户端执行,不需要把所有的计算和存储都在服务器端执行,从而能够减轻服务器的压力,也能够减轻网络负荷)
缺点:需要安装;升级维护成本较高;

BS:浏览器服务器架构模式

优点:不需要安装;维护成本较低;

缺点:所有的计算和存储任务都是放在服务器端的,服务器的负荷较重;在服务端计算完成之后把结果再传输给客户端,因此客户端和服务器端会进行非常频繁的数据通信,从而网络负荷较重;

2. Tomcat

WebContainer容器,免费,性能不差,体积小

2.1 tomcat的安装和配置

1)解压:不要有中文不要有空格

2)目录结构说明
bin可执行文件目录
conf配置文件目录
lib 存放lib的目录
logs日志文件目录
webapps 项目部署的目录
work工作目录
temp 临时目录

3)配置环境变量,让tomcat能够运行因为tomcat也是用java和C来写的,因此需要JRE,所以需要配置JAVA_HOME

4)启动tomcat,然后访问主页

2.2 新建项目并在web中部署

在webapp下新建文件夹 baidu,在baidu下新建文件夹WEB-INF,然后拷贝html在该文件夹下
通过http://localhost:8080/baidu/demo09.html访问
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

2.3 在idea中新建项目

新建java项目
添加框架支持,选择web项目
删掉jsp文件
在这里插入图片描述
部署到tomcat上
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

尝试访问
在这里插入图片描述

在这里插入图片描述

3. servlet-begin

在这里插入图片描述

3.1 获取参数

3.1.1 add和AddServlet对应

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">
    <servlet>
        <servlet-name>AddServlet</servlet-name>
        <servlet-class>com.atguigu.servlets.AddServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>AddServlet</servlet-name>
        <url-pattern>/add</url-pattern>
    </servlet-mapping>
    <!--
    1. 用户发请求, action = add
    2. 项目中, web.xml 中找到 url-pattern = /add -> 第12行
    3. 找第11行的servlet-name = AddServlet
    4. 找到servlet-mapping中servlet-name一致的servlet,找到第七行
    5. 找到第8行的servlet-class -》 com.atguigu.servlets.AddServlet
    6. 用户发送的是post请求(method = post), 因此 tomcat会执行Addservlet中的dapost方法
    -->
</web-app>

3.1.2 写dopost方法

在这里插入图片描述

review

连接

  1. 新建项目 - 新建模块
  2. 在模块中添加web
  3. 创建artifact - 部署包
  4. lib - artifact
    先有artifact,后来才添加的mysql.jar。此时,这个jar包并没有添加到部署包中
    那么在projectSettings中有一个Problems中会有提示的,我们点击fix选择add to…
    另外,我们也可以直接把lib文件夹直接新建在WEB-INF下。
    这样不好的地方是这个lib只能是当前这个moudle独享。如果有第二个moudle我们需要再次重复的新建lib。
  5. 在部署的时候,修改application Context。然后再回到server选项卡,检查URL的值。
    URL的值指的是tomcat启动完成后自动打开你指定的浏览器,然后默认访问的网址。
    启动后,报错404.404意味着找不到指定的资源。
    如果我们的网址是:http://localhost:8080/pro01/ , 那么表明我们访问的是index.html.
    我们可以通过<welcome-file-list>标签进行设置欢迎页(在tomcat的web.xml中设置,或者在自己项目的web.xml中设置)
  6. 405问题。当前请求的方法不支持。比如,我们表单method=post , 那么Servlet必须对应doPost。否则报405错误。
  7. 空指针或者是NumberFormatException 。因为有价格和库存。如果价格取不到,结果你想对null进行Integer.parseInt()就会报错。错误的原因大部分是因为 name="price"此处写错了,结果在Servlet端还是使用request.getParameter(“price”)去获取。
  8. <url-pattern>中以斜杠开头

自己梳理这个过程

先写了一个页面,当点击提交按钮的时候,就会向`add``组件发一个请求,同时把表单里面的数据带过去。
在这里插入图片描述
add组件对应的操作是什么,是通过web.xml配置的,可以找到对应的类。
执行对应的类的dopost方法,
在这里插入图片描述

在这里插入图片描述

报错

1. 通过前端页面向数据库添加数据时,报了500错误

服务类内部错误
在这里插入图片描述
命令行报出

java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
	at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1333)
	at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1167)
	at java.lang.Class.forName0(Native Method)
	at java.lang.Class.forName(Class.java:264)
	at com.atguigu.fruit.dao.base.BaseDAO.getConn(BaseDAO.java:43)
	at com.atguigu.fruit.dao.base.BaseDAO.executeUpdate(BaseDAO.java:82)
	at com.atguigu.fruit.dao.impl.FruitDAOImpl.addFruit(FruitDAOImpl.java:18)
	at com.atguigu.servlets.AddServlet.doPost(
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值