Servlet

什么是服务器

  • 服务器就是一台高性能电脑
  • 电脑上安装了提供服务的软件就称为 xxx服务器
  • 举例:
    1. 邮件服务器: 就是在电脑上安装了提供邮件收发服务的软件
    2. ftp服务器: 就是在电脑上安装了提供文件上传下载服务的软件
    3. 数据库服务器: 在电脑上安装了提供数据增删改查服务的软件(MySQL/Oracle…)
    4. web服务器: 就是在电脑上安装了web服务软件(Webserver)

Web服务软件做了那些事儿

  1. 负责建立底层的网络连接
  2. 负责将客户端请求的文件返回给客户端
  3. web服务器又称为web容器, web容器是用来装组件(Servlet),Web服务软件通过解析请求地址找到对应的Servlet作出响应

Servlet

  • Servlet是用于扩展Web服务软件业务功能的组件,每一种业务都对应一个单独的Servlet

如何在Eclipse中关联Tomcat

  1. 下载Tomcat安装文件: 从苍老师文档服务器, 找到常用下载->Java->Tomcat 8.4.45 解压到一个指定的目录(路径中不要有中文,可以在D盘直接创建java文件夹把下载的文件复制过去)
  2. eclipse中window->最后一个->Server->Runtime
    如果里面有内容删除, 点击add->找到8.5(没有8.5的同学从文档服务器下载新的eclipse,下载完后记得要配置maven) ->点击Browser->找到第一步解压的文件夹->Finish
  3. 找到servers面板(如果找不到 window->show View里面找,还是找不到other里面搜),在servers面板中点击超链接添加对应版本的Tomcat, 添加完之后双击修改单选到中间位置(这一步是修改部署工程的路径 作用后面会讲)
  4. 在servers里面Tomcat上右键start启动Tomcat,在控制台输出以下内容后,在浏览器中访问localhost:8080 显示出猫说明搞定
    Server startup in 580 ms

如何删除关联

  1. 在servers面板中删除添加的Tomcat
  2. eclipse中window->最后一个->Server->Runtime 找到添加的Tomcat删除
  3. 把解压的Tomcat安装文件夹删除,重新解压

如何创建一个Web工程

  1. 创建maven工程 把jar改war
  2. 改错: 在最长的文件名上面右键点击最长的一个, 此过程是创建了web.xml配置文件,该配置文件中保存着请求路径和Servlet的对应关系
  3. 让创建的工程和Tomcat关联, 在工程名上右键->Properties->Targeted runtimes 在里面的Tomcat后面打钩 保存关闭即可
  4. 创建Servlet, 包名cn.tedu 类名HelloServlet 删除类里面的注释和代码
  5. 重写service方法 ,删除方法中的内容,控制台输出HelloServlet
  6. 在工程名上面右键Run as->Run on Server
  7. 浏览器中访问http://localhost:8080/servlet_1_1/HelloServlet,显示空白,控制台输出HelloServlet说明OK.

Servlet响应流程

  • 请求由客户端浏览器发出,服务器的Tomcat软件先接收到请求,并且获取到请求中的子地址(/HelloServlet),Tomcat会拿着子地址去web.xml配置文件中找到对应的Servlet完整类名,然后通过反射技术实例化Servlet,然后调用Servlet中的service方法.最终执行到我们所写代码

客户端发出请求的几种方式

  1. 在浏览器的地址栏中写请求路径 回车后发出请求 get
  2. 在页面中通过超链接发出请求 get
  3. 在页面中通过form表单发出请求 get/post

Get和Post的区别

  • GET: 请求参数放在请求地址的后面,请求参数有大小限制 只能传递几k的数据,而且参数在地址栏中可以看到 所以不能传递敏感信息(密码)
    浏览器地址栏发出的请求是get
    超链接发出的请求是get
    form表单默认发出的请求是get
  • Post:请求参数放在请求体里面用户看不到,而且没有大小限制 通常上传文件时或者传递敏感信息时使用POST
    只有form表单设置method="post"时 发出的才是post请求
创建的Servlet需要改名的话,切记把web.xml中的一起改掉不然报错
修改Servlet或页面里面的代码不需要重新运行工程,新增了Servlet后因为web.XML文件修改了 所以需要重新运行工程

