Servlet第三篇【request和response简介、response的常见应用】

response、request对象

Tomcat收到客户端的http请求,会针对每一次请求,分别创建一个代表请求的request对象、和代表响应的response对象

既然request对象代表http请求,那么我们获取浏览器提交过来的数据,找request对象即可。response对象代表http响应,那么我们向浏览器输出数据,找response对象即可。

什么是HttpServletResponse对象?

http响应由状态行、实体内容、消息头、一个空行组成。HttpServletResponse对象就封装了http响应的信息。

HttpServletResponse的应用

调用getOutputStream()方法向浏览器输出数据

调用getOutputStream()方法向浏览器输出数据,getOutputStream()方法可以使用print()也可以使用write(),它们有什么区别呢?我们试验一下。代码如下

//获取到OutputStream流ServletOutputStream servletOutputStream = response.getOutputStream();//向浏览器输出数据servletOutputStream.print("aaaa");

成功输出,好像没什么毛病。
在这里插入图片描述
我们试着输出中文试试

//获取到OutputStream流ServletOutputStream servletOutputStream = response.getOutputStream();//向浏览器输出数据servletOutputStream.print("中国!");

出异常了!!!
在这里插入图片描述
为什么会出现异常呢?在io中我们学过,outputStream是输出二进制数据的,print()方法接收了一个字符串,print()方法要把“中国”改成二进制数据,Tomcat使用IOS 8859-1编码对其进行转换,“中国”根本对ISO 8859-1编码不支持。所以出现了异常

我们再看看write()方法,先向浏览器输出英文数据

response.getOutputStream().write("aaa".getBytes());

没有问题
在这里插入图片描述
再试试输出中文数据

response.getOutputStream().write("你好呀我是中国".getBytes());

貌似也没有问题。

在这里插入图片描述
为什么使用write()方法能够正常向浏览器输出中文呢?“你好呀我是中国”.getBytes()这句代码在转成byte[]数组的时候默认查的是gb2312编码,而"你好呀我是中国"支持gb2312编码,所以可以正常显示出来。

但是,程序要实现通用性,应该使用的是UTF-8编码,我们在字符串转换成字节数组时指定UTF-8编码,看看会怎么样。

response.getOutputStream().write("你好呀我是中国".getBytes("UTF-8"));

好的,成功把它搞成乱码了!!!
在这里插入图片描述
为什么它变成了乱码呢?原因是这样的:我在向服务器输出的中文是UTF-8编码的,而浏览器采用的是GBK,GBK想显示UTF-8的中文数据,不乱码才怪呢!
在这里插入图片描述
既然如此,我将浏览器的编码改成UTF-8试试。
在这里插入图片描述
乱码问题又解决了。可是,每次编写UTF-8程序时都要去网页上改编码格式吗?这样明显不可能的。

既然HTTP响应有对浏览器说明回送数据是什么类型的消息头,那么HttpServletResponse对象就应该有相对应的方法告诉浏览器回送的数据编码格式是什么

于是乎就去查找Servlet API,找到了设置消息头的方法

//设置头信息,告诉浏览器我回送的数据编码是utf-8的response.setHeader("Content-Type", "text/html;charset=UTF-8");response.getOutputStream().write("你好呀我是中国".getBytes("UTF-8"));

浏览器在显示数据时,自动把页面的编码格式置换成UTF-8,乱码问题也解决了
在这里插入图片描述
另外,除了使用HttpServletResponse对象设置消息头的方法,我可以使用html的标签模拟一个http消息头

下面是代码:

//获取到servletOutputStream对象ServletOutputStream servletOutputStream = response.getOutputStream();//使用meta标签模拟http消息头,告诉浏览器回送数据的编码和格式servletOutputStream.write("<meta http-equiv='content-type' content='text/html;charset=UTF-8'>".getBytes());servletOutputStream.write("我是中国".getBytes("UTF-8"));

乱码问题也可以解决
在这里插入图片描述

调用getWriter()方法向浏览器输出数据

对于getWriter()方法而言,是Writer的子类,那么只能向浏览器输出字符数据,不能输出二进制数据

使用getWriter()方法输出中文数据,代码如下:

//获取到printWriter对象PrintWriter printWriter = response.getWriter();printWriter.write("看完博客点赞!");

