Servlet使用_ 1 数据库相关的操作,使用封装的工具类 2 编写四个servlet,使用注解指定相关的

(2)引入依赖

(3)创建目录

(4)编写servlet代码

(5)打包程序

(6)部署

(7)运行

补充

部署方式

(1)安装smart插件

(2)配置Smart Tomcat插件

访问出错的情况

404

405

500

Servlet运行原理

Servlet相关API

【1】HttpServlet

【2】HttpServletRequest

【3】HttpServletResponse

上传文件

HttpServletRequest类方法

Part类的常用api

请求和响应(总结)

服务器获取数据的格式

服务端返回数据的格式

序列化和反序列化

实现页面跳转

Cookie和Session

Cookie

会话管理(Cookie+Session)

Servlet中使用Session会话管理

HttpServletRequest类中的方法

HttpSession类中的方法


什么是servlet

Java官方规定的web开发的api(规范)。

网络编程对于客户端和服务端:

两端使用支持网络编程的语言,就能实现网络编程(网络通信)

但是应用层协议,还是需要应用程序自己来进行封装和分用。

对于hhtp协议:

  1. 客户端:基于浏览器可以省略程序自己封装分用http数据的步骤(浏览器会帮助我们进行封装和分用);
  2. 服务端:基于web服务器(部署网站,对应省略http协议处理的逻辑)也可以类似的省略封装和分用的步骤。

对于web服务器,有多种产品(支持多种编程语言),支持Java语言的,对应也有多种产品。对以一个Java开发的网站,可以运行在这些支持Java语言的不同web服务器上,就需要满足一定的规范,这个规范就是servlet。

总结:

  • web服务器:针对所有编程语言,能运行网站系统的服务器程序;
  • servlet容器:运行Java开发的网站(Java开发的网站就一定使用了servlet技术);
  • servlet:Java官方规定的web开发的api规范。

一个完整的servlet程序

(1)创建一个maven项目
(2)引入依赖

项目创建完成后,会自动生成一个pom.xml文件。我们需要在该文件中引入servlet依赖包。需要注意以下事项:

(3)创建目录

项目创建好之后,idea会帮我们自动创建一些目录(我们还需要自己配置一个webapp目录):

  • src:表示源代码所在的目录;
  • main/java:源代码的根目录;
  • main/resources:项目的一些资源文件所在的目录;
  • test/java:测试代码的根目录。

此外,我们还需要创建一些新的目录:

在main目录下,和Java目录并列,创建一个webapp目录,webapp目录内部再创建一个WEB-INF目录,在该目录下创建一个web.xml文件。

编写web.xml:

<!DOCTYPE web-app PUBLIC
    "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
    "http://java.sun.com/dtd/web-app_2_3.dtd" >
<web-app>
    <display-name>Archetype Created Web Application</display-name>
</web-app>
  • webapp目录是未来部署到Tomcat中的一个重要的目录,可以在其中放一些静态的文件(html,css等);
  • web.xml文件:Tomcat找到这个文件才能正确处理webapp中的动态资源。
(4)编写servlet代码

开发servlet的步骤(java目录下):

  • 类注解@WebServlet:字符串必须以/开头,一个项目可以开发多个servlet,但是其路径必须唯一;
  • 继承HttpServlet;
  • 重写doXXX方法,XXX表示提供的方法。(常见doGet、doPost)
    【1】获取请求信息:通过servlet规定的api,HttpServletRequest方法参数对象;
    【2】进行一些逻辑操作:比如数据库的操作等;
    【3】获取响应信息:通过servlet规定的api,HttpServletResponse方法参数对象。
@WebServlet("/hello")
public class HelloServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        resp.getWriter().write("hello world");
    }
}
(5)打包程序

使用maven进行打包,找到项目目录下的Lifecycle的package双击即可,一定要出现success才算打包成功。打包成功后会在target目录下生成一个war包。

(6)部署

将war文件复制到tomcat/webapps目录下。

(7)运行

通过tomcat来运行网站。

补充

可以看到我们打包的war包名称很长,而且其中包含版本号,牵涉到版本更新的时候比较麻烦,所以我们可以使用以下代码配置文件名。

 <build>
      <!--   最终打包的文件名,建议配置     -->
      <finalName>servlet-demo</finalName>
 </build>

部署方式

对于上面的部署方式,手动将war包拷贝到webapps目录下比较麻烦,我们可以使用idea中的Smart Tomcat插件更方便的完成部署。

(1)安装smart插件

按照以下步骤安装Smart Tomcat插件:

(2)配置Smart Tomcat插件

找到右上角Add:

进行如下配置:

访问出错的情况

404

表示用户访问的资源不存在。大部分情况是URL的路径有问题。

注意请求路径的写法:

如下,缺少上下文路径:

405

表示对应的HTTP请求方法没有实现。

如下,将上面的servlet程序的重写的doGet方法改为doPost方法(通过地址栏访问使用的是get方法):

500

往往是servlet代码中抛出异常导致。

如下,修改servlet代码,使其抛出异常,访问时HTTP状态码为500:

Servlet运行原理

Servlet容器(tomcat等运行Java网站的web服务器)和Servlet:容器管理整个Servlet的生命周期。

  • Tomcat的代码中内置了main方法。我们启动Tomcat时,就是从Tomcat的main方法开始执行的;
  • 类@WebServlet注解修饰的类会在Tomcat启动的时候被获取到,并集中管理;
  • Tomcat通过反射来创建被注解修饰的类的实例;
  • 这些实例被创建完之后,会调用init()方法进行初始化;
  • 这些势力被销毁之前,会调用destory()方法进行收尾工作;
  • Tomcat为了能同时相应多个HTTP请求,采取了多线程的方式实现。

处理请求的时候,根据请求路径(url)找到对应的servlet对象。

servlet三大生命周期方法:

  • init():初始化方法,实例化对象之后,执行一次;
  • service():每次请求,执行一次;
  • destory():销毁方法,只执行一次。

img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

需要这份系统化资料的朋友,可以戳这里获取

servlet三大生命周期方法:

  • init():初始化方法,实例化对象之后,执行一次;
  • service():每次请求,执行一次;
  • destory():销毁方法,只执行一次。

[外链图片转存中…(img-YG7BI9SD-1714712299550)]
[外链图片转存中…(img-eGSoWo2j-1714712299551)]
[外链图片转存中…(img-r5nbC8If-1714712299551)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

需要这份系统化资料的朋友,可以戳这里获取

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值