2022-08-30 第五组 赖哲栋 学习笔记
2022/8/31 23:26:19
本文主要是介绍2022-08-30 第五组 赖哲栋 学习笔记,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
Servlet
除了form表单之外都是get请求
- HttpServletRequest--- req——请求
- 所有请求的操作都用req对象来处理
- 当有请求来的时候,req就被实例化
- HttpServletResponse--- resp——响应
- 所有响应的操作都用resp对象来处理
- 当有响应来的时候,resp就被实例化
- 当你想要给出响应时,使用resp
- 我们要给出的响应,必须要展示在客户端(浏览器)
- 【servlet的匹配优先级最高】
- 如果使用路径匹配,必须有/
- 如果使用扩展名匹配,必须没有/
- 扩展名匹配与路径匹配无法同时设置
匹配规则
- 精确匹配-----------
中配置的项必须与url完全精确匹配。 - 扩展名匹配--------以“*.”开头的字符串被用于扩展名匹配
- 路径匹配-----------以“/”字符开头,并以“/*”结尾的字符串用于路径匹配
- 缺省匹配 (默认匹配)-------
/
任务
- Servlet就是一个普通的Java类而已。
- 处理请求,给出响应的类。
创建Sevlet
- 实现
javax.servlet.Servlet
接口 - 继承
javax.servlet.GenericServlet
类 - 继承
javax.servlet.http.HttpServlet
类
我们在开发中一般会使用第三种方法来创建Servlet。
Servlet生命周期
- 初始化---init方法。
- init方法什么时候执行
- 默认当我们第一次访问servlet的时候被调用,——延迟加载
- 初始化方法只执行一次
- init方法什么时候执行
- 实例化---构造器。
- 调用
service
方法,处理请求。 - 销毁---destory方法。
请求
常见的方法
System.out.println(req.getMethod()+"请求的方法"); System.out.println(req.getContextPath()+"请求的根路径"); System.out.println(req.getServletPath()+"请求的servletPath路径"); System.out.println(req.getRequestURI()+"请求的URI"); System.out.println(req.getRequestURL()+"请求的URL"); System.out.println(req.getScheme()+"请求的协议");
重要的方法——接受参数
// 接受参数,处理请求 String username = req.getParameter("username"); String password = req.getParameter("password");
接受参数
// 接受参数,处理请求 // 根据key获取value String username = req.getParameter("username"); String password = req.getParameter("password"); // 复选框返回多个值 String[] hobbies = req.getParameterValues("hobby"); // 获取key的值,根据key的值获取value Enumeration<String> parameterNames = req.getParameterNames(); while (parameterNames.hasMoreElements()) { String s = parameterNames.nextElement(); String parameter = req.getParameter(s); } //获取请求中传过来键值对,返回值是一个map集合; // 这个map集合的key是String,value是String[]; Map<String, String[]> parameterMap = req.getParameterMap(); for (Map.Entry<String, String[]> entry : parameterMap.entrySet()) { String key = entry.getKey(); String[] value = entry.getValue(); }
请求转发
- 由多个servlet来处理一个请求
- 请求转发是在服务器上完成的,根客户端无关
作用域
- 起作用的区域
req.setAttribute("name","张三"); // 获取 System.out.println("demo04.do-------->"+req.getAttribute("name")); // 删除 req.removeAttribute("name"); req.getRequestDispatcher("/demo03.do").forward(req,resp);
响应
// 给出响应 // 客户端与服务端的信息传递 // resp.setContentType("text/html;charset=utf-8"); // 响应的字符集一定放在流之前 // 添加响应头,告诉浏览器以HTML的格式来解析响应字符串 resp.addHeader("content-type","text/html;charset=utf-8"); PrintWriter writer = resp.getWriter(); writer.write("我是后台,已经接到你的请求了!!!"); // 写字符 writer.write("login success!!!"); // 写字节 writer.println(""); // 流的操作 writer.flush(); writer.close();
- 重定向
resp.sendRedirect("index.html");
Servlet的配置
web.xml
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" version="4.0"> <!-- 注册servlet --> <servlet> <servlet-name>hello</servlet-name> <servlet-class>com.jsoft.afternoon.HelloServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>hello</servlet-name> <url-pattern>/hello.do</url-pattern> </servlet-mapping> </web-app>
注解
@WebServlet("/hello.do")
面试题
路径配置中【/与/*有什么区别】
- 【/*】——属于路径匹配,可以匹配所有的请求,路径匹配的优先级仅次于精确匹配的
- 会覆盖所有的扩展名匹配,非常恶劣的匹配规则(语法)
- 【/】——是servlet中的特殊匹配模式,优先级最低,不会覆盖任何的【url-patter】,匹配所有的请求
- /和/*拦截静态资源
GET和POST的区别
- GET:请求的参数会在浏览器的地址栏中显示,不安全;请求的长度限制在1k之内
- 没有请求体,无法通过request去设置参数。
- POST:请求的参数不会在浏览器的地址栏中显示,安全;没有长度限制
- 有请求体
请求转发和重定向的区别
- 重定向——是两次请求,是客户端行为,是浏览器的地址会发生改变,【重定向可以定义到任意地址】
- 请求转发——是一次请求,是服务器行为,浏览器地址不会发生改变,【转发只能项目内转发】
这篇关于2022-08-30 第五组 赖哲栋 学习笔记的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-01为什么公共事业机构会偏爱 TiDB :TiDB 数据库在某省妇幼健康管理系统的应用
- 2024-04-26敏捷开发:想要快速交付就必须舍弃产品质量?
- 2024-04-26静态代码分析的这些好处,我竟然都不知道?
- 2024-04-26你在测试金字塔的哪一层?(下)
- 2024-04-26快刀斩乱麻,DevOps让代码评审也自动起来
- 2024-04-262024年最好用的10款ER图神器!
- 2024-04-2203-为啥大模型LLM还没能完全替代你?
- 2024-04-2101-大语言模型发展
- 2024-04-17基于SpringWeb MultipartFile文件上传、下载功能
- 2024-04-14个人开发者,Spring Boot 项目如何部署