发出请求时如何传递参数以及Servlet中如何获取参数

  • get请求获取参数时中文乱码问题
    Tomcat8.0以下版本才会有此问题, 找到Servers工程中的server.xml里面的65行 添加以下URIEncoding="UTF-8"属性
    <Connector URIEncoding=“UTF-8” connectionTimeout=“20000”
  • post请求参数有中文时每次获取参数之前执行以下代码
    request.setCharacterEncoding(“UTF-8”);

常见异常以及处理方式

404:

找不到资源, 此路径没有对应的文件,也没有对应的Servlet, 此时检查请求路径是请求文件还是请求Servlet,

  • 1.如果请求的是文件 第一时间检查路径是否正确(包括请求路径和文件名)还要检查工程中的文件所在位置
  • 2.如果请的是Servlet 第一时间检查路径是否正确(包括请求路径和Servlet名字是否和web.xml中的名字一致)

405:

找到了Servlet但是没有找到Servlet里面对应的方法, 比如:发出的请求是get请求但是Servlet里面没有doGet方法,或者发出的请求是post请求在Servlet里面没有doPost

500:

找到了Servlet也找到了对应doGet或doPost方法,在执行里面java业务代码的时候出错.

  • 唯一解决方案就是详细检查业务代码

练习---------------------------------------------------------------

SayHello步骤:
  1. 在webapp下面创建sayhello.html页面 页面中添加form表单发出get请求,请求地址为SayHelloServlet 表单中有一个文本框和一个提交按钮
  2. 创建SayHelloServlet 留下doGet方法其它全部删除,在方法中获取传递过来的参数,把参数和你好拼接到一起 通过HelloServlet里面的相关代码把拼接好的字符串返回给浏览器
创建新的工程实现SayHello功能
  1. 创建maven工程servlet1_2 把jar改war
  2. 改错: 在最长的文件名上面右键点击最长的一个, 此过程是创建了web.xml配置文件,该配置文件中保存着请求路径和Servlet的对应关系
  3. 让创建的工程和Tomcat关联, 在工程名上右键->Properties->Targeted runtimes 在里面的Tomcat后面打钩 保存关闭即可
  4. 在webapp下面创建sayhello.html页面 页面中添加form表单发出get请求,请求地址为SayHelloServlet 表单中有一个文本框和一个提交按钮
  5. 创建SayHelloServlet 留下doGet方法其它全部删除,在方法中获取传递过来的参数,把参数和你好拼接到一起 通过HelloServlet里面的相关代码把拼接好的字符串返回给浏览器
加法运算练习
  1. 在webapp下创建add.html页面页面中添加form表单发出get请求 提交地址为AddServlet, form表单里面两个文本输入框(name分别为n1和n2)和一个提交按钮
  2. 创建AddServlet留下doGet方法,在方法中获取传递过来的n1和n2 得到的是字符串类型需要转成int类型进行加法运算 把得到的结果返回给浏览器
BMI练习
  • BMI身体质量指数 = 体重(kg)/身高(m)的平方 70/(1.8*1.8)
  • 18.5以下 体重偏轻 18.5-24之间正常体重 24-28之间偏重 大于28肥胖
  • 步骤:
    1. 创建bmi.html页面 页面中添加form表单,提交地址BMIServlet,两个文本输入框(name分别为h和w) 和一个提交按钮
    2. 创建BMIServlet 留下doGet方法获取传递过来的身高体重,转成double类型按照上面的公式进行计算得到bmi的值,判断bmi的值是在哪个范围来决定给页面返回什么数据

