-
json字符串转换成java自定义对象(对象中包含list类型属性) --- 找大神
2015-08-06 03:47:47json字符串转换成java对象 , 但是对象中有一个类型时list的属性,怎么样才能更好地将json字符串中的值映射到java对象中去,,求救大神 可以将例子发到我邮箱里去 474836779@qq.com 谢谢 -
深度剖析:如何实现一个 Virtual DOM 算法
2021-01-09 00:43:15本文会在教你怎么用 300~400 行代码实现一个基本的 Virtual DOM 算法,并且尝试尽量把 Virtual DOM 的算法思路阐述清楚。希望在阅读本文后,能让你深入理解 Virtual DOM 算法,给你现有前端的编程... -
React V15.6 实现一个简单的个人博客
2020-12-09 01:09:56它会返回一个带有 <code>issue</code> 格式对象的数组。每一个 <code>issue</code> 有很多属性,我们可能不需要那么多,先了解了解底下这几种: <pre><code>javascript // 为了方便,我把... -
面向对象编程从小白到王者系列-认识程序中的数组
2020-12-31 09:33:42因为我们在日常生活中会经常认识不同的朋友并把其联系方式加入到自己的通讯录中,而每次添加的时候不用找#程序猿#给你写代码或编程才能完成添加,是自己通过已经写好的程序就把朋友的信息添加到通讯录中了。...赶快看过来,这里都是干货,零基础学习编程,未来是科技的世界,你再不努力就会被淘汰了,赶快拿上小本本开始学习吧。
有很多老铁对C#中数组的理解不是很清楚,所以今天我就出一片文章来解释一下数组这个神秘的东东是什么,它和我们日常生活中有什么关系,在日常生活中我们有哪些地方用到。
但是在实际的生活中或真正的程序中是不会这样做的!因为我们在日常生活中会经常认识不同的朋友并把其联系方式加入到自己的通讯录中,而每次添加的时候不用找#程序猿#给你写代码或编程才能完成添加,是自己通过已经写好的程序就把朋友的信息添加到通讯录中了。那这是怎么做到的呢?
其实很简单,我们想要通过程序就能完成添加信息的功能,就要先认识一下编程中一个重要的知识——数组。
什么是数组呢?在日常生活中我们有没有遇到过呢?当然有了,我们在上学的时候大家都有自己的班级,在班级里都有摆好座位。如下图:
我们看到教室里有很多排桌子,这其实就是生活中的数组。数组分为一维数组、二维数组和多维数组,我们分别来看一下什么是一维数组?
一维数组
其实一维数组在生活中就是一行或是一列,如下图:
这样的数组就是一维数组,我们来看一下书面定义:数组(Array)是有序的元素序列。
在编程中数组是:是相同数据类型的元素的集合。
下面我们来看一下数组是如何使用的。
我们来看一下声明一维数组的语法:
类型说明符[] 数组名;例如:string[] name;注意:声明以后在使用时还要通过new关键字来创建。
创建一维数组的语法:
类型说明符[] 数组名=new [常量];或者是类型说明符[] 数组名={};例如:string[] name=new string[10];或string[] name={"","","","","","","","","",""};
根据上边的图片我们创建一个一维数组,这个数组只能存放整数(int)类型并且指正存放10个数字。怎么做呢?
我们根据数组的语法这样做:int[] number=new int[10];或者这样int[] number={1,2,3,4,5,6,7,8,9,10};
如果让你声明一个一维数组并且只能存放20人名,改怎么写呢?
写法是:string[] name=new string[20];或者这样写string[] name={"","","","","","","","","","","","","","","","","","","",""};
从上面的几个写法不能看出数组是有特点的,它的特点是:
1.数组是相同数据类型的元素的集合。
2.数组中的各元素的存储是有先后顺序的,它们在内存中按照这个先后顺序连续存放在一起。
3.数组元素用整个数组的名字和它自己在数组中的顺序位置来表示。
元素可以理解成教室里的桌子,内存大家可以理解成一个教室。
c#中数组中第一个元素是从0开始计数的,第二个元素的计数就是1,例如:名为name的数组,第一个元素是name[0],第二个元素name[1],第三个元素name[2]......以此类推第20个元素name[19]。如果一个一维数组只能存放10个元素,那么这个一维数组的最大计数就是9,因为数组是从0开始计数的。这种用来计数的值就是数组的索引数。
二维数组
二维数组就像是一个教室里的摆放的所有桌子或者是我们日常生活中用的表格,其实都是多维数组的应用方式,简单的理解就是由行和列组成。
二维数组的声明语法是:类型说明符[,] 数组名; 例如:string[,] name;
二维数组的创建语法是:类型说明符[,] 数组名=new 类型说明符[常量,常量]; 例如:string[,] name=new string[10,10];
二维数组大家可以理解成一个表格,如图:
多维数组是在二维数组的基础上又多了一个层的概念,也就是说二维数组你可以看成一个平面,多维数组就是在这个平面上又加了一层。
二维数组是平房多维数组就是楼房,魔方就是对多维数组最好的诠释。
多维数组不再进行详细阐述了,大家日后用到的不多,真是用到的时候在学习也来得及而且会理解的更深刻。
-
你必须知道的495个C语言问题
2015-10-16 14:14:28可我找不到任何方法来声明这样的函数——感觉我需要一个返回指针的函数,返回的指针指向的又是返回指针的函数……,如此往复,以至无穷。 数组大小 1.23 能否声明和传入数组大小一致的局部数组,或者由其他参数指定... -
《你必须知道的495个C语言问题》
2010-03-20 16:41:18可我找不到任何方法来声明这样的函数——感觉我需要一个返回指针的函数,返回的指针指向的又是返回指针的函数……,如此往复,以至无穷。 12 数组大小 13 1.23 能否声明和传入数组大小一致的局部数组,或者由... -
你必须知道的495个C语言问题(高清版)
2010-03-31 16:24:09可我找不到任何方法来声明这样的函数——感觉我需要一个返回指针的函数,返回的指针指向的又是返回指针的函数……,如此往复,以至无穷。 12 数组大小 13 1.23 能否声明和传入数组大小一致的局部数组,或者由... -
你必须知道的495个C语言问题(中文高清版)
2013-03-20 13:28:28可我找不到任何方法来声明这样的函数——感觉我需要一个返回指针的函数,返回的指针指向的又是返回指针的函数……,如此往复,以至无穷。 数组大小 1.23 能否声明和传入数组大小一致的局部数组,或者由其他参数... -
[你必须知道的495个C语言问题]人民邮电出版社
2012-08-18 19:02:28可我找不到任何方法来声明这样的函数——感觉我需要一个返回指针的函数,返回的指针指向的又是返回指针的函数……,如此往复,以至无穷。 数组大小 1.23 能否声明和传入数组大小一致的局部数组,或者由其他参数... -
你必须知道的495个C语言问题.[美]Steve Summit(带详细书签).pdf 压缩版
2018-04-08 02:26:50可我找不到任何方法来声明这样的函数——感觉我需要一个返回指针的函数,返回的指针指向的又是返回指针的函数……,如此往复,以到无穷。 41 数组大小 42 1.23 能否声明和传入数组大小一致的局部数组,或者由其他... -
你必须知道的495个C语言问题.pdf
2013-01-20 14:30:54可我找不到任何方法来声明这样的函数——感觉我需要一个返回指针的函数,返回的指针指向的又是返回指针的函数,如此往复,以至无穷。 数组大小 1.23 能否声明和传入数组大小一致的局部数组,或者由其他参数指定大小... -
你必须知道的495个C语言问题(PDF)
2009-09-15 10:25:474.4 我有个函数,它应该接受并初始化一个指针void f(int *ip) f static int dummy = 5; ip = &dummy;g 但是当我如下调用时: int *ip; f(ip); 调用者的指针却没有任何变化。. . . . . . . . . . . . . . . 18 4.5 我... -
[你必须知道的495个C语言问题]人民邮电出版社.扫描版.pdf
2011-10-01 21:39:52可我找不到任何方法来声明这样的函数——感觉我需要一个返回指针的函数,返回的指针指向的又是返回指针的函数,如此往复,以至无穷。 数组大小 1.23 能否声明和传入数组大小一致的局部数组,或者由其他参数指定大小... -
Qt Creator 的安装和hello world 程序+其他程序的编写--不是一般的好
2011-01-28 17:02:08my2 为我们新建对话框类的另一个对象,但是my2 我们还没有定义,所以 在widget.h 文件中添加相应代码,如下,先加入头文件,再加入my2 的定义语 句,这里我们将其放到private 里,因为一般的函数都放在public 里,而... -
java结构型设计模式——桥接模式
2017-11-13 15:53:51可以把桥接理解为连接,连接两个对象,那么两个对象怎么才能连接上呢,至少要让两个对象存在点关系吧,比方两个人谈恋爱,从得有些关系才好下手吧,总不能大马路上拉个人就跟她说我们谈恋爱吧,这不找抽吗 ...1、模式理解:桥接模式,那么桥接什么呢,可以把桥接理解为连接,连接两个对象,那么两个对象怎么才能连接上呢,至少要让两个对象存在点关系吧,比方两个人谈恋爱,从得有些关系才好下手吧,总不能大马路上拉个人就跟她说我们谈恋爱吧,这不找抽吗
2、运用场景:想让对象建存在关系,就可以使用桥接模式,桥接模式也是丰富一个对象的过程,因为连接的多了就成了一个体系
3、代码示例:可以参考:https://www.cnblogs.com/V1haoge/p/6497919.html
//先创建一个产品接口 public interface Product { void show(); }
//这个产品接口由下面两个产品实现 public class Moniter implements Product{ public void show(){ System.out.println("我是电脑显示器"); } } public class Host implements Product{ public void show(){ System.out.println("我是电脑主机"); } }
//这两个对象可以组装为一台简易的电脑,所以可以使用桥接模式,使其跟具体的电脑产生关系,先创建一个抽象的电脑类 public abstract class Computer { public List<Product> product;//电脑由很多其他类型的产品构成 public Computer(List<Product> product){ this.product=product; } abstract void getShow(); }
//接着写具体的电脑电脑类,这个类跟前面两个类可以通过这个抽象的电脑类作为桥梁产出联系 public class ThinkPadComputer extends Computer{ public ThinkPadComputer(List<Product> product) { super(product);//这样创建具体电脑对象的时候就可以把相应的产品赋值给抽象电脑类中的产品参数 } public void getShow(){ System.out.println("我是TinkPad电脑:"); for (Product p : product) {//因为抽象的时候赋值给了父级,而且父级是public,所以子类可以直接拿来用,似不似很方便 p.show(); } } }
//最后写个测试类 public class Main { public static void main(String[] args) { List<Product> list=new ArrayList<>(); list.add(new Moniter()); list.add(new Host()); ThinkPadComputer tpComputer=new ThinkPadComputer(list);//把产品都组装起来形成具体电脑 tpComputer.getShow(); } }
-
我不想当程序员
2019-04-19 21:43:12自我介绍 我是一名美丽可爱大方迷人的女...先定一个小目标吧,打好基础是关键,我前期当然是要先学好语言,然后才能拓展,找个好工作,我要成为一个优秀的女汉子!!! 怎么学习编程呢 虽然作为一个集美貌与才华...自我介绍
我是一名美丽可爱大方迷人的女程序员!!!(不接受任何反驳),emmm…现在嘛,暂时也是一名在校大学生,不过很快我也即将步入社会洪流,开始漫漫地找工作之旅!作为一个陕西女子我现在不仅要面向黄土大地,还要面向对象开发程序!
编程小目标
先定一个小目标吧,打好基础是关键,我前期当然是要先学好语言,然后才能拓展,找个好工作,我要成为一个优秀的女汉子!!!
怎么学习编程呢
虽然作为一个集美貌与才华于一身的女子,我知道熬夜对身体不好,但是为了技术,为了编程,我会将敲代码列入我的每日计划,毕竟手不练就会生疏嘛。
花多少时间
至于在编程上花多少时间嘛,这个当然最理想的状态就是每天都能敲敲代码啦,妆可以不化,代码不能不敲!
最想进哪家公司
最想进的当然是阿里啦!当然腾讯也是非常好的。
-
windows 内部原理(一)
2009-12-22 16:49:49这是一个系统的学习Windows底层工作机制的好机会,课程内容深入浅出,精彩纷呈,绝对不容错过。 深入研究Windows内部原理系列之一:Windows的昨天、今天和明天 讲师信息:潘爱民 2007年01月25日 14:00-15:30 ... -
学会Request请求,吃透这篇足够
2020-08-31 12:15:06前言 备注:该技术博客的内容是我根据技术视频整理...这样才能更好地指导这两个对象怎么去学习,他们是做什么的。我们通过画图的方式来讲解: 首先,请求会携带请求消息找demo1资源,可以找到 因为我们在服务器端有一前言
备注:该技术博客的内容是我根据技术视频整理与总结的(并非复制粘贴)。原视频源于黑马JavaWeb课程
一、Request原理
首先,我们要掌握request和response对象的原理
1.request和response对象是由服务器创建的。我们来使用他们呢 2.request对象是来获取请求消息,response对象是来设置响应消息
这样才能更好地指导这两个对象怎么去学习,他们是做什么的。我们通过画图的方式来讲解:
首先,请求会携带请求消息找demo1资源,可以找到 因为我们在服务器端有一个Servlet配置的urlpatten是/demo1 (@WebServlet(“/demo1”)) 所以找到了这个类,然后Tomcat会自动执行service方法 我们聊聊这个过程: 1.Tomcat服务器会根据请求url中的资源路径(/demo1)去创建对应的SerlvetDemo1对象 2.Tomcat服务器会创建两个对象,分别是request和response对象。request对象中封装请求消息数据 3.tomcat将request和response两个对象传递service方法,并且去调用service方法 4.我们可以来操作通过request对象获取请求消息数据,可以通过response对象设置响应消息数据 5.服务器在给浏览器做出响应之前会从response对象中去拿程序员设置的响应消息数据
接下来,我们来学request对象获取请求消息
但是学习它之前我们先说一说request继承体系结构二、Request继承体系结构
ServletRequest --接口 | 继承关系 HttpServlet Request --接口 | 实现关系 org.apache.catalina.connector.RequestFacade
org.apache.catalina.connector.RequestFacade是一个类,实现了HTTPServlet接口。
这个类是Tomcat编写的,Tomcat将来通过这个类来创建Request对象,并且传递给service方法。三、Request对象的功能
获取请求消息数据:
- 获取请求行数据
请求行: GET /day14/demo1?name=zhangsan HTTP/1.1 获取数据方法: 1.获取请求方式:GET String getMehtod() 2.获取虚拟目录(重点掌握):/day14 String getContextPath() 3.获取Servlet路径:/demo1 String getServletPath() 4.获取get方式的请求参数:name=zhangsan String getQueryString() 5.获取请求的URI(重点掌握):/day14/demo1 String getRequestURI(): /day14/demo1 StringBuffer getRequestURL(): http://localhost/day14/demo1 URL:统一资源定位符 http://localhost/day14/demo1 (相当于中华人民共和国) URI:统一资源标识符 /day14/demo1 (相当于共和国) 6.获取协议及版本: HTTP/1.1 String getProtocol() 7.获取客户机的IP地址: String getRemoteAddr()
代码演示:
package cn.itcast.web.request; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.swing.*; import java.io.IOException; /** * 演示Request对象获取请求行数据 */ @WebServlet("/requestDemo1") public class RequestDemo1 extends HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //1.获取请求方式: String method = request.getMethod(); System.out.println(method); //2.获取虚拟目录(重点掌握): String contextPath = request.getContextPath(); System.out.println(contextPath); //3.获取Servlet路径: String servletPath = request.getServletPath(); System.out.println(servletPath); //4.获取get方式的请求参数: String queryString = request.getQueryString(); System.out.println(queryString); //5.获取请求的URI(重点掌握): String requestURI = request.getRequestURI(); StringBuffer requestURL = request.getRequestURL(); System.out.println(requestURI); System.out.println(requestURL); //6.获取协议及版本: String protocol = request.getProtocol(); System.out.println(protocol); //7.获取客户机的IP地址: String remoteAddr = request.getRemoteAddr(); System.out.println(remoteAddr); } }
输出结果如下:
GET /day14 /requestDemo1 name=zhangsan /day14/requestDemo1 http://localhost/day14/requestDemo1 HTTP/1.1 0:0:0:0:0:0:0:1
- 获取请求头数据
获取方法: 1.(重点掌握)String getHeader(String name):通过请求头的名称获取请求头的值 2.Enumeration<String> getHeaderNames():获取所有的请求头名称
代码演示:
package cn.itcast.web.request; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; @WebServlet("/requestDemo4") public class RequestDemo4 extends HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //演示获取请求头数据:referer String referer = request.getHeader("referer"); System.out.println(referer);//http://localhost/day14/login.html //防盗链 if (referer != null){ if (referer.contains("/day14")){ //正常访问 System.out.println("播放电影..."); }else{ //盗链 System.out.println("想看电影吗?来优酷吧...."); } } } }
- 获取请求体数据
请求体:只有POST请求方式,才有请求体,在请求体中封装了POST请求的请求参数 获取请求体步骤: 1.获取流对象 BufferedReader getReader():获取字符输入流,只能操作字符数据 (此博客演示这个方法) ServletInputSream getInputStream():获取字节输入流,可以操作任何类型数据(在文件上传知识点后讲解) 2.再从流对象中拿数据
代码展示:
package cn.itcast.web.request; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.BufferedReader; import java.io.IOException; @WebServlet("/requestDemo5") public class RequestDemo5 extends HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //获取请求消息体--请求参数 //1.获取字符流 BufferedReader br = request.getReader(); //2.读取数据 String line = null; while ((line = br.readLine()) != null){ System.out.println(line); } } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { } }
四、其他功能
- 获取请求参数通用方式:不论get还是post请求方式都可以使用下列方式方法来获取请求参数。
1.String getParameter(String name):根据参数名称获取参数值 (常用) 2.String[] getParameterValues(String name):根据参数名称获取数值的数组 3.Enumeration<String> getParameterNames():获取所有请求的参数名称 4.Map<String,String[]> getParameterMap():获取所有参数的map集合 (常用)
代码演示这四个方法:
第一个方法: @WebServlet("/requestDemo6") public class RequestDemo6 extends HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //post 获取请求参数 //根据参数名称获取参数值 String username = request.getParameter("username"); System.out.println("post"); System.out.println(username); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //get 获取请求参数 /*//根据参数名称获取参数值 String username = request.getParameter("username"); System.out.println("get"); System.out.println(username);*/ this.doPost(request,response); } } ================================================================================ 第二个方法: @WebServlet("/requestDemo6") public class RequestDemo6 extends HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //post 获取请求参数 //根据参数名称获取参数值 String username = request.getParameter("username"); /*System.out.println("post"); System.out.println(username);*/ //根据参数获取参数值的数组 String[] hobbies = request.getParameterValues("hobby"); for (String hobby : hobbies) { System.out.println(hobby); } } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //get 获取请求参数 /*//根据参数名称获取参数值 String username = request.getParameter("username"); System.out.println("get"); System.out.println(username);*/ this.doPost(request,response); } } ================================================================================ 第三个方法: @WebServlet("/requestDemo6") public class RequestDemo6 extends HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //post 获取请求参数 //根据参数名称获取参数值 String username = request.getParameter("username"); /*System.out.println("post"); System.out.println(username);*/ //根据参数获取参数值的数组 String[] hobbies = request.getParameterValues("hobby"); /*for (String hobby : hobbies) { System.out.println(hobby); }*/ //获取所有请求的参数名称 Enumeration<String> parameterNames = request.getParameterNames(); while (parameterNames.hasMoreElements()){ String name = parameterNames.nextElement(); System.out.println(name); String value = request.getParameter(name); System.out.println(value); System.out.println("------------------------------------"); } } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //get 获取请求参数 /*//根据参数名称获取参数值 String username = request.getParameter("username"); System.out.println("get"); System.out.println(username);*/ this.doPost(request,response); } } ================================================================================ 第四个方法: @WebServlet("/requestDemo6") public class RequestDemo6 extends HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //post 获取请求参数 //根据参数名称获取参数值 String username = request.getParameter("username"); /*System.out.println("post"); System.out.println(username);*/ //根据参数获取参数值的数组 String[] hobbies = request.getParameterValues("hobby"); /*for (String hobby : hobbies) { System.out.println(hobby); }*/ //获取所有请求的参数名称 Enumeration<String> parameterNames = request.getParameterNames(); /*while (parameterNames.hasMoreElements()){ String name = parameterNames.nextElement(); System.out.println(name); String value = request.getParameter(name); System.out.println(value); System.out.println("------------------------------------");*/ //获取所有参数的map集合 Map<String, String[]> parameterMap = request.getParameterMap(); //遍历 Set<String> keyset = parameterMap.keySet(); for (String name : keyset) { //根据键获取值 String[] values = parameterMap.get(name); System.out.println(name); for (String value : values) { System.out.println(value); } System.out.println("-----------------------"); } } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //get 获取请求参数 /*//根据参数名称获取参数值 String username = request.getParameter("username"); System.out.println("get"); System.out.println(username);*/ this.doPost(request,response); } }
- 请求转发:一种在服务器内部的资源跳转方式
1.步骤: 1.通过request对象来获取请求转发器对象:RequestDispatcher getRequestDispatcher(String path) 2.使用RequestDispatcher对象来进行转发:forward(ServletRequest request,ServletResponse response) 2.特点: 1.浏览器地址栏路径不发生变化 2.只能转发到当前的服务器内部资源中 3.转发是一次请求
代码演示:
//RequestDemo8类 @WebServlet("/requestDemo8") public class RequestDemo8 extends HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { System.out.println("demo8888被访问了..."); //转发到demo9资源 /*RequestDispatcher requestDispatcher = request.getRequestDispatcher("/requestDemo9"); requestDispatcher.forward(request,response);*/ request.getRequestDispatcher("/requestDemo9").forward(request,response); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.doPost(request,response); } } ========================================================================================= //RequestDemo9类 @WebServlet("/requestDemo9") public class RequestDemo9 extends HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { System.out.println("demo9999被访问了..."); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.doPost(request,response); } }
- 共享数据:
域对象:一个有作用范围的对象,可以在范围内共享数据。 request域:代表一次请求的范围,一般用于请求转发的多个资源中共享数据 方法: 1.void setAttribute(String name,Object obj):存储数据 2.Object getAttribute(String name):通过键获取值 3.void remove Attribute(String name):通过键移除键值对
代码演示:
//RequestDemo8类 @WebServlet("/requestDemo8") public class RequestDemo8 extends HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { System.out.println("demo8888被访问了..."); //转发到demo9资源 /*RequestDispatcher requestDispatcher = request.getRequestDispatcher("/requestDemo9"); requestDispatcher.forward(request,response);*/ //存储数据到request域中 request.setAttribute("msg","hello"); request.getRequestDispatcher("/requestDemo9").forward(request,response); /*request.getRequestDispatcher("http://www.itcast.cn").forward(request,response);*/ } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.doPost(request,response); } } ========================================================================================= //RequestDemo9类 @WebServlet("/requestDemo9") public class RequestDemo9 extends HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //获取数据 Object msg = request.getAttribute("msg"); System.out.println(msg); System.out.println("demo9999被访问了..."); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.doPost(request,response); } }
- 获取ServletContext对象(有个印象即可)
1.ServletContext getServletContext()
代码如下:
@WebServlet("/requestDemo10") public class RequestDemo10 extends HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { ServletContext servletContext = request.getServletContext(); System.out.println(servletContext); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.doPost(request,response); } }
五、解决中文乱码问题:
get方式:tomcat8以上的版本已经将get方式乱码问题解决了 post方式:会乱码 解决:在获取参数前,设置request的编码 request.setCharacterEncoding("urf-8");
代码演示如下:
@WebServlet("/requestDemo7") public class RequestDemo7 extends HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //1.设置流的编码 request.setCharacterEncoding("utf-8"); //获取请求参数username String username = request.getParameter("username"); System.out.println(username); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.doPost(request,response); } }
-
为了心中的"英雄
2010-12-22 13:08:15一直很怯弱,从来就是别人眼中的那个好欺侮的人,这一年,我要从此改变。我要转变成一个堂堂正正的... 我需要打败敌人,为此,我必须要找一个对象。幸好,我找到了。我要努力,我要胜利,我要实现心中多年的愿望... -
ExtAspNet v2.2.1 (2009-4-1) 值得一看
2010-04-01 09:41:27--我们做了优化,现在要使一个Asp.net的按钮能够AJAX提交,你不需要做任何设置(PageManager的属性EnableAjax为true即可,这是默认属性)。 +PageManager的实例方法AddAjaxUpdateControl改名为... -
四色原型图进行业务建模的思考
2021-02-21 16:24:11但是,在非常复杂的业务逻辑中,怎么样才能找出它们的联系?而且还能更好地拥抱OO(面向对象),OO的优点不是我们本文的话题。这里笔者介绍一种很灵活很实用的分析方法--四色原型图,也叫彩色UML。(图片引自JDON的... -
C语言FAQ 常见问题列表
2010-10-28 16:41:29o 7.1 我在一个源文件中定义了 char a[6], 在另一个中声明了 extern char *a 。为什么不行 ? o 7.2 可是我听说 char a[ ] 和 char *a 是一样的。 o 7.3 那么, 在 C 语言中 ``指针和数组等价" 到底是什么意思 ? ... -
3.4.8 找出数组中出现次数超过一半的数,现在有一个数组,已知一个数出现的次数超过了一半,请用O(n)的复杂度的算法找出这个数。 3.4.9 找出被修改过的数字 3.5.0 设计DNS服务器中cache的数据结构。要求设计一个...
-
java 面试题 总结
2009-09-16 08:45:34面向对象计算始于这个基本概念,即现实世界可以被描绘成一系列完全自治、封装的对象,这些对象通过一个受保护的接口访问其他对象。 4. 多态性: 多态性是指允许不同类的对象对同一消息作出响应。多态性包括参数化多... -
struts2中session在不同action中的使用
2010-04-09 13:22:00大家好,我遇到一个这样的问题,希望大家能帮我。 我的意图很简单,在登录的action中,把管理员的用户名(或者管理员用户对象)装入session,然后在操作其他action时将这个用户名取出来,插入数据库,因为数据库...
-
物联网基础篇:快速玩转MQTT
-
【Python-随到随学】FLask第二周
-
HRBUST1754 Minimum Scalar Product【序列处理】
-
Glasterfs 分布式网络文件系统
-
看《西游记》悟团队建设
-
货币转换微服务:使用Spring Cloud的货币转换微服务-源码
-
Prisma初体验【逆向生成数据模型】
-
MaxScale 实现 MySQL 读写分离与负载均衡
-
朱老师c++课程第3部分-3.5STL的其他容器讲解
-
在敏捷软件开发中使用虚拟化技术
-
将 pip 的默认源修改为阿里源(Windows 版)
-
Web前端开发笔记(1)
-
系统设计:准备系统设计面试问题-源码
-
五金机械工具箱电商淘宝详情页设计模板.zip
-
2021 年该学的 CSS 框架 Tailwind CSS 实战视频
-
access应用的3个开发实例
-
使用 Linux 平台充当 Router 路由器
-
Unity ILRuntime框架设计
-
nasm: error: more than one input file specified 原因
-
同行评审常见问题解答