首页 > 其他分享 >Servlet入门

Servlet入门

时间:2023-02-28 15:11:20浏览次数:50  
标签:入门 lib request getParameter add 添加 Servlet

资料来源于:B站尚硅谷JavaWeb教程(全新技术栈,全程实战) ,本人才疏学浅,记录笔记以供日后回顾
视频链接

创建Servlet流程与可能遇到的问题

  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.
    我们可以通过标签进行设置欢迎页(在tomcat的web.xml中设置,或者在自己项目的web.xml中设置)
  6. 405问题。当前请求的方法不支持。比如,我们表单method=post , 那么Servlet必须对应doPost。否则报405错误。
  7. 空指针或者是NumberFormatException 。因为有价格和库存。如果价格取不到,结果你想对null进行Integer.parseInt()就会报错。错误的原因大部分是因为 name="price"此处写错了,结果在Servlet端还是使用request.getParameter("price")去获取。
  8. 中以斜杠开头

Servlet流程图

大致代码

步骤1

创建一个add.html文件,页面中包含了一个form表单,当用户提交表单时,将数据通过post的方式发送到add页面

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <form action="add" method="post">
    名称:<input type="text" name="fname"/><br/>
    价格:<input type="text" name="price"/><br/>
    库存:<input type="text" name="fcount"/><br/>
    备注:<input type="text" name="remark"/><br/>
    <input type="submit" value="添加"/>
</form>
</body>
</html>

步骤2

通过url-pattern中的add(以斜杆开头),找到对应servlet-name,再通过servlet-name找到对应的Servlet类。

<?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.ypf.servlets.AddServlet</servlet-class>
    </servlet>
    
    <servlet-mapping>
        <servlet-name>AddServlet</servlet-name>
        <url-pattern>/add</url-pattern>
    </servlet-mapping>
</web-app>

步骤3

该servlet处理类需要继承HttpServlet,由于我们使用的是post请求,因此此处是重写doPost()方法。通过getParameter("名称")就可以获取数据了,参数名称需和html中name名称一致。

/**
 * Description:
 *
 * @author ypf
 * @create 2023-02-28 9:29
 */
public class AddServlet extends HttpServlet {
    @Override
    public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        String fname = request.getParameter("fname");
        String priceStr = request.getParameter("price");
        int price = Integer.parseInt(priceStr);
        String fcountStr = request.getParameter("fcount");
        int fcount = Integer.parseInt(fcountStr);
        String remark = request.getParameter("remark");

    }
}

jdbc相关jar包引入

可创建一个lib文件夹,专门放jdbc相关的jar包。之后右击-添加为库...,点击确定即可。


之后还需要在项目模块下依赖页签下添加依赖,下图已经是添加完成的状态了

如果有错误提示的话,工件页签下也需要作相应修改。可把旧的删掉,新创建一个

标签:入门,lib,request,getParameter,add,添加,Servlet
From: https://www.cnblogs.com/fgcs111/p/17164327.html

相关文章

  • 【web开发基础】PHP快速入门(5)-PHP运算符之算术运算符和字符串运算符详解
    前言PHP开发基础开速入门系列《​【web开发基础】php开发基础快速入门(1)-PHP介绍及开发环境快速安装和基本使用介绍​》《​【web开发基础】php开发基础快速入门(2)......
  • 即时通讯技术文集(第9期):Java NIO和Netty入门系列 [共19篇]
    为了更好地分类阅读52im.net总计1000多篇精编文章,我将在每周三推送新的一期技术文集,本次是第9 期。[-1-] 少啰嗦!一分钟带你读懂Java的NIO和经典IO的区别[链接] htt......
  • android AsyncTask入门
    要使用这个东西,要newAsyncTask.此时相当与启动个新线程.你需要重载doInbackground这个东西相当与run方法。开始执行后台操作.操作完了后onPostExecute这个函数更新......
  • 【spring笔记】Mybaties入门
    1、官方文档https://mybatis.org/mybatis-3/zh/getting-started.html2、搭建一个Mybatis实例2.1首先看配置文件mybatis-config.xml这里面包括获取数据库连接实例的数......
  • (原创)【B4A】一步一步入门05:控件、公有属性、水平锚定、垂直锚定(控件篇01)
    一、前言前面的教程,已经完整讲述了用B4A开发安卓APP从新建项目到编译发布的完整流程。从本篇开始,我们将会从B4A的细节处着手,一步一步掌握B4A。从本篇开始的子系列为“控......
  • open3D快速入门
      Corefeatures核心功能Simpleinstallationviacondaandpip 通过conda和pip简单安装3Ddatastructures  三维数据结构3Ddataprocessingalgorithms ......
  • Golang入门第四天
    面向对象编程匿名字段匿名字段初始化方法值语义与引用语义封装,继承,多态方法值,方法表达式接口接口继承,接口转换空接口通过if实现类型断言通过switch实现类型断......
  • Go语言入门学习
    一.Go语言介绍Go是一个开源的编程语言,它能让构造简单、可靠且高效的软件变得容易。Go是从2007年末由RobertGriesemer,RobPike,KenThompson主持开发,后来还加入了Ian......
  • Ansible入门教程
    1、环境准备1.1、准备主机这里使用3台主机做为演示#IP地址:192.168.10.15【控制机】hostnamectlset-hostnameansible-control#IP地址:192.168.10.14hostnamectl......
  • 虚幻引擎5 学习 入门 2Day
    今日的学习内容:灯光渲染灯光分类:DirectionalLight定向光源  PointLight点光源  SpotLight聚光灯 RectLight矩形灯 SkyLight天灯光照分移动性光照......