喜闻可见的事又出现了,我又出现乱码了。
在这里插入图片描述
为什么出现乱码了呢?由于Tomcat是外国人的写,Tomcat默认的编码是ISO 8859-1,当我们输出中文数据的时候,Tomcat会依据ISO 8859-1码表给我们的数据编码,中文不支持这个码表呀,所以出现了乱码

既然如此,我设置一下编码不就好了吗,代码如下:

        //原本是ISO 8859-1的编码,我设置成UTF-8response.setCharacterEncoding("UTF-8");//获取到printWriter对象PrintWriter printWriter = response.getWriter();printWriter.write("看完博客点赞!");

我再访问了一下,我的天!看起来更乱了!
在这里插入图片描述
为什么乱码问题还没有解决?细心的朋友会发现,我只是在中文转换的时候把码表设置成UTF-8,但是浏览器未必是使用UTF-8码表来显示数据的呀

好的,我们来看看浏览器的编码格式,果然,浏览器使用GB2312显示UTF-8的数据,不乱码才怪呢
在这里插入图片描述
这个问题我们在上面已经是有两种方法解决了【使用标签模拟消息头、设置消息头】,Servlet还提供了一个方法给我们

//设置浏览器用UTF-8编码显示数据response.setContentType("text/html;charset=UTF-8");

好的,我们再来访问一下
在这里插入图片描述
既然Servlet有那么多方法解决乱码问题,是不是有一种是最简便的呢?没错!下面这个方法是最简便的,它不仅设置浏览器用UTF-8显示数据,内部还把中文转码的码表设置成UTF-8了,也就是说,response.setContentType(“text/html;charset=UTF-8”);把response.setCharacterEncoding(“UTF-8”)的事情也干了!

使用getWriter()显示中文数据,只需要一个方法就搞掂了!

//设置浏览器用UTF-8编码显示数据,response.setContentType("text/html;charset=UTF-8");//获取到printWriter对象PrintWriter printWriter = response.getWriter();printWriter.write("看完博客点赞!");

在这里插入图片描述

实现文件下载

下载资源我们在日常中也很常用,它是怎么做到的呢?要能够给别人下载,服务器就应该有这个资源

现在我web站点下有一个图片了!
在这里插入图片描述
既然浏览器发送所有的请求都是去找Servlet的话,那么我就写一个Servlet,当别人访问我这个Servlet的时候,它们就可以下载我这个图片了!

java的文件上传下载都是通过io流来完成的,既然要下载图片,首先要能够读取到它

//获取到资源的路径String path = this.getServletContext().getRealPath("/download/1.png");//读取资源FileInputStream fileInputStream = new FileInputStream(path);//获取到文件名,路径在电脑上保存是\\形式的。String fileName = path.substring(path.lastIndexOf("\\") + 1);

告诉浏览器,我要下载这个文件

//设置消息头,告诉浏览器,我要下载1.png这个图片response.setHeader("Content-Disposition", "attachment; filename="+fileName);

将读取到的内容回送给浏览器

//把读取到的资源写给浏览器int len = 0;byte[] bytes = new byte[1024];ServletOutputStream servletOutputStream = response.getOutputStream();while ((len = fileInputStream.read(bytes)) > 0) {servletOutputStream.write(bytes, 0, len);}//关闭资源servletOutputStream.close();fileInputStream.close();

当我访问时,浏览器就提示下载了。

在这里插入图片描述
也可以成功打开!
在这里插入图片描述
现在问题又有了,如果我文件的名字是中文呢?
在这里插入图片描述
我们再访问一下,发现名字乱码了(怎么都是乱码)
在这里插入图片描述
为了解决文件名乱码,我们要进行URL编码,代码如下:

response.setHeader("Content-Disposition", "attachment; filename=" + URLEncoder.encode(fileName, "UTF-8"));

再次访问时,文件名乱码问题就解决了!
在这里插入图片描述

实现自动刷新

以规定的时间让页面刷新,更新资源

让浏览器实现自动刷新,那肯定又是修改消息头了。

//每3秒自动刷新网页一次response.setHeader("Refresh", "3");

为了更好的看效果,我们加入时间值进去

response.getWriter().write("time is :" + System.currentTimeMillis());

每三秒时间值就会发生变化
在这里插入图片描述
学完上面的,好像没有什么用,自己上网的时候谁看得见这样的东西。自动刷新,能够实现页面的跳转】

