Servlet
开发动静web的一门技术
Servlet原理
ServletContext
web容器在启动时,会为每一个web利用都创立一个对应的ServletContext,它代表了以后的web利用。
- 共享数据
在同一个web利用中,不同的servlet之间的数据能够共享
- 获取初始化参数
- 申请转发
- 获取资源文件
@override
protected void doGet(HttpServletRequest rq,HttpServletResponse resp) throws ServletException,IOException {
Properties prop = new Properties();
InputStream is = this.getservletContext().getResourceAsStream( s: "/WEB-INF/classes/com/cy/servlet/aa.properties");
prop. load(is);
string user = prop.getProperty( "username" );
String pwd = prop.getProperty("password" );
resp.getwriter().print(user+": "+pwd);
}
HttpServletRequest
获取前端传输的数据
申请转发
HttpServletResponse
web服务器接管到用户的http申请,针对这个申请,web服务器会别离创立一个代表申请的HttppServletResquest对象,代表响应的对象HTTPServletResponse对象
- 如果要获取客户端发送过去的参数找HttPServletRequest
- 如果要给服务器响应一些数据应用HTTPServletResponse
下载文件
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String relPath = "D:Interlij IDEACGBIII2007projects01-springboot-startsrcmainresourcesfile.text";
String fileName = relPath.substring(relPath.indexOf("")+1);
resp.setHeader("Content-Disposition", "attachment;filename="+ URLEncoder.encode(fileName, "UTF-8"));
FileInputStream in = new FileInputStream(relPath);
int len = 0;
byte[] buffer = new byte[1024];
ServletOutputStream out = resp.getOutputStream();
while ((len=in.read(buffer))>0){
out.write(buffer,0,len);
}
out.close();
in.close();
}
重定向
//resp.setHeader("/url");
//resp.setStatus(304);
resp.sendRedirect("/url");
Cookie Session
Cookie
Cookie能够把用户数据保留在浏览器,并且浏览器能够保留多个Cookie。敞开浏览器,Cookie生效,每次登入浏览器都会有新的cookie被创立。
Session
- Session把用户的数据写到用户独占的Session中,保留在服务器端。(保留重要的信息,缩小服务器资源的节约)
- Session由服务器创立
应用场景:
- 保留用户的登录信息
- 购物车信息
- 在整个网站中常常应用的数据
JSP九大内置对象
- Application:保留的数据只在服务器中无效,从关上服务器到敞开服务器。
- Session:保留的数据在一次会话中无效,从关上浏览器到敞开浏览器。
- Request:保留的数据只在一次申请中无效,申请转发会携带这个数据。
- PageContext:保留的数据只在一个页面无效。
- Response
- out
- page
- exception
发表回复