栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

javaweb基础知识整理

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

javaweb基础知识整理

1.ServletContext
  1. web容器在启动时候,它为每个web程序都创建了一个对应的ServletContext对象。
  2. ServletContext对象代表了当前的web应用。
  3. 通过ServletContext接口做如下操作,此外还有很多见源码
ServletContext context = this.getServletContext();
//共享资源
context.getAttribute();
//读取资源文件
context.getResourceAsStream();
//请求转发
context.getRequestDispatcher();
//获取初始化参数
context.getInitParameter();
1.1共享数据

共享类

//1.this调用ServletContext对象用于设置各种资源
ServletContext con = this.getServletContext();
String username = "李晓明";
//设置义一个属性以键值对的方式,作为共享资源
con.setAttribute("username",username);

接收共享类

//1.同样获取ServletContext对象
ServletContext con = this.getServletContext();
//2.通过键获取值
String username = (String) con.getAttribute("username");
//3.把数据在网页输出
PrintWriter out = resp.getWriter();
out.println(username);
1.2读取资源文件
ServletContext sct = this.getServletContext();
//1.通过context获取一个流对象,指定配置文件在web中的路径
InputStream in = sct.getResourceAsStream("/WEB-INF/classes/jdbc.properties");
//2.读取流文件
Properties prop = new Properties();
prop.load(in);
//3.输出到前端页面
PrintWriter out = resp.getWriter();
out.println(prop.getProperty("driverClassName"));
out.println(prop.getProperty("username"));
out.println(prop.getProperty("password"));
1.3请求转发(常用)
//1.获取Context对象
ServletContext sct = this.getServletContext();
//2.转发的请求路径
RequestDispatcher rd = sct.getRequestDispatcher("/指定路径文件");
//3.发出上面的指令,通过本类会直接跳到/指定路径资源页面下 '/' 代表当前工程!
rd.forward(req,resp);
//另外一种方式直接使用doGet/doPost里面的请求形参
req.getRequestDispatcher("/指定路径文件").forward(req,resp);
1.4获取初始化参数(了解)

获取类

//1.获取context对象
ServletContext sct = this.getServletContext();
//2.获取xml中配置的初始参数
String ipr = sct.getInitParameter("xml中的标识");
//3.输出数据到网页
PrintWriter out = resp.getWriter();
out.println(ipr);

xml参数


    一个标识
    具体参数

2.Response

简单的文件下载

//1.两种方式获得文件路径
String localPath = "文件绝对路径 taget下!";
//通过context获取的路径在tomcat包下,并非我们的web目录下!
//String localPath = this.getServletContext().getRealPath("/中国代码.jpg");
System.out.println("控制台:获取文本路径"+localPath);

//2.下载的文件名是啥 通过String方法截取
String filename = localPath.substring(localPath.lastIndexOf("\")+1);

//3.让浏览器支持(Content-Disposition)我们要下载的东西,使用URLEncoder设置文件名称不乱码
resp.setHeader("Content-Disposition","attachment;filename="+ URLEncoder.encode(filename,"utf-8"));

//4.下载文件的输入流
FileInputStream fsm = new FileInputStream(localPath);

//5.获取输出流对象
ServletOutputStream serverOSM = resp.getOutputStream();

//6.缓冲区
int len = 0;
byte[] bytes = new byte[1024];
//把文件写入缓冲区,使用输出流把数据发送到客户端
while ((len = fsm.read(bytes)) != -1){
serverOSM.write(bytes,0,len);
}
//7.释放流[略]
3.Request 3.1前后端交互

后端 处理数据

//1.处理请求
String name = req.getParameter("name");
String pass = req.getParameter("password");
//处理多数据,如前端的checkbox 使用数组元素
String[] hobbies = req.getParameterValues("hobbies");

//2.反馈信息到前端
//方式1.重定向
//resp.sendRedirect("/rt/success.jsp");
//方式2.通过请求转发 /就代表当前项目无需再写具体路径
req.getRequestDispatcher("/success.jsp").forward(req,resp);

前端 登录页面

<%--这里提交的路径,需要寻找到项目的类路径--%>
用户名:
密码:
爱好 Girls Code Math Tinnies

后端在xml中的配置 前端读取url-pattern


        login
        qingqiu.LoginCdx


        login
        /login

3.2重定向和转发

两者都可以实现跳转页面

重定向

  1. 就是通过各种方法将各种网络请求重新定个方向转到其它位置
  2. 由浏览器端进行的页面跳转
  3. 重定向的时候,url栏会发生变化 302
  4. resp.sendRedirect(“具体路径”);

转发

  1. 由服务器端进行的页面跳转。
  2. 请求转发:一种在服务器内部的资源跳转方式。
  3. 请求转发时候,url栏不产生变化 307
  4. req.getRequestDispatcher(“具体路径”).forward(req,resp)
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1014681.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号