JAVA学习记录Week-9 <9.19-9.23>_"request.setattribute(\"list\",list);//把查询出来的集合存到r-程序员宅基地

技术标签: java  servlet  

9.20

1. servletContex对象 (接口 --- 代表整个 web application : 全局对象)

四个作用

    1)可以获取 上下文路径
    2)可以web.xml文件中 全局参数
    3)可以去作为"请求转发" 
                    --- 后端将数据 --- 存储在"域对象", 可以页面跳转
    4) 可以作为 域对象 ----  就是在不同的servlet之间进行数据传输(数据共享)
    
    
  • 1)可以获取 上下文路径
/**
 * ServletContext: 代表整个web应用程序  全局对象
 *      web应用程序启动:就会创建对象
 *  作用1:
 *      可以获取上下文路径
 *                         public String getContextPath()
 *      
     场景:
 *              在xxx.jsp/xx.html文件中
 *
 *           一些标签 
                    超链接的href属性
 *                  图像标签src属性
 *                  导入外部css文件 <link href="xxx.css" rel="stylesheet"/>
 *                  导入外部的js文件 <script  src="xx.js"></script>
 *
 *                在书写导入路径的时候: 写上下文路径,否则404
 *
 *           这些src/href...都属于"浏览器行为",必须带web工程的上下文路径
 *
 *
 *
 */
public class ContextDemo extends HttpServlet {

   //接收get请求
   @Override
   protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

       //这个方法在请求对象就有,简写格式
       //HttpServletRequest----public String getContextPath()
       
       String contextPath = request.getContextPath();
       System.out.println(contextPath);

   }

   @Override
   protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
       doGet(request,response);
   }
}

  • 2)可以web.xml文件中 全局参数
/**
 * ServletContext全局对象的作用2:
 
 *      可以获取全局参数
 *     <context-param>
 *          参数名称
 *         <param-name>encoding</param-name>
 *          参数值
 *         <param-value>utf-8</param-value>
 *     </context-param>
 *
 *     三阶段前期: <context-param> 可以加载某个配置文件...
 */
public class ContextDemo2 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        //获取web.xml中全局参数encoding对应它内容
        //1)获取全局对象
        ServletContext servletContext = this.getServletContext();
        //2)String getInitParameter(String var1); 通过初始化全局参数名称获取参数值
            //Enumeration<String> getInitParameterNames();:全局对象获取所有初始化的参数名称
        String encoding = servletContext.getInitParameter("encoding");
        System.out.println(encoding);
        System.out.println("---------------------------------------------") ;
        Enumeration<String> en = servletContext.getInitParameterNames();
        while(en.hasMoreElements()){
            String name = en.nextElement();//获取元素  ---参数名称
            //String getInitParameter(String var1)
            String value = servletContext.getInitParameter(name);
            System.out.println(value);
        }
        System.out.println("---------------------------------------------------");

        //接收post提交参数
        //解决post中文乱码
        request.setCharacterEncoding(encoding);
        //接收参数
        String username = request.getParameter("username");
        String password = request.getParameter("password");
        System.out.println(username+"---"+password) ;

    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            doGet(request,response);
    }
}

  • 3)可以去作为"请求转发" --- 后端将数据 ---> 存储在"域对象", 可以页面跳转

请求转发的原理及注意事项

/**
 * ServletContext的作用3(重点)
 *  请求转发:后端能够控制的一种页面跳转(可以在不同的servlet之间进行跳转)
 */
public class ContextDemo3 extends HttpServlet {
   @Override
   protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

       //一步走:简写格式
       //public RequestDispatcher getRequestDispatcher(String path)在HttpServletRequest就有
       //request.getRequestDispatcher("/contextDemo4").forward(request,response);
       //WEB-INF下面的资源文件:只能后端的请求转发访问,不能直接访问,为了安全!

       request.setAttribute("name","高圆圆");

       request.getRequestDispatcher("/WEB-INF/adv.jsp").forward(request,response);


       System.out.println("请求转发成功");

   }

   @Override
   protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
       doGet(request,response);
   }
}



