7、Tomcat & Servlet

发布于:2023-01-17 ⋅ 阅读:(444) ⋅ 点赞:(0)

一、引言

1、C/S架构和B/S架构

C/S架构和B/S架构是软件发展过程中出现的两种软件架构方式

(1)C/S架构(Client/Server 客户端/服务端)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xVKBSgjH-1660492507700)(C:\Users\66496\AppData\Roaming\Typora\typora-user-images\image-20210831050057863.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-T5uVhRyq-1660492507705)(C:\Users\66496\AppData\Roaming\Typora\typora-user-images\image-20210831050316889.png)]

(2)B/S架构(Browser/Server 浏览器/服务器)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BExdmOQx-1660492507710)(C:\Users\66496\AppData\Roaming\Typora\typora-user-images\image-20210831050156004.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ge8aWcWN-1660492507712)(C:\Users\66496\AppData\Roaming\Typora\typora-user-images\image-20210831050338934.png)]

二、服务器

1、web

2、web服务器

3、常见的web服务器

在这里插入图片描述

4、tomcat服务器

(1)下载:

http://tomcat.apache.org/

(2)解压安装

(3)目录介绍

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3HZRtEZ3-1660492507714)(C:\Users\66496\AppData\Roaming\Typora\typora-user-images\image-20210904181718260.png)]

(4)启动和停止

在这里插入图片描述

在这里插入图片描述

停止

在这里插入图片描述

(5)验证

在这里插入图片描述

(6)修改端口号

端口的取值范围是:0-65535。

在这个取值范围中1023以下的端口已经分配给了常用的一些应用程序,这个数字以后的端口部分被使用,所以网络编程可用的端口一般在1024之后选取。

修改端口号之后必须要重启才能生效

在这里插入图片描述

(8)项目部署

方式一:webapps目录

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

方式二:

在这里插入图片描述

在这里插入图片描述

(8)tomcat响应流程

在这里插入图片描述

(9)常见错误404, 500

三、Servlet

1、概念

在这里插入图片描述

2、作用

在这里插入图片描述

3、编写一个Myservlet.java,编译后放入web-inf目录下

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IkKYnF40-1660492507745)(C:\Users\66496\AppData\Roaming\Typora\typora-user-images\image-20210831054327660.png)]

4、配置web.xml

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9F1yoUMq-1660492507746)(C:\Users\66496\AppData\Roaming\Typora\typora-user-images\image-20210831054111745.png)]

5、执行

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5SB7JEGp-1660492507747)(C:\Users\66496\AppData\Roaming\Typora\typora-user-images\image-20210831054427110.png)]

6、常见错误:500

7、idea中创建servlet

在这里插入图片描述

配置:web.xml

<servlet>
	<servlet-name>my</servlet-name>
    <servlet-class>com.cykj.servlet.MyServlet</servlet-class>
</servlet>

<servlet-mapping>
	<servlet-name>my</servlet-name>
    <url-pattern>/myservlet</url-pattern>
</servlet-mapping>

8、idea中配置tomcat

(1)集成tomcat到idea:

在这里插入图片描述
在这里插入图片描述

(2)二次配置:把项目配置到tomcat

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UTa3hnID-1660492507754)(C:\Users\66496\AppData\Roaming\Typora\typora-user-images\image-20210831061634533.png)]
在这里插入图片描述

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oHb4g5ri-1660492507756)(C:\Users\66496\AppData\Roaming\Typora\typora-user-images\image-20210831061858193.png)]

9、打包war包(正式发布)

开发版(热部署),发布版

在这里插入图片描述

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bGEKHGxJ-1660492507758)(C:\Users\66496\AppData\Roaming\Typora\typora-user-images\image-20210831063233595.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-J9XRYK1x-1660492507759)(C:\Users\66496\AppData\Roaming\Typora\typora-user-images\image-20210831063324358.png)]
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

四、Servlet详解

1、核心接口和类(实现Servlet的三种方法)

在这里插入图片描述

Servlet接口

在这里插入图片描述

GenericServlet抽象类:简化Servlet

在这里插入图片描述

**HttpServlet类:**与协议有关的Servlet(推荐)

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

2、常见错误

404

500

Servlet配置同名

Servlet路径错误

3、Servlet两种配置方式:

(1)web.xml配置(Servlet2.5之前)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

通过init方法测试

(2)注解(Servlet3.0之后)

@WebServlet

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

注意:注解和web.xml不冲突,可以共存。但是不会这么做

工作中还是用web.xml配置比较多,它是各个版本通用的

4、request对象

在这里插入图片描述

get请求和post请求

在这里插入图片描述

request的主要方法

注册案例:

在这里插入图片描述
在这里插入图片描述

添加action地址:

在这里插入图片描述

在这里插入图片描述

中文乱码问题

在这里插入图片描述

在这里插入图片描述

改为post方式:method改为post

post中文乱码

在这里插入图片描述

在这里插入图片描述

5、response对象

在这里插入图片描述

主要方法

在这里插入图片描述

输出客户端乱码

在这里插入图片描述

解决输出中文乱码

