步骤:
- 创建一个类
- 继承HttpServlet
- 重写doGet和doPost方法
req和resp的api
见培训word
req如何获取表单请求参数的过程;为何要this.doGet();如何处理中文乱码问题
https://blog.csdn.net/baidu_39378193/article/details/123744070?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522168570652216800184140471%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id=168570652216800184140471&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allsobaiduend~default-1-123744070-null-null.142%5ev88%5ekoosearch_v1,239%5ev2%5einsert_chatgpt&utm_term=%E8%8E%B7%E5%8F%96%E8%AF%B7%E6%B1%82%E4%BD%93%E6%95%B0%E6%8D%AE&spm=1018.2226.3001.4187
post响应数据乱码问题处理:(和请求一样)
https://blog.csdn.net/m0_70470868/article/details/126436570?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522171792414916800197025257%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id=171792414916800197025257&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allsobaiduend~default-1-126436570-null-null.142v100pc_search_result_base9&utm_term=java%20web%E4%B9%B1%E7%A0%81&spm=1018.2226.3001.4187
response.setContentType(“text/html;charset=UTF-8”);
req请求转发resp重定向
req请求转发
request.getRequestDispatcher(url).forward(request, response);//转发
作用:跳转页面
请求转发特点:
跳转操作是由服务器执行,客户端地址栏不会发生改变
跳转不会发送一个新的请求
可以跳转到WEB-INF中资源和本项目资源,但是不能跳转到其他项目的资源
重定向
• 重定向
response.sendRedirect(“重定向的路径”);
- 把数据存到request里面,重定向不可用
- 重定向的地址栏路径改变
- 重定向的路径可以是项目内部,也可以是项目以外的(比如跳转到百度)
- 重定向两次请求。
- 重定向的路径写绝对路径(带域名/ip地址的,如果是同一个项目里面,域名/ip地址可以省略)
- 重定向不能重定向到WEB-INF下的资源
二者区别
请求转发的特点:
- 请求转发的跳转是由服务器发起的,在这个过程中浏览器只会发起一次请求
- 请求转发只能跳转到本项目资源,但是可以跳转到WEB-INF中的资源
- 请求转发可以和request域对象一起使用
- 请求转发跳转浏览器地址栏不发生改变
重定向的特点:
- 重定向的跳转是由浏览器发起的,在这个过程中浏览器会发起两次请求
- 重定向跳转到任意服务器资源,但是无法跳转到WEB-INF中的资源
- 重定向不可以和request域对象一起使用
- 重定向跳转浏览器的地址中的地址栏会变成跳转到的路径
注:除非一定要用请求转发,再用,否则不要随便用。都用重定向。
域对象
ServletContext作为域对象
域对象范围 :整个应用(无论多少次请求,只要是这个应用里面的都是可以共享 的)
API
o getAttribute(String name) ;向ServletContext对象的map取数据
o setAttribute(String name, Object object) ;从ServletContext对象的map中添加数据
o removeAttribute(String name) ;根据name去移除数据
request作为域对象存取值
request范围: 一次请求有效
域对象是一个容器,这种容器主要用于Servlet与Servlet/JSP之间的数据传输使用的。
方法:
• Object getAttribute(String name) ;
• void setAttribute(String name,Object object) ;
• void removeAttribute(String name) ;
说明:
request域对象的作用范围只在一次请求之间,所以request作为域对象存取值必须和请求转发一起使用
ServletContext其他功能
servletContext概述
ServletContext: 是一个全局对象, 上下文对象.
服务器为每一个应用(项目)都创建了一个ServletContext对象。 ServletContext属于整个应用(项目)的,不局限于某个Servlet。并且整个项目有且只会有一个ServletContext对象
ServletContext作用
1)作为域对象存取数据,让Servlet共享(掌握)
2)获取的文件MIME类型(文件下载)
getMimeType(String file)
3)获得全局初始化参数
String getInitParameter(String name) ; //根据配置文件中的key得到value;
4)获取web资源路径,可以将web、资源转换成字节输入流(掌握)
String getRealPath(String path);根据资源名称得到资源的绝对路径.
getResourceAsStream(String path) ;返回指定路径文件的流