我们登陆完网站,很多时候都会看见【登陆成功,3秒后自动跳转…】,其实这个就是用Refresh来完成的。

response.setContentType("text/html;charset=UTF-8");response.getWriter().write("3秒后跳转页面.....");//三秒后跳转到index.jsp页面去,web应用的映射路径我设置成/,url没有写上应用名response.setHeader("Refresh", "3;url='/index.jsp'");

看下效果
在这里插入图片描述
在这里插入图片描述

设置缓存

浏览器本身就存在着缓存机制

当我第一次访问index.jsp时,浏览器向服务器发了两次请求【一个是网页的,一个是图片的】
在这里插入图片描述
当我第二次访问index.jsp的时候,浏览器将图片缓存起来了!图片不是重新加载的,是从缓存里面取出来的。
在这里插入图片描述
像股票类型的网页是不能取缓存的数据的,数据都是要不断更新的。下面我就禁止缓存的功能

//浏览器有三消息头设置缓存,为了兼容性!将三个消息头都设置了response.setDateHeader("Expires", -1);response.setHeader("Cache-Control","no-cache");response.setHeader("Pragma", "no-cache");//这里为了看效果PrintWriter printWriter = response.getWriter();printWriter.print("你好啊" + new Date().toString());

当然了,如果页面有些数据不长期更新,你就将它设置成缓存,这样可以提高服务器的性能

实现数据压缩

网页上的信息量是很大的,如果不将数据压缩再回送给浏览器,这样就十分耗费流量

现在我有一篇文章要输出给浏览器

        response.setContentType("text/html;charset=UTF-8");String ss = "fsdfhsdfhuisdhfusdhfuids" +"fsdfdsfsdfsdfdsfdafdsfhsdjfhsdjkfhkjds" +"fdsfjdslkfjsldkfjsdlkfjsdkfsdjkff" +"fsjdfjdsklfjdsklfjkldsfjlksdjflksdjflkds" +"dsjfklsdjflsdjfkldsfkjsdkfjsldkfjsdlfk" +"fdsjlkfjdslkfjsdlkfjlkasjflk";response.getWriter().write("原来的长度是:"+ss.getBytes().length+"</br>");//输出给浏览器response.getWriter().write(ss);

访问一下可以看到,原来的长度是201
在这里插入图片描述
压缩的原理是什么?我们知道getOutputStream()和getWriter()都是直接把数据输出给浏览器的。现在我要做的就是让数据不直接输出给浏览器,先让我压缩了,再输出给浏览器。java提供了GZIP压缩类给我们

就让我们使用GZIP类来对数据压缩吧

//GZIP的构造方法需要一个OutputStream子类对象,究竟哪个对象适合,我们看下write()方法GZIPOutputStream gzipOutputStream = new GZIPOutputStream();//查看了下API,write()接收的是byte[]类型的。gzipOutputStream.write();

于是我就在构造函数上传递个ByteArrayOutputStream给它

//既然是byte[]类型,那么我就给他一个ByteArrayOutputStreamGZIPOutputStream gzipOutputStream = new GZIPOutputStream(new ByteArrayOutputStream());

而用GZIPOutputStream写数据的时候,是把数据写到ByteArrayOutputStream上的,等会还要把数据取出来,再写给浏览器,于是就不能以匿名内部类的方式给GZIPOutputStream,必须把ByteArrayOutputStream定义出来,

//创建GZIPOutputStream对象,给予它ByteArrayOutputStreamByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();GZIPOutputStream gzipOutputStream = new GZIPOutputStream(byteArrayOutputStream);//GZIP对数据压缩,GZIP写入的数据是保存在byteArrayOutputStream上的gzipOutputStream.write(ss.getBytes());//gzipOutputStream有缓冲,把缓冲清了,并顺便关闭流gzipOutputStream.close();

把压缩后的数据取出来,写给浏览器

          //将压缩的数据取出来byte[] bytes = byteArrayOutputStream.toByteArray();//将压缩的数据写给浏览器response.getOutputStream().write(bytes);

我们来对比一下压缩前的大小和压缩后的大小
在这里插入图片描述
数据的确是压缩了,然而,为什么又乱码了啊?很简单,既然你压缩了数据,你写给浏览器,浏览器是不知道你这是压缩后的数据,它是以正常的方式打开数据的。这当然造成乱码啦!,现在我要告诉浏览器我这是压缩数据

