首页 > 其他分享 >2022-08-30 第四组 王佳齐 学习笔记

2022-08-30 第四组 王佳齐 学习笔记

时间:2022-08-31 21:57:30浏览次数:58  
标签:请求 08 request System 王佳齐 println 第四组 response out

JavaWEB

路径匹配

/hello.do

拓展名匹配

*.do

默认匹配,缺省匹配

/

使用路径匹配:必须有/,如果使用的是扩展名匹配:必须不能有/,路径匹配和扩展名无法同时设置
面试题:/和/的区别: /属于路径匹配,匹配所有的请求,路径匹配优先级仅次于精确匹配,/会覆盖所有的扩展名匹配,非常恶劣的匹配规则。 /是servlet中的特殊的匹配模式,优先级最低,不会覆盖任何的url-pattern,匹配所有的请求 /和/拦截静态资源

Servlet初始化

public void init(ServletConfig config) throws ServletException {
System.out.println("servlet初始化...");
System.out.println(config.getInitParameter("username"));
System.out.println(config.getInitParameter("password"));
}

init方法什么时候执行?
默认当我们第一次访问servlet的时候被调用,延迟加载。 初始化方法只执行一次。

HttpServletRequest--request(请求)

所有和请求相关的操作,都用这个对象来处理 当有请求来的时候,request就被实例化。

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// System.out.println(request.getHeader("Host"));
System.out.println("请求的方法:" + request.getMethod());
System.out.println("请求的根路径:" + request.getContextPath());
System.out.println("请求的URI:" + request.getRequestURI());
System.out.println("请求的URL:" + request.getRequestURL());
System.out.println("请求的servletPath:" + request.getServletPath());
}

HttpServletResponse--response(响应)

所有和响应相关的操作,都用这个对象来处理 当有请求来的时候,response就被实例化。 当你想要给出响应时,使用response。 我们要给出的响应,必须要展示在客户端(浏览器)

给出响应

客户端和服务器端的信息传递

设置响应的字符集

  • 一定要放在获取流之前

服务器处理字符串按照UTF-8处理

response.setCharacterEncoding("utf-8");

  • 添加响应头,告诉浏览器以HTML的格式来解析响应字符串

response.addHeader("content-type","text/html;charset=utf-8");

  • IO流

PrintWriter out = response.getWriter();

  • 向客户端回复的数据

out.write("我是后台,已经接到了你的请求!!!");

传参

最常见的客户端传参的方式两种,get,post

  • 浏览器地址栏直接输入:一定是get请求
  • 超级链接:一定是get请求
  • 表单:可以是get,也可以是post,取决于method
  • a标签是可以传参数的,a标签和我们直接在地址栏输入的地址没有区别,他们的都是GET请求

GET请求和POST请求的区别:
GET:请求的参数会在浏览器的地址栏中显示,不安全;请求的长度限制在1K之内。 没有请求体,无法通过request去设置一些参数。
POST:请求的参数不会在浏览器的地址栏中显示,相对安全。 把请求的参数封装成几个数据报文(请求体)。请求参数的长度没有限制。

当我们使用form表单提交数据时,注意:

1、所有的表单元素都必须有name属性,后台获取数据的根基。

2、按钮必须是submit。

3、提交数据的地址

根据key获取对应的value

request.getParameter("");

获取一个key对应的多个值,返回值为String类型的数组

String[] hobbies = request.getParameterValues("hobby");
System.out.println(Arrays.toString(hobbies));

获取请求中传过来的参数的key值,根据key值获取对应的value值

Enumeration parameterNames = request.getParameterNames();
while(parameterNames.hasMoreElements()){
System.out.println(parameterNames.nextElement());
}

可以获取到请求中的所有的键值对,返回值是一个map集合

这个map集合的key是String,value是String[] username=admin,password=123456,hobby=a,b,c,gender=man

Map<String, String[]> map = request.getParameterMap();
for (Map.Entry<String, String[]> name : map.entrySet()) {
String key = name.getKey();
String[] value = name.getValue();
System.out.println(key + "--->" + Arrays.toString(value));
}

请求转发

由多个servlet来处理同一个请求
请求转发是在服务器上完成的,跟客户端是否无关!!!

// getRequestDispatcher参数:转发的servlet的地址
// forward参数:request,response,把当前servlet用的request和response传给下一个
request.getRequestDispatcher("demo03.do").forward(request,response);

重定向

response.sendRedirect("success.html");

请求转发和重定向的区别:
1.重定向是两次请求,请求转发是一个请求
2.重定向是客户端行为,请求转发是服务器行为
3.重定向浏览器地址会发生改变,转发不会
4.重定向可以定向到任意地址,转发只能项目内转发

标签:请求,08,request,System,王佳齐,println,第四组,response,out
From: https://www.cnblogs.com/yiboxh-10000/p/16644644.html

相关文章

  • 2022-08-31 第四组 王佳齐 学习笔记
    <c:forEach begin="1" end="10" step="2" var="i" varStatus="stat">        \({i} ----- \){stat.first}     </c:forEach>刘夜壶  21:41:27JS......
  • 2022-08-31 第二组刘禹彤 学习笔记
    打卡42天  ###学习内容JSP简介JSP脚本片段---<%%>-------用于在JSP页面写JAVA代码注意JSP脚本片段中只能出现java代码,不能出现html元素,在访问JSP时,JSP引擎翻......
  • 【2022-08-31】Django框架(二)
    Django框架(二)静态文件及相关配置1.静态文件 html页面上使用的不经常改变的资源1.第三方框架文件,如Bootstrap框架2.css样式文件3.网站js文......
  • 2022-08-30 第五组 赖哲栋 学习笔记
    Servlet除了form表单之外都是get请求HttpServletRequest---req——请求所有请求的操作都用req对象来处理当有请求来的时候,req就被实例化HttpServletResponse---res......
  • 2022-08-31 第五组 赖哲栋 学习笔记
    JSPJSP脚本片段:用于在JSP页面写java代码<%%><%intnum=0;num++;System.out.println(num);//向页面打印输出out.print(num);%>注意事项......
  • 2022-08-31 第二小组 张晟源(javaweb,el,jstl,分页查询)
    JavaWeb一,JSPJSP(全称JavaServerPages),运行在服务端的语言<%//java代码%>1.JSP脚本只能有java代码,在访问JSP时,JSP引擎翻译JSP页面中的脚本2.J......
  • 20220829 第一组 于芮 Vue坏人Tomcat入门
     小白成长记——第三十七天    这几天的主要学习内容就是Vue以及简单的Tomcat在ideal中的配置,总体来说说学习内容很多,每天都很充实,时间都用来学习,整个人都很开心......
  • 08. Prometheus - 查询持久化与服务发现
    查询持久化前面编写的PromQL都是一次性的,下次使用需要重写编写。为了方便以后拿来即用,Prometheus提供了在配置文件中的持久化方案。cd/ezops/service/prometheus/con......
  • 2022-08-31
    1、因为.trimmed()方法不能去除字节之间的空格,而只能去除整个数据包的前后空格,所以为了方便起见而又不脱离方便人阅读的情况下,需要在写入txt时不能使用.toHex(‘’),也就是......
  • 前端面试题每日3题——2022/08/30
    1以下代码执行后,控制台中的输出内容为?for(leti=0;i<3;i++){setTimeout(()=>{console.log(i);});}for(varj=0;j<3;j++){setTimeout......