2022-8-30 第一组 (≥▽≤) 学习笔记
1.Servlet
除了form表单之外都是get请求
-
HttpServletRequest--- req——请求
-
所有请求的操作都用req对象来处理
-
当有请求来的时候,req就被实例化
-
HttpServletResponse--- resp——响应
-
所有响应的操作都用resp对象来处理
-
当有响应来的时候,resp就被实例化
-
当你想要给出响应时,使用resp
-
我们要给出的响应,必须要展示在客户端(浏览器)
-
【servlet的匹配优先级最高】
-
如果使用路径匹配,必须有/
-
如果使用扩展名匹配,必须没有/
-
扩展名匹配与路径匹配无法同时设置
-
<!-- 默认匹配/缺省匹配--> <url-pattern>/</url-pattern>
生命周期
初始化
- init方法什么时候执行
- 默认当我们第一次访问servlet的时候被调用,——延迟加载
- 初始化方法只执行一次
请求
- 常用的方法
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中的特殊匹配模式,优先级最低,不会覆盖任何的【url-patter】,匹配所有的请求
- /和/*拦截静态资源
GET和POST的区别
- GET:请求的参数会在浏览器的地址栏中显示,不安全;请求的长度限制在1k之内
- 没有请求体,无法通过request去设置参数。
- POST:请求的参数不会在浏览器的地址栏中显示,安全;没有长度限制
- 有请求体
请求转发和重定向的区别
- 重定向——是两次请求,是客户端行为,是浏览器的地址会发生改变,【重定向可以定义到任意地址】
- 请求转发——是一次请求,是服务器行为,浏览器地址不会发生改变,【转发只能项目内转发】
本文作者:(≧∇≦)(≧∇≦)(≧∇≦)
本文链接:https://www.cnblogs.com/gycddd/p/16640329.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
分类:
2022 Java实训
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步