分享

Servlet(1)

 夜猫速读 2022-05-05 发布于湖北

Servlet

  • 学习的主要内容就是如何接收客户端发出的请求,以及如何对请求作出响应.

什么是服务器

  • 服务器就是一台高性能的电脑,在电脑上安装了xxx服务的软件,就称为xxx服务器

  • 常见服务器:

    • 邮件服务器: 在电脑上安装了邮件收发服务的软件

    • ftp服务器: 在电脑上安装了文件上传下载服务的软件

    • 数据库服务器: 在电脑上安装了DBMS(MySQL,Oracle.....)

    • web服务器: 在电脑上安装了webServer

  • WebServer做了那些事儿

    • 负责建立底层的网络连接

    • 负责将客户端请求的文件找到,并且返回给客户端

    • 负责根据客户端请求的路径找到对应的Servlet并执行响应

  • 什么是Servlet

  • web服务软件没有业务功能, Servlet是用于扩展web服务软件 业务功能的组件,每一种业务都需要对应一个Servlet,一个网站是由n个业务组成

创建web工程

  1. 创建maven工程 选择 webapp骨架(模板)

  2. 在工程的main文件夹下面 创建java和resources文件夹

  3. 在工程设置页面 facets->web->  打两个钩  

  4. 配置Tomcat, 需要先从苍老师文档服务器下载tomcat 解压保存到某个盘的java文件夹下面,  然后参考文档配置Tomcat

  5. 添加Tomcat相关jar包

  6. 点击播放按钮 运行 显示 helloworld    

已经成功的同学 关闭工程  从头再操作一遍  

简化步骤:

  1. 创建Maven工程 选择webapp骨架

  2. 配置Tomcat , 选Tomcat猫 , 点灯泡 ,  删路径  

  3. 添加java和resources文件夹

  4. 工程设置页面: 打钩 ,  添加tomcat相关jar包

  5. 点击播放键运行

  6. 创建HelloServlet

解决Tomcat控制台提示乱码问题

找到Tomcat安装包目录 里面的conf文件夹中的logging.properties 找到最后一个UTF-8改成GBK即可

java.util.logging.ConsoleHandler.encoding = GBK

Servlet响应流程

用户在客户端浏览器中向http://localhost:8080/hello这个路径发出请求,请求先被Tomcat拦截, Tomcat会取出请求路径中的子地址/hello ,拿着字地址找到对应的HelloServlet(Servlet3.0之前版本是通过web.xml配置文件找到对应的Servlet, 之后版本通过注解的方式找到Servlet),找到Servlet后可以得到Servlet的完整类名,然后通过反射的方式实例化HelloServlet,然后会调用里面的service方法, 方法里面会判断请求方式,如果请求方式是get则调用doGet方法,如果请求方式为post则调用doPost方法.

客户端浏览器中发出请求的几种方式

  1. 在浏览器地址栏中输入请求路径 直接发出请求    get

  2. 在html页面中通过超链接发出请求     get

  3. 通过form表单发出请求      get/post

请求方式Get和Post

  1. GET请求:   请求参数放在请求地址的后面(由于提交的参数可见,所以不推荐传递敏感信息),请求参数大小受限 只能传递4k以内的数据

    • 浏览器地址栏发出get请求

    • 超链接发出get请求

    • form表单默认发出的是get请求,或者method="get" 也是发出get请求

  2. POST请求: 请求参数放在请求体里面(用户看不见 所以安全性较高),请求参数大小无限制(一般用于传递敏感信息或上传文件)

    常见错误:

    SayHello练习

    BMI身体指数练习

    注册步骤

    准备工作:

    晚课任务: 把注册功能至少写5遍以上

    1. 把jdbc03工程中的两个依赖复制到本工程的pom.xml中  刷新maven
    2. 把DBUtils工具类复制到cn.tedu包下面
    3. 把jdbc.properties配置文件复制到resources目录下
    • 实现步骤:

    • 添加数据库相关文件

    • bmi = 体重(公斤)/(身高*身高(米))

    • 对照表   bmi<18.5偏瘦   18.5-24正常     24-28 偏胖    大于28是肥胖

    • form表单 method="post"

    1. 创建reg.html页面,页面中添加form表单提交地址为reg,请求方式post,表单中添加一个文本输入框和一个密码框再加一个提交按钮

    2. 创建RegServlet,处理路径为/reg, 在doPost里面设置字符集,获取传递过来的用户名和密码 , 并在控制台输出, 通过JDBC代码把接收到的用户名和密码保存到user表中 给客户端返回注册成功!

    3. 创建Maven工程 选择webapp骨架

    4. 配置Tomcat , 选Tomcat猫 , 点灯泡 ,  删路径  

    5. 添加java和resources文件夹

    6. 工程设置页面: 打钩 ,  添加tomcat相关jar包

    7. 点击播放键运行

    8. 把jdbc03工程中的两个依赖复制到本工程的pom.xml中  刷新maven

    9. 把DBUtils工具类复制到cn.tedu包下面

    10. 把jdbc.properties配置文件复制到resources目录下

    11. 创建reg.html页面,页面中添加form表单提交地址为reg,请求方式post,表单中添加一个文本输入框和一个密码框再加一个提交按钮

    12. 创建RegServlet,处理路径为/reg, 在doPost里面设置字符集,获取传递过来的用户名和密码 , 并在控制台输出

    13. 在webapp下面创建bmi.html页面, 页面中添加form表单,提交地址为bmi,表单中有两个文本输入框分别输入身高和体重 最后再加一个提交按钮

    14. 创建BMIServlet,处理路径为/bmi  在doGet方法中获取传递过来的参数(得到的参数是字符串类型需要将字符串类型转成float类),通过上面的公式计算出bmi,  通过上面对照表的数据 得到给客户端返回的不同的信息,最后把得到的信息返回给客户端

    15. 创建sayhello.html页面 ,页面中准备一个form表单 提交地址为 sayhello,  表单中一个文本框和一个提交按钮

    16. 创建SayHelloServlet, 处理路径为/sayhello,  在doGet方法中获取传递过来的参数, 并且把参数返回给浏览器,在参数前面加上"你好"两个字

    17. 如果创建完Servlet 代码中显示报错,一般是因为没有将Tomcat相关jar包添加到工程中

    18. 端口号被占用:  1099 is already  in use  ,  一般是因为有正在运行的工程,把其它工程关掉再运行即可, 如果没有其它运行的工程,找到Tomcat的安装包路径: 找到bin文件夹下shutdown.bat  双击即可 ,  如果做了这步还没解决,重启电脑

    19. 页面中显示???? 或者提示下载文件   ,都是因为设置响应类型出错

    20. 启动子级时出错,  出错原因是因为Servlet里面urlParttens处理的路径没有写/ 或 写了重复路径

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多