结果是:D:\apache-tomcat-7.0.72\webapps\servletDemo\servletDemo\WebRoot\index.jsp
(3)获取当前web应用的名称
String contextPath=servletContext.getContextPath();
System.out.println(contextPath);
结果是:/servletDemo xml文件中更改成这个路径了
(4)获取当前web应用某一个文件对应的输入流
getResourceAsStream(String path);//path为当前web应用的根目录
InputStream a1=servletContext.getResourceAsStream(“/servletDemo/WebRoot/index.jsp”);
(5)和.attribute相关的几个方法
7.get请求和post请求
http用于定义web浏览器和web服务器之间交换数据的过程以及数据本身的格式
(1)发送get请求有以下几种情况
超链接
中使用getget传递的数据量<1K
get把请求参数追加到url后面
(2)post
中使用postpost方式把各个表单字段元素和数据作为http消息的实体内容发送给web服务器
8.servlet中获取信息
(1)service方法,每次都会调用
public void service(ServletRequest servletRequest,ServletResponse servletResponse){
System.out.println(servletRequest);
};
结果显示:org.apache.catalina.connector.RequestFacade@39a63eb0 是Apache服务器帮忙实现的
实际山,ServletRequest和ServletResponse这两个接口的实现类都是Apache服务器帮忙实现的,并在apache服务器调用自身方法service的时候传入
ServletRequest:封装了请求信息,可以从中获取任何请求信息
ServletResponse:封装了响应信息,如果想给用户什么响应,具体可以使用该接口的方法实现,
(2)ServletRequest
——>String getParameter(String name)
根据请求参数的名字,返回参数值。如果请求参数有多个值,该方法只能获取到第一个提交的值
——>String [] getParameterValues(String name)
根据请求参数的名字,返回一组值
String [] interesting=request.getParameterValues(“interesting”);
for(String interest:interesting){
System.out.println(interest);
}
——> Map getParameterMap()
返回请求参数的键值对:key:参数名,value:参数值,String数组类型
获得的是一个String数组
Map<String,String[]> map=(Map<String, String[]>) request.getParameterMap();
for(Map.Entry<String,String[]> entry:map.entryset){
System.out.println(entry.getKey()+“:”+Arrays.asList(entry.getValue()));
}
——> Enumeration getParameterNames()
用于返回参数名对应的Enumeration 对象,类似于ServletConfig(或者ServletContext)里面的getInitParameterNames()
Enumeration names=request.getParameterNames();
while(names.hasMoreElements()){
String name=names.nextElement();
String value=request.getParameter(name);
System.out.println(name+“:”+value);
——> String[] getParameterValues()
-> 获取请求的url
//下面进行强制转换,因为HttpServletRequest里面封装的方法是可用的
HttpServletRequest httpServletRequest=(HttpServletRequest) request;
String requestURL=httpServletRequest.getRequestURI();
System.out.println(“请求的url地址为:”+requestURL);
结果为:请求的url地址为:/servletDemo/loginServlet
注:http://localhost:8080/servletDemo/loginServlet 的站点为:http://localhost:8080,url地址为:/servletDemo/loginServlet
-> 获取请求的“方法”
//下面进行强制转换,因为HttpServletRequest里面封装的方法是可用的
HttpServletRequest httpServletRequest=(HttpServletRequest) request;
String method=httpServletRequest.getMethod();
System.out.println(“请求的method为:”+method);
结果为:请求的method为:POST
-> 获取请求的查询字符串。如果是get请求,就是“?”后面的那一串。如果是post请求,就没有
String query=httpServletRequest.getQueryString();
System.out.println(“请求的查询字符串为:”+query);
结果为:请求的查询字符串为:user=11&password=22&interesting=reading&interesting=game&interesting=basktable
-> 获取Servlet的映射路径
String servletPath=httpServletRequest.getServletPath();
System.out.println(“servlet的映射路径是:”+servletPath);
结果为:servlet的映射路径是:/loginServlet
-> HttpServletRequest是ServletRequest的子接口,针对http请求所定义里面包含了大量的获取http请求的方法
(2)ServletResponse
说明:封装了响应信息,如果想给用户什么响应,具体可以使用该接口的方法实现
-> getWriter();返回PrintWriter
PrintWriter out=response.getWriter();
out.println(“hello lily…”);
结果为:浏览器用户界面会显示内容为hello lily…
-> response.setContentType(“响应类型”);用来设置相应的内容类型
** response.setContentType(“application/msword”);//这类设置响应的内容类型**
PrintWriter out=response.getWriter();
out.println(“hello lily…”);
结果为:浏览器会自动下载一个word文档,内容为hello lily…
-> void sendRedirect(String location):请求的重定向,此方法在HttpServletRequest中定义,所以要先进行强制转换,然后才能定义
(2)HttpServlet
(1)是一个servlet,继承自GenericSevlet,针对http协议所定制
(2)实现的细节:在service()方法中直接把ServlevtRequest和ServlevtResponse转化为HttpServlevtRequest和HttpServlevtResponse,并重新调用重载的service(HttpServlevtRequest,HttpServlevtResponse)。在service中获取请求的方式:String method=request.getMethod(),紧接着创建doGet方法或者doPost方法
参考下面具体实现过程:
package com.guigu.javaweb;
import java.io.IOException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletResponse;
//基于http协议定义的基类
public class HttpServletRequest extends HttpServlet {
private static final long serialVersionUID = 1L;
public void service(ServletRequest arg0,ServletResponse arg1) throws IOException {
if(arg0 instanceof HttpServletRequest ){//强制转换
HttpServletRequest request=(HttpServletRequest) arg0;
if(arg1 instanceof HttpServletResponse){
HttpServletResponse response=(HttpServletResponse) arg1;
service(request, response);
}
}
}
public void service(HttpServletRequest request,HttpServletResponse response){
//1.获取请求方式
String method=request.getMethod();
//2.根据请求方式选择对应的处理方法
if(“GET”.equalsIgnoreCase(method)){
doGet(request, response);
}
else if (“POST”.equalsIgnoreCase(method)) {
doPost(request, response);
}
}
public void doPost(HttpServletRequest request, HttpServletResponse response) {
}
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:前端)
最后
今天的文章可谓是积蓄了我这几年来的应聘和面试经历总结出来的经验,干货满满呀!如果你能够一直坚持看到这儿,那么首先我还是十分佩服你的毅力的。不过光是看完而不去付出行动,或者直接进入你的收藏夹里吃灰,那么我写这篇文章就没多大意义了。所以看完之后,还是多多行动起来吧!
可以非常负责地说,如果你能够坚持把我上面列举的内容都一个不拉地看完并且全部消化为自己的知识的话,那么你就至少已经达到了中级开发工程师以上的水平,进入大厂技术这块是基本没有什么问题的了。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!
[外链图片转存中…(img-dXmpTvf2-1712204590989)]
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:前端)
最后
今天的文章可谓是积蓄了我这几年来的应聘和面试经历总结出来的经验,干货满满呀!如果你能够一直坚持看到这儿,那么首先我还是十分佩服你的毅力的。不过光是看完而不去付出行动,或者直接进入你的收藏夹里吃灰,那么我写这篇文章就没多大意义了。所以看完之后,还是多多行动起来吧!
可以非常负责地说,如果你能够坚持把我上面列举的内容都一个不拉地看完并且全部消化为自己的知识的话,那么你就至少已经达到了中级开发工程师以上的水平,进入大厂技术这块是基本没有什么问题的了。