//告诉浏览器这是gzip压缩的数据response.setHeader("Content-Encoding","gzip");//再将压缩的数据写给浏览器response.getOutputStream().write(bytes);

再次访问一下
在这里插入图片描述

生出随机图片

生成随机图片这是非常常见的。在我们登陆的时候经常要写验证码,而那些验证码是一张图片,就是通过HttpServletResponse写给浏览器的。

要生成一张图片,java提供了BufferedImage类供我们使用

//在内存中生成一张图片,宽为80,高为20,类型是RGBBufferedImage bufferedImage = new BufferedImage(80, 20, BufferedImage.TYPE_INT_RGB);//获取到这张图片Graphics graphics = bufferedImage.getGraphics();//往图片设置颜色和字体graphics.setColor(Color.BLUE);graphics.setFont(new Font(null, Font.BOLD, 20));//往图片上写数据,先写个12345,横坐标是0,纵坐标是20【高度】graphics.drawString("12345", 0, 20);

好的,现在我们在内存中创建了一张图片,并写上了12345。接着,我们要把图片写给浏览器了。把图片写给浏览器,java又提供了图片流【ImageIO】给我们使用

//要往浏览器写一张图片,那要告诉浏览器回送的类型是一张图片response.setHeader("ContentType", "jpeg");//java提供了图片流给我们使用,这是一个工具类//把图片传进去,类型是jpg,写给浏览器ImageIO.write(bufferedImage, "jpg", response.getOutputStream());

我们来访问一下,看下图片长什么样
在这里插入图片描述
这样太丑了,我们把背景改成白色看看

//把白色填充整张图片graphics.setColor(Color.white);graphics.fillRect(0, 0, 80, 20);

再看看效果,这明显好看多了
在这里插入图片描述
好的,我们的图片数字不可能是人工写的,数字应该是随机产生的!这个就简单了。现在我要生成7位的随机数,生成随机数的方法如下

