C/S架构和B/S架构是软件发展过程中出现的两种软件架构方式
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xVKBSgjH-1660492507700)(C:\Users\66496\AppData\Roaming\Typora\typora-user-images\image-20210831050057863.png)]](https://1000bd.com/contentImg/2022/08/17/181414386.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-T5uVhRyq-1660492507705)(C:\Users\66496\AppData\Roaming\Typora\typora-user-images\image-20210831050316889.png)]](https://1000bd.com/contentImg/2022/08/17/181414473.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BExdmOQx-1660492507710)(C:\Users\66496\AppData\Roaming\Typora\typora-user-images\image-20210831050156004.png)]](https://1000bd.com/contentImg/2022/08/17/181414593.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ge8aWcWN-1660492507712)(C:\Users\66496\AppData\Roaming\Typora\typora-user-images\image-20210831050338934.png)]](https://1000bd.com/contentImg/2022/08/17/181414685.png)




http://tomcat.apache.org/

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


停止


端口的取值范围是:0-65535。
在这个取值范围中1023以下的端口已经分配给了常用的一些应用程序,这个数字以后的端口部分被使用,所以网络编程可用的端口一般在1024之后选取。
修改端口号之后必须要重启才能生效

方式一:webapps目录



方式二:





![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IkKYnF40-1660492507745)(C:\Users\66496\AppData\Roaming\Typora\typora-user-images\image-20210831054327660.png)]](https://1000bd.com/contentImg/2022/08/17/181417489.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9F1yoUMq-1660492507746)(C:\Users\66496\AppData\Roaming\Typora\typora-user-images\image-20210831054111745.png)]](https://1000bd.com/contentImg/2022/08/17/181417579.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5SB7JEGp-1660492507747)(C:\Users\66496\AppData\Roaming\Typora\typora-user-images\image-20210831054427110.png)]](https://1000bd.com/contentImg/2022/08/17/181417768.png)

配置:web.xml
<servlet>
<servlet-name>myservlet-name>
<servlet-class>com.cykj.servlet.MyServletservlet-class>
servlet>
<servlet-mapping>
<servlet-name>myservlet-name>
<url-pattern>/myservleturl-pattern>
servlet-mapping>


![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UTa3hnID-1660492507754)(C:\Users\66496\AppData\Roaming\Typora\typora-user-images\image-20210831061634533.png)]](https://1000bd.com/contentImg/2022/08/17/181418137.png)

![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oHb4g5ri-1660492507756)(C:\Users\66496\AppData\Roaming\Typora\typora-user-images\image-20210831061858193.png)]](https://1000bd.com/contentImg/2022/08/17/181418400.png)
开发版(热部署),发布版

![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bGEKHGxJ-1660492507758)(C:\Users\66496\AppData\Roaming\Typora\typora-user-images\image-20210831063233595.png)]](https://1000bd.com/contentImg/2022/08/17/181418652.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-J9XRYK1x-1660492507759)(C:\Users\66496\AppData\Roaming\Typora\typora-user-images\image-20210831063324358.png)]](https://1000bd.com/contentImg/2022/08/17/181418736.png)




Servlet接口

GenericServlet抽象类:简化Servlet

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



404
500
Servlet配置同名
Servlet路径错误



通过init方法测试
@WebServlet



注意:注解和web.xml不冲突,可以共存。但是不会这么做
工作中还是用web.xml配置比较多,它是各个版本通用的

get请求和post请求

request的主要方法

注册案例:


添加action地址:


中文乱码问题


改为post方式:method改为post
post中文乱码



主要方法

输出客户端乱码

解决输出中文乱码

检查network


跳转
Aservlet

Bservlet



数据传递

转发的特点


页面跳转


数据传递

重定向的特点
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-II8qN6tB-1660492507804)(C:\Users\66496\AppData\Roaming\Typora\typora-user-images\image-20210901071820460.png)]](https://1000bd.com/contentImg/2022/08/17/181423946.png)
转发与重定向的总结
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nGwAAb6a-1660492507806)(C:\Users\66496\AppData\Roaming\Typora\typora-user-images\image-20210901071940923.png)]](https://1000bd.com/contentImg/2022/08/17/181424066.png)

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

![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ovzegHk7-1660492507810)(C:\Users\66496\AppData\Roaming\Typora\typora-user-images\image-20210901072435263.png)]](https://1000bd.com/contentImg/2022/08/17/181424430.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uUnFX5Mx-1660492507811)(C:\Users\66496\AppData\Roaming\Typora\typora-user-images\image-20210831043956369.png)]](https://1000bd.com/contentImg/2022/08/17/181424544.png)

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

过滤器的作用

编写过滤器




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://1000bd.com/contentImg/2022/08/17/181425755.png)
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 = 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
//获取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的区别
