一、引言
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)]](https://i-blog.csdnimg.cn/blog_migrate/b00ffd022503995064194abdf13e0661.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-T5uVhRyq-1660492507705)(C:\Users\66496\AppData\Roaming\Typora\typora-user-images\image-20210831050316889.png)]](https://i-blog.csdnimg.cn/blog_migrate/d437fc6f16a1a243083ba113b34b759f.png)
(2)B/S架构(Browser/Server 浏览器/服务器)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BExdmOQx-1660492507710)(C:\Users\66496\AppData\Roaming\Typora\typora-user-images\image-20210831050156004.png)]](https://i-blog.csdnimg.cn/blog_migrate/f08569c17081cddba74247f208bff302.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ge8aWcWN-1660492507712)(C:\Users\66496\AppData\Roaming\Typora\typora-user-images\image-20210831050338934.png)]](https://i-blog.csdnimg.cn/blog_migrate/d400fe0ce6aaf1c5de74c6702b243dc8.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)]](https://i-blog.csdnimg.cn/blog_migrate/6893f3513170a5b6b5507d6caed68f3f.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)]](https://i-blog.csdnimg.cn/blog_migrate/2bdf5b666a92323874c4515d67dc3193.png)
4、配置web.xml
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9F1yoUMq-1660492507746)(C:\Users\66496\AppData\Roaming\Typora\typora-user-images\image-20210831054111745.png)]](https://i-blog.csdnimg.cn/blog_migrate/5a1f786988726c8bb7ae3aee3a1f7029.png)
5、执行
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5SB7JEGp-1660492507747)(C:\Users\66496\AppData\Roaming\Typora\typora-user-images\image-20210831054427110.png)]](https://i-blog.csdnimg.cn/blog_migrate/3b48aad6ba1fc39d32c92eb4c2172ddc.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)]](https://i-blog.csdnimg.cn/blog_migrate/4ed3735ff22d9f737f5935b088cd7456.png)

![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oHb4g5ri-1660492507756)(C:\Users\66496\AppData\Roaming\Typora\typora-user-images\image-20210831061858193.png)]](https://i-blog.csdnimg.cn/blog_migrate/2e2451110871c6f6d331f6ce6f0e4e24.png)
9、打包war包(正式发布)
开发版(热部署),发布版

![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bGEKHGxJ-1660492507758)(C:\Users\66496\AppData\Roaming\Typora\typora-user-images\image-20210831063233595.png)]](https://i-blog.csdnimg.cn/blog_migrate/6ebe4ad70a4dbd1c831780a6e3bb95a6.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-J9XRYK1x-1660492507759)(C:\Users\66496\AppData\Roaming\Typora\typora-user-images\image-20210831063324358.png)]](https://i-blog.csdnimg.cn/blog_migrate/be81669525e04c98436da17d81fd2c4c.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)]](https://i-blog.csdnimg.cn/blog_migrate/8660c3ac559666b5e0c198021f0bc960.png)
转发与重定向的总结
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nGwAAb6a-1660492507806)(C:\Users\66496\AppData\Roaming\Typora\typora-user-images\image-20210901071940923.png)]](https://i-blog.csdnimg.cn/blog_migrate/b784df30bd80e4fd4f00a5cc75cbd1e0.png)
8、Servlet的生命周期
(1)实例化

(2)初始化
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lfUtnZsp-1660492507808)(C:\Users\66496\AppData\Roaming\Typora\typora-user-images\image-20210901072325581.png)]](https://i-blog.csdnimg.cn/blog_migrate/7df1331a609b2a946fc8273029ceb2a7.png)
(3)服务

(4)销毁
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ovzegHk7-1660492507810)(C:\Users\66496\AppData\Roaming\Typora\typora-user-images\image-20210901072435263.png)]](https://i-blog.csdnimg.cn/blog_migrate/00f65ab3e5c2a607cea237e9791bd127.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uUnFX5Mx-1660492507811)(C:\Users\66496\AppData\Roaming\Typora\typora-user-images\image-20210831043956369.png)]](https://i-blog.csdnimg.cn/blog_migrate/e2ae63ebda355da2afa7f5222fc81b58.png)
9、Servlet特性
(1)线程安全问题

(2)解决线程安全问题
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-U4RATO0F-1660492507814)(C:\Users\66496\AppData\Roaming\Typora\typora-user-images\image-20210901073359344.png)]](https://i-blog.csdnimg.cn/blog_migrate/d417e601935e494fe6501e8cf3aaa615.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)]](https://i-blog.csdnimg.cn/blog_migrate/f8bc52542108dcd9d625cb5b31bbaea3.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的区别


本文详细介绍了C/S和B/S架构,重点讲解了Web服务器,特别是Tomcat的下载、安装、配置及端口修改。探讨了Servlet的概念、作用及生命周期,并展示了在IDEA中创建和配置Servlet的步骤。同时,文章涵盖了Servlet的常见错误、请求响应处理、转发与重定向以及过滤器的使用。此外,还讨论了Cookie和Session的管理,包括它们的创建、获取、设置及生命周期。通过对这些核心技术的解析,帮助读者深入理解Web开发中的关键环节。
2098

被折叠的 条评论
为什么被折叠?