private String makeNum() {Random random = new Random();//这样就会生成0-7位的随机数,现在问题又来了,如果随机数不够7位呢?如果不够7位,我们加到7位就行了int anInt = random.nextInt(9999999);//将数字转成是字符串String num = String.valueOf(anInt);//判断位数有多少个,不够就加StringBuffer stringBuffer = new StringBuffer();for (int i = 0; i < 7 - num.length(); i++) {stringBuffer.append("0");}return stringBuffer.append(num).toString();}

如果要生成中文,就找中文映射表即可。

重定向跳转

什么是重定向跳转呢?点击一个超链接,通知浏览器跳转到另外的一个页面就叫重定向跳转。是通知浏览器去跳转,这很重要。页面之间的跳转有两种方式:重定向和转发,至于什么时候用重定向,什么用转发,我在讲完HttpServletRequest对象的时候会详细说明。

我们来使用以下HttpServletResponse对象的重定向

//重定向到index.jsp页面response.sendRedirect("/zhongfucheng/index.jsp");

在浏览器的地址栏访问Servlet222
在这里插入图片描述
跳转到index.jsp页面,地址栏发生了变化
在这里插入图片描述
我们再来看看http协议发生了什么
在这里插入图片描述
从图上看,我们看到了两个状态码,一个是302。一个是200。302状态码在http协议中代表的是临时重定向。举个例子:我找纪律委员说:给我一份请假表,我要回家。纪律委员告诉我:我这里没有请假表,你去找辅导员吧。再看回我访问Sevlet222时:我找Servlet222,Servlet222告诉浏览器:我没有你想要的资源,你要的资源在index.jsp页面中,你自己去找吧。

很容易看出重定向是通过302状态码和跳转地址实现的。于是乎,我们设置http消息头就可以实现重定向跳转

//设置状态码是302response.setStatus(302);//HttpServletResponse把常用的状态码封装成静态常量了,所以我们可以使用SC_MOVED_TEMPORARILY代表着302response.setStatus(HttpServletResponse.SC_MOVED_TEMPORARILY);//跳转的地址是index.jsp页面response.setHeader("Location", "/zhongfucheng/index.jsp");

其实sendRedirect()方法就是对setStatus()和setHeader()进行封装,原理就是setStatus()和setHeader()

getWriter和getOutputStream细节

  1. getWriter()和getOutputStream()两个方法不能同时调用。如果同时调用就会出现异常
  2. Servlet程序向ServletOutputStream或PrintWriter对象中写入的数据将被Servlet引擎从response里面获取,Servlet引擎将这些数据当作响应消息的正文,然后再与响应状态行和各响应头组合后输出到客户端。
  3. Servlet的serice()方法结束后【也就是doPost()或者doGet()结束后】,Servlet引擎将检查getWriter或getOutputStream方法返回的输出流对象是否已经调用过close方法,如果没有,Servlet引擎将调用close方法关闭该输出流对象.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/557183.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

spring三种注入方式

设置Spring的作用域 或者使用枚举值设置 单例和多里使用场景 自动注入 Primary 一个接口有多个实现被spring管理吗&#xff0c;在依赖注入式&#xff0c;spring会不知道注入哪个实现类就会抛出NoUniqueBeanDefinitionException异常 使用Primary 来告诉Spring 注入哪个实现…

java虚拟机1.7_《Java虚拟机原理》7.1 精选 —— 总览

1.一个程序在 JVM 中运行的完整流程java程序执行流程.JPG说明&#xff1a;① 类加载器把字节码加载到方法区② 方法区的字节码被 JVM new&#xff0c;在堆内存中生成字节码对象③ 字节码对象被 GC 的要求有&#xff1a;该类没有在其他任何地方被引用&#xff1b;该类的所有的实…

Servlet第四篇【request对象常用方法、应用】

什么是HttpServletRequest HttpServletRequest对象代表客户端的请求&#xff0c;当客户端通过HTTP协议访问服务器时&#xff0c;HTTP请求头中的所有信息都封装在这个对象中&#xff0c;开发人员通过这个对象的方法&#xff0c;可以获得客户这些信息。 简单来说&#xff0c;要…

java 设置控制台标题_修改Tomcat控制台标题以及标题乱码处理

双击“startup.bat”启动Tomcat&#xff0c;控制台默认标题是Tomcat&#xff0c;如下图&#xff1a;修改标题很容易&#xff0c;编辑catalina.bat这个文件(跟startup.bat在同级目录下)&#xff0c;编辑的时候建议使用notepad、editplus之类的工具。然后找到如下代码片段(大约在…

Servlet第五篇【介绍会话技术、Cookie的API、详解、应用】

什么是会话技术 基本概念: 指用户开一个浏览器&#xff0c;访问一个网站,只要不关闭该浏览器&#xff0c;不管该用户点击多少个超链接&#xff0c;访问多少资源&#xff0c;直到用户关闭浏览器&#xff0c;整个这个过程我们称为一次会话. 为什么我们要使用会话技术&#xff1…

Servlet第六篇【Session介绍、API、生命周期、应用、与Cookie区别】

什么是Session Session 是另一种记录浏览器状态的机制。不同的是Cookie保存在浏览器中&#xff0c;Session保存在服务器中。用户使用浏览器访问服务器的时候&#xff0c;服务器把用户的信息以某种的形式记录在服务器&#xff0c;这就是Session 如果说Cookie是检查用户身上的”…

Tomcat+Servlet面试题都在这里

下面是我整理下来的Servlet知识点: 图上的知识点都可以在我其他的文章内找到相应内容。 Tomcat常见面试题 Tomcat的缺省端口是多少&#xff0c;怎么修改 找到Tomcat目录下的conf文件夹进入conf文件夹里面找到server.xml文件打开server.xml文件在server.xml文件里面找到下列…

java sdk下载_Java Sdk下载 | 保利威帮助中心

播放界面开发前准备1.小程序微信开发者后台设置-开发设置-服务器域名中配置 [request合法域名]开始开发1.获取频道直播播放地址index.wxmlindex.js选项说明uid类型&#xff1a;String说明&#xff1a;直播账户idvid类型&#xff1a;String说明&#xff1a;直播频道idvideoConte…

mysql union 与 union all 语法及用法

1.mysql union 语法 mysql union 用于把来自多个select 语句的结果组合到一个结果集合中。语法为&#xff1a; select column,......from table1union [all]select column,...... from table2...在多个select 语句中&#xff0c;对应的列应该具有相同的字段属性&#xff0c…

Golang基础知识入门详解

Go语言入门 Go语言入门教程 很多人将 Go 语言 称为 21 世纪的 C 语言&#xff0c;因为 Go 不仅拥有 C 语言的简洁和性能&#xff0c;而且还很好的提供了 21 世纪互联网环境下服务端开发的各种实用特性&#xff0c;让开发者在语言级别就可以方便的得到自己想要的东西。 在 Go…

udp模拟tcp java_Java简单实现UDP和TCP

TCP实现TCP协议需要在双方之间建立连接&#xff0c;通过输入输出流来进行数据的交换&#xff0c;建立需要通过三次握手&#xff0c;断开需要四次挥手&#xff0c;保证了数据的完整性&#xff0c;但传输效率也会相应的降低。简单的TCP实现//服务端public class TcpServer {publi…

ant java 返回_使用Ant自动化我们的java项目生成

现在我们已经了解如何定义属性、依赖关系以及如何运行ant&#xff0c;接下来我们将学习怎样使用ant编译java源代码并生成jar文件。编译源代码由于Ant的主要目标就是生成java应用程序&#xff0c;它内置了javac任务来调用java的编译器。此任务一般定义如下Ant会寻找src目录下所有…

Spring boot自定义启动字符画(banner)

其实很好改&#xff0c;只需要在resources下新建一个txt文件就可以&#xff0c;命名为banner.txt&#xff0c;那这种字符该怎么拼出来呢&#xff0c;下面推荐一个网址&#xff0c;有这种工具&#xff0c;链接传送门&#xff1a;打开传送门 直接输入要生成的字母&#xff0c;系…

模拟天天酷跑游戏java_cocos2d 简单高仿天天酷跑游戏

1.先直接上视频来看下这个游戏的样子(GIF已经不能满足这个游戏的展示了)跑酷游戏最纠结的是地图&#xff0c;碰撞倒是简单&#xff0c;可以自己写或者使用box2d等物理引擎。跑酷游戏地图的特点就是随机性。但是随机中又有策划特意安排的部分&#xff0c;这样让玩家有小小惊喜。…

spring源码阅读--aop实现原理分析

aop实现原理简介 首先我们都知道aop的基本原理就是动态代理思想&#xff0c;在设计模式之代理模式中有介绍过这两种动态代理的使用与基本原理&#xff0c;再次不再叙述。 这里分析的是&#xff0c;在spring中是如何基于动态代理的思想实现aop的。为了方便了解接下来的源码分析…

java muki_再次学习 java 类的编译

做JAVA开发的都知道myeclipse&#xff0c; 我们在myeclipse中新建一个类&#xff0c;然后保存&#xff0c; 如何正常的话&#xff0c;那么在项目指定的目录(也就是项目的output目录)就会生成同名的class文件&#xff0c;可是&#xff0c;我们都知道myeclipse中的类的编译的原理…

spring源码阅读--@Transactional实现原理

Transactional注解简介 Transactional是spring中声明式事务管理的注解配置方式&#xff0c;相信这个注解的作用大家都很清楚。Transactional注解可以帮助我们把事务开启、提交或者回滚的操作&#xff0c;通过aop的方式进行管理。通过Transactional注解就能让spring为我们管理事…

MySQL 普通索引和唯一索引的区别详解

1 概念区分 普通索引和唯一索引 普通索引可重复&#xff0c;唯一索引和主键一样不能重复。 唯一索引可作为数据的一个合法验证手段&#xff0c;例如学生表的身份证号码字段&#xff0c;我们人为规定该字段不得重复&#xff0c;那么就使用唯一索引。&#xff08;一般设置学号字…

win8.1已阻止java_win8系统下打开java程序时出现应用程序已被安全设置阻止的解决方法...

今天和大家分享一下win7系统下打开java程序时出现应用程序已被安全设置阻止问题的解决方法&#xff0c;在使用win7系统的过程中经常不知道如何去解决win7系统下打开java程序时出现应用程序已被安全设置阻止的问题&#xff0c;有什么好的办法去解决win7系统下打开java程序时出现…

MySql常用函数大全

MySql常用函数大全 MySQL数据库中提供了很丰富的函数。MySQL函数包括数学函数、字符串函数、日期和时间函数、条件判断函数、系统信息函数、加密函数、格式化函数等。通过这些函数&#xff0c;可以简化用户的操作。例如&#xff0c;字符串连接函数可以很方便的将多个字符串连接…