在这里插入图片描述

检查network

在这里插入图片描述

6、转发

在这里插入图片描述

跳转

Aservlet

在这里插入图片描述

Bservlet

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

数据传递

在这里插入图片描述

转发的特点

在这里插入图片描述

7、重定向

在这里插入图片描述

页面跳转

在这里插入图片描述

在这里插入图片描述

数据传递

在这里插入图片描述

重定向的特点

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-II8qN6tB-1660492507804)(C:\Users\66496\AppData\Roaming\Typora\typora-user-images\image-20210901071820460.png)]

转发与重定向的总结

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nGwAAb6a-1660492507806)(C:\Users\66496\AppData\Roaming\Typora\typora-user-images\image-20210901071940923.png)]

8、Servlet的生命周期

(1)实例化

在这里插入图片描述

(2)初始化

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lfUtnZsp-1660492507808)(C:\Users\66496\AppData\Roaming\Typora\typora-user-images\image-20210901072325581.png)]

(3)服务

在这里插入图片描述

(4)销毁

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ovzegHk7-1660492507810)(C:\Users\66496\AppData\Roaming\Typora\typora-user-images\image-20210901072435263.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uUnFX5Mx-1660492507811)(C:\Users\66496\AppData\Roaming\Typora\typora-user-images\image-20210831043956369.png)]

9、Servlet特性

(1)线程安全问题

在这里插入图片描述

(2)解决线程安全问题

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-U4RATO0F-1660492507814)(C:\Users\66496\AppData\Roaming\Typora\typora-user-images\image-20210901073359344.png)]

10、过滤器

在这里插入图片描述

过滤器的作用

在这里插入图片描述

编写过滤器

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

sout
//让请求继续
filterChain.doFilter(servletRequest,servletResponse);
sout

xml方式配置过滤器:

<filter>
	<filter-name></filter-name>
    <filter-classs></filter-classs>
</filter>

<filter-mapping>
	<filter-name></filter-name>
    <url-pattern></url-pattern>//要拦截的资源路径
</filter-mapping>

拦截请求

在这里插入图片描述

乱码处理
在这里插入图片描述

登入验证

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lzWBmzIJ-1660492507827)(C:\Users\66496\AppData\Roaming\Typora\typora-user-images\image-20210902074344222.png)]

10、Servlet总结

Servlet是一个供其他Java程序(Servlet引擎)调用的Java类,它不能独立运行,它的运行完全由Servlet引擎来控制和调度。

针对客户端的多次Servlet请求,通常情况下,服务器只会创建一个Servlet实例对象,也就是说Servlet实例对象一旦创建,它就会驻留在内存中,为后续的其它请求服务,直至web容器退出,servlet实例对象才会销毁。

在Servlet的整个生命周期内,Servlet的init方法只被调用一次。而对一个Servlet的每次访问请求都导致Servlet引擎调用一次servlet的service方法。对于每次访问请求,Servlet引擎都会创建一个新的HttpServletRequest请求对象和一个新的HttpServletResponse响应对象,然后将这两个对象作为参数传递给它调用的Servlet的service()方法,service方法再根据请求方式分别调用doXXX方法。

五、cookie

什么是cookie

在这里插入图片描述

创建cookie

//创建cookie
Cookie cookie = new Cookie("acc","zhangsan");
//将cookie响应给客户端
resp.addCookie(cookie);

在这里插入图片描述
在这里插入图片描述

设置cookie的访问路径

cookie.setPath("/myServlet/get");//设置只能让项目中的get这个Servlet可以访问

在这里插入图片描述

设置cookie的有效期

cookie.setMaxAge(60*60);//设置cookie有效期为1小时(默认是浏览器关闭)

在这里插入图片描述
在这里插入图片描述

获取cookie

//通过request对象获取所有的cookie
Cookie[] cookies = req.getCookies();
//通过循环遍历cookie
if(null!=cookies){
	for(Cookie cookie:cookies){
        System.out.println(cookie.getName()+":"+cookie.getValue());
    }
}

在这里插入图片描述

修改cookie

在这里插入图片描述

创建中文cookie

在这里插入图片描述

读取带中文的cookie

在这里插入图片描述

cookie的优缺点

在这里插入图片描述

六、session对象

1、概述

在这里插入图片描述

2、原理

在这里插入图片描述

3、使用

在这里插入图片描述

4、session

获取session

//获取session

HttpSession session = request.getSession();
System.out.println(session.getId);

在这里插入图片描述

session通过cookie的方式发送给客户端

在这里插入图片描述

保存和获取session数据

//第一个Servlet中保存session数据
session.setAttribute("username","zhangsan");

//另一个Servlet中获取session的内容
HttpSession session = request.getSession();
String s = (String) session.getAttribute("username");
System.out.println("从session中获得了:"+s);

移除数据

HttpSession session = request.getSession();
session.removeAttribute("username");

session的生命周期

在这里插入图片描述

session.setMaxInactiveInterval(10);//有效期10秒
session.invalidate();//立即注销

request和session的区别

在这里插入图片描述

本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到