Servlet学习DAY_01:服务器概念/Web服务器的作用/ Servlet概念/ 如何关联和解除Tomcat/ 创建一个Web工程 /Servlet响应流程/ Get-Post /常见异常相关推荐

  1. 服务器关闭重启后客户端socket能自动连接吗_用Python 撸一个 Web 服务器

    从一个 Hello World 程序说起 要编写 Web 服务器,需要用到一个 Python 内置库 socket.Socket 是一个比较抽象的概念,中文叫套接字,它代表一个网络连接.两台计算机之间 ...

  2. 一文读懂tomcat组件--一个web服务器的架构演化史

    1. tomcat是谁? 2. tomcat可以做什么? tomcat是一个web容器,可以将web应用部署到tomcat,由它提供web服务,一个web容器中可以部署多个web应用,这些web应用可 ...

  3. 十七、创建一个 WEB 服务器(一)

    1.Node.js 创建的第一个应用 var http=require("http") http.createServer(function (req,res) {res.writ ...

  4. 使用Nodejs创建一个Web服务器应如何操作?以及路由相关知识了解

    文章目录 Nodejs创建一个Web服务器 Node.js创建第一个应用 Web服务器介绍 Nodejs创建一个Web服务器 路由 EJS模块引擎 Get.Post 获取GET传值 获取POST传值 ...

  5. 投票系统web服务器,创建一个Web投票系统

    您的位置:首页 → 精文荟萃 → 软件资讯 → 创建一个Web投票系统创建一个Web投票系统 时间:2004/10/7 19:09:00作者:蓝点 下面zip文件:http://www.content ...

  6. idea的几个好用快捷键、常用配置(包括git)、jdk和javaSE和javaEE、创建一个SE工程、debug、创建一个Web工程、打war包

    几个好用的快捷键(持续更新) Ctrl+Shift+f12 ,相当于myeclipse的ctrl+m 最大化窗口的 alt+shift+↑或↓,将当前行上移或下移 shift+enter ,当前行下一 ...

  7. 如何创建一个Web项目

    文章目录 一.创建Web项目 1. 新建Maven工程 2. 在pom.xml中,添加servlet依赖 3. 创建web.xml文件 4. 通过tomcat配置启动项 5. 在webapp下创建ht ...

  8. idea maven创建java项目_新版本IntelliJ IDEA 构建maven,并用Maven创建一个web项目(图文教程)...

    之前都没试过用maven来管理过项目,但是手动找包导包确实不方便,于是今天用2016版的IDEA进行了maven的初尝试. 打开IDEA,创建新项目: 然后选择Maven,以及选择自己电脑的jdk: ...

  9. Jmeter 创建一个web测试计划

    Jmeter 创建一个web测试计划 by:授客 QQ:1033553122 1.   下载Jmeter 下载地址:http://jmeter.apache.org/download_jmeter.c ...

最新文章

  1. 移动端touchstart、touchmove事件的基本使用
  2. 代码解释n |= n >>> 16
  3. Linux搭建虚拟机,桥接模式下,主机能够Ping通虚拟机,虚拟机ping不通主机
  4. 技术人员为什么应该参加社区活动?
  5. primefaces_轻量级Web应用程序框架:PrimeFaces(JSF)+ Guice + MyBatis(第2部分)
  6. zookeeper 安装和使用
  7. 开始→运行→输入的命令集锦( 菜鸟必读)
  8. AdamOptimizer和随机梯度下降法SGD的区别
  9. 大学四年规划英语计算机专业课,大学四年考证规划你get了吗?
  10. JAVA从文件中取出特定的_从Java中的文本文件读取特定的行
  11. HTML5前端开发之基础篇
  12. 请输入一个年份和月份判断该月份的天数,注:闰年2月29天、平年2月28天。
  13. 【已完美解决】由于找不到MSVCR100.dll,无法继续执行代码。重新安装程序可能会解决此问题。DirectX修复工具下载
  14. vue实现生成二维码与扫描二维码
  15. Unity 异常记录日志功能
  16. DFS分布式文件存储系统
  17. 有4个圆塔,圆心分别为(2,2)……今输入任一点坐标,求该点坐标建筑物高度。
  18. Mysql 数据库实战-建库-建表-查多表
  19. 经典题:用Java打印空心菱形
  20. rospy.init_node(‘talker_node‘, anonymous=True)中anonymous意思

热门文章

  1. GLPI开源资产管理系统
  2. iOS开篇——UI之UIStepper (计步器)
  3. 1874畅通工程续(dijkstra算法)
  4. 函数的重载与 泛型(generic)有什么不同?
  5. DFT-软件篇 from 陈新武
  6. 上线随想之2011-03-25
  7. Laravel 中的异常处理
  8. 图形界面报错“已拒绝X11转移申请”的解决方法
  9. Android Studio androidx 包冲突解决方法
  10. 解决html5 audio iphone,ipd,safari不能自动播放问题