//接收跳转的请求public class ContextDemo4 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("text/html;charset=utf-8");
        System.out.println("进入到了ContextDemo4的doGet方法了....");
        response.getWriter().write("hello,contextDemo4接收了");
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request,response);
    }
}

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
    本文链接:https://blog.csdn.net/qq_52625509/article/details/127050568

    智能推荐

    bbp公式求圆周率、python_【并行计算】六种方法计算圆周率-程序员宅基地

    文章浏览阅读2.7k次。计算π的历史圆周率π可能是科学界内外最广为人知的自然常数了。早在公元5世纪时,南朝宋数学家祖冲之用割圆法将圆周率计算到小数点后7位数字。大约同一时间,印度的数学家也将圆周率计算到了小数点后5位。历史上首个π精确无穷级数公式(即莱布尼茨公式)直到约1000年后才由印度数学家发现。20世纪以来,随着计算机技术的快速发展,π的精度也在极速提高。截至2019年,π的十进制精度已高达1013位。虽然几乎所有..._chudnovsky算法

    苹果快捷键怎么调出来_原来还有这么好用的CAD快捷键,文末附赠快捷键鼠标垫!留言走起...-程序员宅基地

    文章浏览阅读141次。▼相信大家都看过一些大神做CAD,那个图纸真是做的又快又好看!当然大神们其实也就基础好一点,把快捷键记得过目不忘,所以接下来小编就教大家一个非常Skr的方法,保证你对这些快捷键过目不忘,文末更有免费鼠标垫领取,千万别错过哦!这个方法就是建立我们的思维导图了,文字看了可能会忘记,但是通过导图的方式,就会变成思维图形,更加符合我们大脑的思考习惯,就可以牢牢记住这些快捷键啦:▼例如我们看到下面的就是绘图..._苹果cad快捷键

    MATLAB的GUI 程序设计_制作一个曲面光照效果的演示界面,如图所示,三个弹出式菜单分别用于选择曲面形式、-程序员宅基地

    文章浏览阅读7.2k次,点赞7次,收藏60次。第七章 MATLAB的GUI 程序设计Chapter 8: Design of MATLAB of GUI programGUI(Graphical User Interfaces):由各种图形对象组成的用户界面,在这种用户界面下,用户的命令和对程序的控制是通过“选择”各种图形对象来实现的。目前90%以上的应用程序和软件都是在GUI下运行的。MATLAB有两种GUI用户界面控件的创建方式,基于命令行的方式用程序来制作和基于GUI的方式制作。这里主要介绍基于GUI的方式。MATLAB 的._制作一个曲面光照效果的演示界面,如图所示,三个弹出式菜单分别用于选择曲面形式、

    MT7628开发环境搭建_undefined reference to `llseek-程序员宅基地

    文章浏览阅读2.1k次。参考openwrt 快速入门1.环境搭建1.1Ubuntu dockerhttps://www.runoob.com/docker/ubuntu-docker-install.html​1.1.1使用官方安装脚本自动安装安装命令如下:curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun​ps: 我已经放弃用deepin编译旧版openwrt ,修复了十几个bug还是有bug,无敌下载14.04版本docke_undefined reference to `llseek

    13 Kubectl命令概览_kube_ps1关闭-程序员宅基地

    文章浏览阅读81次。kubectx:用于切换kubernetes context kube-ps1:为命令行终端增加$PROMPT字段 kube-shell:交互式带命令提示的kubectl终端kube-shell开源项目kube-shell可以为kubectl提供自动的命令提示和补全,使用起来特别方便,推荐给大家。Kube-shell有以下特性:命令提示,给出命令的使用说明 自动补全,列出可选命令并可以通过tab键自动补全,支持模糊搜索 高亮 使用tab键可以列出可选的对象 vim模式M..._kube_ps1关闭

    ensp各种报错积累(以及解决方法)_ensp配置路由地址时错误-程序员宅基地

    文章浏览阅读1k次,点赞11次,收藏9次。此报错的意思是请续订默认配置,就是让你去一级一级的删除,首先删除你设置的允许vlan通过的命令,然后去取消掉更改的端口类型命令(就是在配置命令前面加一个undo),再去更改端口类型就成功了。此报错的意思是已经加入了接口,不能在修改模式,所以需要先去把端口全部删除,在修改模式即可成功。他的意思就是说这个IP地址已经配置了,不需要在配置了。2.修改链路聚合模式的时候。3.更改IP地址的时候。_ensp配置路由地址时错误

    随便推点

    Android 通过蓝牙采集音频_android 蓝牙麦克风采集mic音频 无声-程序员宅基地

    文章浏览阅读8.8k次。通过蓝牙的麦克风进行录音MainActivity.javapackage com.example.bluetothrecord;import android.app.Activity;import android.content.BroadcastReceiver;import android.content.Context;import android.content.In_android 蓝牙麦克风采集mic音频 无声

    Accessing static Data and Functions in Legacy C_setyearanddayofyear-程序员宅基地

    文章浏览阅读1.1k次。http://www.renaissancesoftware.net/blog/archives/430http://www.renaissancesoftware.net/blog/archives/450It’s a new year; last year was a leap year; so the quadrennial reports of leap y_setyearanddayofyear

    vue把字符串分割成等长的若干字符串,根据特定字符分割字符串_vue 分割字符串-程序员宅基地

    文章浏览阅读1.6w次,点赞2次,收藏20次。把字符串分割成等长的若干字符串,根据特定字符分割字符串_vue 分割字符串

    朴素贝叶斯分类器的例子_朴素贝叶斯分类器 例子-程序员宅基地

    文章浏览阅读1.1k次。一、病人分类的例子让我从一个例子开始讲起,你会看到贝叶斯分类器很好懂,一点都不难。某个医院早上收了六个门诊病人,如下表。  症状  职业   疾病  打喷嚏 护士   感冒   打喷嚏 农夫   过敏   头痛  建筑工人 脑震荡   头痛  建筑工人 感冒   打喷嚏 教师   感冒   头痛  教师   脑震荡现在又来了第七个病人,是一个打喷嚏的建筑工人。请问他患上感冒的概率有多大?根据贝叶斯..._朴素贝叶斯分类器 例子

    当mysql数据库转换为sqlserver数据库时常见报错_mysql 数据导出在sqlserver不能用-程序员宅基地

    文章浏览阅读527次。↵下面是我在把mysql数据库转换为sqlserver数据库时候遇到过的一些错,踩过的坑,把它总结下来防止以后再出错。报错 1:com.microsoft.sqlserver.jdbc.SQLServerException: 仅当使用了列列表并且 IDENTITY_INSERT 为 ON 时,才能为表'user_student'中的标识列指定显式值。出错原因:当mysql数据库转换为sqlserver数据库时,如果第一个id设置为自动递增,那么String sql = "..._mysql 数据导出在sqlserver不能用

    LeetCode 刷题常用数据结构(Java 中的实现)_javalist集合map组合刷题 leetcode-程序员宅基地

    文章浏览阅读1.9k次,点赞4次,收藏27次。记录常用数据结构(栈、队列、数组、列表、字符串、集合等),在 Java 中如何使用它的实现类。_javalist集合map组合刷题 leetcode

    推荐文章

    热门文章

    相关标签