Servlet基础

一 设置全局配置信息

在web.xml 中配置
string value = this.getServletContext().getInitParameter(“key”);
System.out.println(value);

// 先获取config信息再取出器配置信息
String value = this.getServletConfig().getInitParameter(“uername”);
System.out.println(value);

二 获取服务器上的真实路径并获取
使用context域对象获取,可以访问服务器上的所有资源

String path = this.getServletContext().getRealPath(“/WEB-INF/classes/com/lanou3g/b.properties”);

Properties properties = new properties();
properties.load(new FileinputStream(path));
String string = properties.getProperty(“key”);
System.out.println(string);

三 请求转发
注意浏览器只是发起了一次请求
Servlet 内部做的是请求转发浏览器并不知道

主要代码
1.获取context域对象
ServletContext context = this.getServletContext();
2.从context中获取转发器
Dispatcher requestDispatcher =context.getRequestDispatcher(“/demo4”)
3。进行请求转发
requestDispather.forward(request,response);

四 创建HttpServletResponse服务器的响应对象

响应对象中有什么
1.响应行 http/1.1 状态码 200
2. 响应头 告诉浏览器我要做什么 例如响应给你的文件是要下载的
3. 响应体 响应回浏览器的数据

主要代码
设置编码格式
response.setContentType(“text/html;charset-UTF-8”);

给浏览器响应一句话
从响应对象HttpServletResponse 获取流对象
注意这个流对象不是你自己创建的,要从响应中自己获取 PrintlnWriter out = response.getWriter();
out.write(“好开心”);

五 下载文件

用户发送请求,请求到当访问的Servlet Servlet处理请求
(把服务器上的图片以流的形式,使用response 响应给用户浏览器)

1.获取服务器上的图片路径
从服务器中读取文件 边度边写
String path =this.getServletContext().getRealPath(“/WEB-INF/classes/团子大家族.png”)
FileInputStream fis = new FileInputStream(path);

字符串的切割
int index = path.lastindexOf(“/”);
String filename = path.substring(index +1);

修该文件名字的字符集
filename = new String (filename.getBytes(),”iso-8859-1”);

添加响应头 告诉浏览器的下载格式
response.setHeader(“content-disposition”,”ttachment;filename”+filename):

response.setHeader(“content-type”,”image/png”);

获取response中的字节流
ServletOutputStream sos =
response.getoutputStream();

int len = 0;
byte[] b = new Byte[1024];
whilr((len = fis.read(b))!=-1){
sos.write(b,0,len);
}

注意:这里只关自己创建的流就可以了
fis.close();

六 请求重定向

浏览器发起请求 请求Servlet
Servlet 给浏览器一个响应 ,在响应中会携带一个重定向的响应头(头中有 重定向的 访问地址)

浏览器接到这个响应后再发起一次请求,去访问重定向头中的地址

通过添加请求头的方式来请求重定向

1.添加重定向响应头
response.setHeader(“location”,”sh-web-servlet/demo08”);
2.添加重定向码
response.setStatus(302);

通过刷新头的方式让页面一秒打印一个随机数
response.setIntheader(“refresh”,1);

response.getWriter().writer(Math.ramdom()+” “);

三秒后跳到另一个网址
response.setContentType(“text/html”;charset=UTF-8);

response.setIntHeader(“refresh”,”3;url=http://www.baidu.com“);
response.getWriter().write(“三秒后跳转”);

七 httpServletRequest 请求对象
请求行
请求头
请求体

//获取请求的网址
// /sh-web-servlet02/demo08
// http://localhost:8080/sh-web-servlet02/demo08
System.out.println(request.getRequestURI());
System.out.println(request.getRequestURL());
//获取请求的类型 GET 用浏览器请求的都是get请求
System.out.println(request.getMethod());
//获取请求的路径,并且这个路径是相对路径 /sh-web-servlet02
System.out.println(request.getContextPath());

获取请求中携带的参数
参数是你提交表单时,表单的name属性
String username = request.getParameter(“username”);
String password = request.getParameter(“password”);

System.out.println(username + password);

判断浏览器
可以通过请求中的信息获取 到用户的浏览器
String header = request.getHeader(“User-Agent”)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值