圣思园java web 部分上课笔记

合集下载

学习笔记之圣思园-Java-Web培训视频

学习笔记之圣思园-Java-Web培训视频

1.很重要的一个图:jsp执行的粗略流程2.更重要的一个图:jsp执行的详细流程注:上图说明一个大真相,这个真相就是不管jsp是什么样子,最终都会转换成servlet。

这是为什么呢,因为sun公司最早研发的是servlet,但是servlet开发很繁琐,为了解决这个问题,sun公司又开发了jsp,然后servlet又是个很成熟的技术,所以sun公司就把jsp转换成servlet去执行,这样就有了今天的这种情况。

3.一个纯的html页面不能算是严格意义上的jsp页面,必须要加入jsp 元素或者是java代码的页面才算是严格意义上的jsp页面。

Jsp页面都会引入如下代码:<%@ page language="java" import="java.util.* "pageEncoding="UTF-8"%> 此句代码就是在说明可以引入java代码,而且还导入的util类。

这跟一般的html是不一样的。

3.当服务器将jsp转换成servlet的时候,会将jsp中的声明转换成类的成员变量,而将脚本段转换成方法中的局部变量(这个可以在转换后的java文件中看到)。

Servlet是单实例的,这样成员变量的值就只有一个,每个用户都会访问到它,都可以修改它。

而脚本段中的值则是局部变量,每个用户访问的时候各有一份,互不影响。

4.“Page”指令用于定义jsp文件中的全局属性。

作用于整个jsp页面,同样包括静态的包含文件(是否是<%@ include %>)。

但是不能作用于动态的包含文件,比如”<jsp:include>”。

5.Import=”package.class”.下面的包在jsp编译时已经导入了,所以不再需要导入了:ng.*;javax.servlet.*;javax.servlet.jsp.*;javax.servlet.http.* 6.forward7.学jsp有什么不懂的,看看转换之后的servlet或许就明白了。

javaweb笔记

javaweb笔记

//include_deom.jsp 总包含页面 <%@ page language="java" contentType="text/html" pageEncoding="GBK"%> <html> <head>
<title> </title> </head> <body> <%@include file="info.jsp"%> <br> <%@include file="info.html"%> <br> <%@include file="info.inc"%> <br> </body> </html>
如果多个 application 是性能肯定有降低 所以:能使用 page 就不要使用 request,能使用 request 就不要使用 session,能使用 session 则不要使用 application,保存范围越窄则服务器的压力就越小
◆◆◆◆pageContex 决定四种范围◆◆◆◆@@@ pageContext.setAttribute("admin","YangLian",REQUEST_SCOPE); pageContext.setAttribute("admin","YangLian",APPLICATION_SCOPE); pageContext.setAttribute("admin","YangLian",SESIION_SCOPE); pageContext.setAttribute("admin","YangLian",PAGE_SCOPE);

java web笔记

java web笔记

java web笔记JavaWeb是一种基于Java语言开发的Web应用程序开发技术,其主要模块包括Servlet、JSP、JavaBean以及Java EE(Enterprise Edition)等。

1. ServletServlet是一种Java程序,用于处理HTTP请求和响应。

它可以接收来自客户端的HTTP请求并生成HTTP响应。

Servlet实现了javax.servlet.Servlet接口,可以在Web容器中运行。

Servlet可以通过doGet()、doPost()等方法处理HTTP请求,通过request对象获取请求参数,通过response对象生成响应内容。

Servlet还可以通过init()方法进行初始化,通过destroy()方法进行终止。

2. JSPJSP是Java Server Pages的缩写,它是一种基于HTML和Java 的Web开发技术。

JSP可以将Java代码嵌入到HTML页面中,以便动态生成Web页面。

JSP页面可以使用JavaBean来处理业务逻辑,在JSP中使用标签库可以简化开发,如JSTL标签库、EL表达式等。

3. JavaBeanJavaBean是一种Java类,它封装了应用程序中的数据和业务逻辑。

JavaBean通常包含get/set方法,可以通过这些方法访问和修改JavaBean中的属性。

JavaBean的作用是将数据和业务逻辑分离,使得应用程序具有更高的可维护性和可重用性。

4. Java EEJava EE是Java平台的企业版,它提供了一系列API和规范,用于开发大型分布式Web应用程序。

Java EE包含了Servlet、JSP、JavaBean等技术,还提供了EJB(Enterprise Java Bean)、JPA(Java Persistence API)、JMS(Java Message Service)等高级技术。

Java EE还包含了Web容器和应用服务器,如Tomcat、WebLogic、WebSphere等,这些容器可以运行Java Web程序,提供了对Java Web 程序的支持和管理。

Java Web学习笔记

Java Web学习笔记

一、J SP基础知识回顾2.2 JSP元素组成JSP文件由6类基本元素组成:✧JSP指令✧JSP声明✧JSP表达式✧JSP脚本✧JSP动作✧JSP注释2.2.1 JSP指令JSP指令的语法格式如下:<%@ 指令名属性="值" 属性="值"%>常用的三种指令为:✧page指令✧include指令✧taglib指令2.2.1.1 page指令page指令用于设置页面的各种属性,如导入包、指明输出内容类型、控制Session等。

page指令一般位于JSP页面的开头部分,一个JSP页面可包含多条page指令。

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> 2.2.1.2 include指令include指令用于在当前JSP中包含其他文件。

被包含的文件可以是JSP、HTML或文本文件。

包含的过程发生在将JSP翻译成Servlet时,当前JSP和被包含的JSP会融合到一起,形成一个Servlet,然后进行编译并运行。

例如:<%@ include file="./top.jsp" %>2.2.1.3 taglib指令taglib指令用于指定JSP页面所使用的标签库,通过该指令可以在JSP页面中使用标签库中的标签。

例如:<%@ taglib uri="/jsp/jstl/core" prefix="c" %>2.2.2 JSP声明JSP声明用于在JSP页面中定义变量和方法。

JSP声明通过“<%! %>”定义。

一个JSP页面可以有多个声明,并且每个声明中可以同时定义多个变量或方法,其中,每个JSP声明只在当前JSP页面中有效。

javaweb快速复习笔记

javaweb快速复习笔记

javaweb 快速复习笔记javaweb 详解⼀.TomcatTomcat 是Apache 软件基⾦会(Apache Software Foundation )的Jakarta 项⽬中的⼀个核⼼项⽬,由Apache 、Sun 和其他⼀些公司及个⼈共同开发⽽成。

Tomcat 服务器是⼀个免费的开放源代码的Web 应⽤服务器,属于轻量级应⽤服务器,在中⼩型系统和并发访问⽤户不是很多的场合下被普遍使⽤,是开发和调试JSP 程序的⾸选。

对于⼀个初学者来说,可以这样认为,当在⼀台机器上配置好Apache 服务器,可利⽤它响应HTML (标准通⽤标记语⾔下的⼀个应⽤)页⾯的访问请求1. javaWeb 本体的⽬录:该⽬录下存放的是⼆进制可执⾏⽂件,如果是安装版,那么这个⽬录下会有两个exe ⽂件:tomcat8.exe 、tomcat8w.exe ,前者是在控制台下启动Tomcat ,后者是弹出UGI 窗⼝启动Tomcat ;如果是解压版,那么会有startup.bat 和shutdown.bat ⽂件,startup.bat ⽤来启动Tomcat ,但需要先配置JAVA_HOME 环境变量才能启动,shutdawn.bat ⽤来停⽌Tomcat ;:这是⼀个⾮常重要的⽬录,这个⽬录下有四个最为重要的配置⽂件.:配置整个服务器信息。

例如修改端⼝号,添加虚拟主机等;:存储tomcat ⽤户的⽂件,这⾥保存的是tomcat 的⽤户名及密码,以及⽤户的⾓⾊信息。

可以按着该⽂件中的注释信息添加tomcat ⽤户,然后就可以在Tomcat 主页中进⼊Tomcat Manager 页⾯了;:部署描述符⽂件,这个⽂件中注册了很多MIME 类型,即⽂档类型。

这些MIME 类型是客户端与服务器之间说明⽂档类型的,如⽤户请求⼀个html ⽹页,那么服务器还会告诉客户端浏览器响应的⽂档是text/html 类型的,这就是⼀个MIME 类型。

Javaweb笔记

Javaweb笔记

Java web笔记集中式应用系统1、结构:有一个大型的中央系统和许多终端组成,数据及所有的业务处理都有中央系统来完成,终端只负责和用户的交互。

2、优点:备份容易、成本相对较低。

3、缺点:效率低。

分布式应用系统1.结构:数据的存储和处理有很多不同的系统来完成。

2.优点:效率高,能适应用户的不同需求,资源能够在最大程度上共享。

3.缺点:备份困难、成本稍高,安全性低。

分布式应用种类1.两层结构:代表性为C/S结构:client/Server结构,server通常只是一个数据库服务器,client做大部分的业务逻辑的处理。

a)优点:性能较好、交互性强。

b)缺点:安装升级困难,开发成本较高。

2.三层结构:与两层结构相比,三层结构在客户端和服务器之间加了一个中间层,中间层主要用来处理用户的业务逻辑。

三层主要为c)数据层:主要用来保存数据,负责从数据库中读写数据。

d)中间层:也叫功能层,主要用来负责业务逻辑的处理。

e)客户层:主要用来和用户打交道,负责显示和发送请求。

i..优点:a)系统的逻辑结构非常清晰。

b)系统的升级相对容易。

ii.缺点:a)速度相对较慢。

b)交互性差。

3.B/S结构:是三层结构的一种典型代表,客户端有Browser来担任。

f)优点:安装,升级非常方便。

N层结构:1、client:2、control:控制类3、service:业务逻辑4、DATA server:B/S结构和C/S结构的差异1.结构不同:2.系统维护不同:3.速度不同:4.硬件环境不同:B/S通常是部署广域网上,C/S通常是部署在局域网上。

web应用的相关知识1、超文本:2、超媒体:3、web:是一个包含超文本和超媒体的信息系统。

4、web历史5、web特点:a)易于导航。

b)与平台无关。

c)是分布式的。

d)可以是动态的。

6、web资源:是互联网上的一种信息,分布于全球不同的计算机的。

分为:a)静态资源:静态的文件,比如HMTL。

北京圣思园java课堂笔记

北京圣思园java课堂笔记

JAVA SE Lesson 11. 类是一种抽象的概念,对象是类的一种具体表示形式,是具体的概念。

先有类,然后由类来生成对象(Object)。

对象又叫做实例(Instance)。

2. 类由两大部分构成:属性以及方法。

属性一般用名词来表示,方法一般用动词来表示。

3. 如果一个java源文件中定义了多个类,那么这些类中最多只能有一个类是public的,换句话说,定义的多个类可以都不是public的。

4. 在Java中进行方法的参数传递时,无论传递的是原生数据类型还是引用类型,参数传递方式统一是传值(pass by value)。

Java中没有传引用(pass by reference)的概念。

5. 方法重载(Overload)。

表示两个或多个方法名字相同,但方法参数不同。

方法参数不同有两层含义:1)参数个数不同。

2)参数类型不同。

注意:方法的返回值对重载没有任何影响。

6. 构造方法重载:只需看参数即可。

如果想在一个构造方法中调用另外一个构造方法,那么可以使用this()的方式调用,this()括号中的参数表示目标构造方法的参数。

this()必须要作为构造方法的第一条语句,换句话说,this()之前不能有任何可执行的代码。

7. 继承(Inheritence):Java是单继承的,意味着一个类只能从另一个类继承(被继承的类叫做父类【基类,base class】,继承的类叫做子类),Java中的继承使用extends关键字。

8. 当生成子类对象时,Java默认首先调用父类的不带参数的构造方法,然后执行该构造方法,生成父类的对象。

接下来,再去调用子类的构造方法,生成子类的对象。

【要想生成子类的对象,首先需要生成父类的对象,没有父类对象就没有子类对象。

比如说:没有父亲,就没有孩子】。

9. super关键字:super表示对父类对象的引用。

10. 如果子类使用super()显式调用父类的某个构造方法,那么在执行的时候就会寻找与super()所对应的构造方法而不会再去寻找父类的不带参数的构造方法。

JAVA WEB研学笔记

JAVA WEB研学笔记

Java-Web研学笔记JA V A WEB研学笔记内容一、JAVA WEB学习与上机操作的详细过程1、阅读了教材或参考资料上的哪些内容?1)在Tomcat中发布JavaWeb应用主要内容有:Tomcat简介、安装、环境变量设置,在webapps目录下创建JavaWeb应用:在Tomcat中发布JavaWeb应用的最快捷的方式,就是直接把JavaWeb应用的所有文件复制到Tomcat安装目录下的webapps目录下。

在默认情况下,Tomcat安装目录下的webapps目录下所有Web应用运行在名为“localhost”的虚拟主机中,在发布应用时,就不需要再在配置文件中做相应的配置了。

2)javaWeb开发之四种数据库连接——Acess、MySQL、sqlserver 2005、oracle①Acess连接方法:Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver“) ;String.url=“jdbc:odbc:Driver={MicroSoft Access Driver (*.mdb)};DBQ=“+application.getRealPath(“/Data/ReportDemo.mdb“);Connection.conn = DriverManager.getConnection(url,““,“”);Statement.stmtNew=conn.createStatement() ;②MySql连接方法Class.forName(“org.gjt.mm.mysql.Driver“).newInstance();Stringurl=“jdbc:mysql://localhos t/myDB?user=soft&password=soft1234&useUnicode=true&characterEncoding=8859_1“;//myDB为数据库名Connection.conn= DriverManager.getConnection(url);③sqlserver2005连接方法Class.forName(“com.microsoft.jdbc.sqlserver.SQLServerDriver“).newInstance();Stri ng.url=“jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=mydb“;//mydb为数据库er=“sa“;String.password=““;Connection.conn= DriverManager.getConnection(url,user,password);④Oracle连接方法Class.forName(“oracle.jdbc.driver.OracleDriver“).newInstance();String.url=“jdbc:oracle:thin:@localhost:1521:orcl“; //orcl为数据库的SIDer=“system“;String.password=“system“;Connection.conn=DriverManager.getConnection(url,user,password);3)struts1、struts2简介Struts的起源Struts最早是作为Apache Jakarta项目的组成部分问世运做。

JavaWeb入门笔记

JavaWeb入门笔记

JavaWeb⼊门笔记Java web笔记⼀、HTTP协议HTTP(超⽂本传输协议),它是⼀种主流B/S架构中应⽤的通信协议。

具有以下特点:1、⽆状态服务端不会记录客户端每次提交的请求,服务器⼀旦相应客户端之后,就会结束本次的通信过程。

客户端下⼀次的请求是⼀个新的连接,和上⼀次通信没有任何关系。

2、简单灵活HTTP是基于请求(request)和响应(response)的模型3、⽀持客户端与服务端⽀持主流的B/S架构的通信以及C/S架构的通信。

注意:C/S架构可选的协议有多种,例如:TCP/IP,UDP,HTTP⽽B/S架构通常只⽀持HTTP协议⼆、服务器1、概念服务器通常由硬件和软件部分构成,统⼀对⽤户提供多种不同的服务。

1、硬件:包括响应的CPU、内存、磁盘等等2、软件:包括操作系统、运⾏环境、服务器软件、数据库等等2、web服务器web服务器是提供服务端程序运⾏的⼀个环境,它本⾝也是⼀个软件。

例如:将我们编写HTML⽂件放⼊到web服务器中,那么外界就可以通过浏览器访问我们的html页⾯常见的web服务器有Apache,Tomcat、Jetty、Nginx等等。

⽽Tomcat、Jetty这些web服务器更准确的说是⼀个Servlet容器。

三、JavaWeb项⽬结构项⽬根⽬录,例如:myweb、ch01通常存放静态资源⽂件(如:html等等)WEB-INF这个⽬录是当前项⽬私有的⼀个⽂件夹,只能提供给项⽬内部访问,对于客户端来说是访问不到了,通常这个⽬录下存放的是Java源代码、编译后的字节码⽂件以及Servlet的核⼼配置⽂件web.xmlsrc存放java源代码的⽬录classes存放编译后的字节码⽂件lib lib⽬录存放当前项⽬所需要的jar⽂件JSP⽤于存放JSP动态页⾯web.xml项⽬的配置⽂件,⽤于配置Servlet的请求映射、过滤器、监听器等等信息。

每⼀个web项⽬都对应⼀个web.xml配置⽂件META-INF配置应⽤程序、扩展程序、类加载服务等等四、Servlet基础1、什么是ServletServlet是JavaEE中标准组件,专门⽤于处理客户端提交的HTTP请求。

Java web笔记

Java web笔记

Java web笔记Java Web开发是指使用Java语言进行Web应用程序开发的过程,其中使用了一系列的Java技术与框架。

Java Web开发的基础是Java语言,其提供了丰富的功能与工具集,用于开发具有动态功能且可扩展性强的Web应用。

Java Web开发的核心框架是JavaEE(Java Enterprise Edition),它提供了一系列的API与功能,用于处理Web应用的开发、部署与运行。

JavaEE包括了Servlet、JSP、EJB、JMS等模块,提供了Web应用所需的处理HTTP请求、会话管理、数据库操作、事务处理等功能。

在Java Web开发中,Servlet是JavaEE中的核心组件之一。

Servlet是一个Java类,可以接收、处理并响应HTTP请求。

它运行在Web服务器上,并通过JavaEE容器来管理其生命周期及资源。

开发者可以通过继承HttpServlet类来实现自己的Servlet,并覆盖doGet()、doPost()等方法来处理HTTP请求。

除了Servlet外,JSP(Java Server Pages)也是Java Web开发中常用的技术之一。

JSP是一种基于HTML的模板技术,允许开发者在HTML页面中嵌入Java代码。

JSP页面在首次请求时会被编译为Servlet,然后被容器执行。

为了简化Java Web开发,许多开发者使用了一些流行的框架,如Spring、Struts和Hibernate等。

这些框架提供了一系列的工具和功能,用于简化Web应用开发过程中的一些常见任务,如依赖注入、ORM映射、表单验证等。

Spring是一种轻量级的Java开发框架,提供了一套全面的解决方案,用于构建企业级应用。

它包括了Spring Core、Spring MVC、Spring Boot等模块,为开发者提供了灵活的配置方式和强大的功能。

Hibernate是一个流行的对象关系映射(ORM)框架,用于简化数据库操作。

javaWeb 课堂笔记

javaWeb 课堂笔记

一、weba)web结构b)常见的服务器a.WebLogic: orcale公司的产品,支持JAVAEE规范,收费b.WebsphereAS: IBM公司的产品,支持JAVAee规范,收费c.Jboss: red公司的产品,支持EJB,免费d.Tomcat:apache公司产品支持JavaEE规范,免费容器:实现了什么样的规范,就称为什么样的容器c)tomcat的版本d)常见启动问题a.端口号冲突修改D:\apache-tomcat-6.0.39\conf\server.xml文件b.闪退. 一般需要设置java_home环境变量e)tomcat目录结构f).应用程序的目录结构(死了都要记住)app*.html(静态)*.css*.js图片WEB-INF : 文件夹(必须大写,不是必须的,当有动态的资源的时候,此文件夹必须写上) :下面的资源不允许浏览器直接访问,里面的资源是提供给服务器来访问的,我们可以间接的去访问.web.xml : 必须的(WEB-INF文件夹存在的前提下)classes: 放置的是Java字节码文件lib: 放置的是本工程应用所用到的jar包g)应用程序的部署方式i.将应用程序直接拷贝到webapps目录下ii.将应用程序打成war包, 直接拷贝到webapps目录下在dos命令窗口下键入:jar –cvf 名字.war .h)tomcat的组成结构I)各种配置a ) : 虚拟应用:●(此种配置不推荐)1.在server.xml文件中配置如下2.通过浏览器输入http://localhost:8080/abc/1.html来访问缺点:必须重新启动服务器●在conf/catalina/localhost/目录下随意建立一个xml文件,文件名任意(eg: abcde.xml)。

(不需要重启服务器) 推荐使用内容如下:虚拟路径就是文件名我们通过浏览器访问:http://localhost:8080/abcde/a.html来访问实际开发时采用直接拷贝文件夹到webapps目录下b) : 默认应用的配置只需要在conf/catalina/localhost/目录下建立一个ROOT.xml文件,内容同上,这个应用就是默认应用访问的时候通过URL: http://localhost:8080/a.html来访问c): 配置默认页面,端口号的修改需要在我们应用目录下app1/WEB-INF目录下配置web.xml文件配置如下:端口号修改需要在server.xml文件中配置:默认端口号配置完毕需要重新启动服务器.通过http://localhost:8888/abcd/来访问可以配置成默认的端口号:80d).配置多个虚拟主机(了解)假设e盘有个目录app1下有个应用appd盘有个目录app下有个应用app2则在server.xml中配置如下:在C:\WINDOWS\system32\drivers\etc\hosts中配置路径的IP映射如下:此时就可以通过浏览器访问应用了:/app/a.html 访问e盘app1/app应用下的a.html页面/app2/a.html 访问d盘app/app2应用下的a.html页面注意:以上端口号是默认的80,可以修改。

JAVAWEB课堂笔记

JAVAWEB课堂笔记

TOMCAT手动部署WEB工程TOMCAT目录结构tomcat┗━webapps该目录存放所有的web工程┗━TestServlet自己建的web工程┣━WEB-INF┣web.xml 工程配置文件┣━classes该目录存放Servlet程序文件┃┗UserReg.class┗━lib该目录存放该项目所需要的额外jar包┗mysql-connector-java-5.1.28-bin.jar解决Servlet中文乱码问题使用Filter过滤器统一拦截所有的请求,将request和response的字符集都设为UTF-8 request.setCharactorEncoding("UTF-8");不过这样对于get请求的request仍然无效,可以在tomcat配置文件server.xml中修改配置:<Connector port="8080" protocol="HTTP/1.1"connectionTimeout="20000"redirectPort="8443" URIEncoding="UTF-8"/>增加红色部分这是告诉服务器,对于请求路径(URI)也按照UTF-8的字符集来转换数据Servlet请求转发和重定向请求转发:request.getRequestDispatcher("/home.jsp").forward(request, response);请求重定向:response.sendRedirect("/home.jsp")二者的区别,除了在浏览器地址栏的表现之外。

还有request对象的共享。

对于请求转发来讲,由于在转发的过程中,request和response对象从A 传递到了B,因此在B 中仍然可以使用之前的request对象,获取request当中的数据。

javaweb学习笔记

javaweb学习笔记

javaweb学习笔记JavaWeb学习笔记一、JavaWeb概述JavaWeb是Java技术应用于Web开发领域的简称,它使用Java技术来开发动态的、交互式的Web应用程序。

JavaWeb应用程序可以运行在各种支持Java的平台上,包括Windows、Linux、Mac等。

二、JavaWeb核心技术1.ServletServlet是JavaWeb的核心技术之一,它是一个Java类,用于处理客户端请求和生成动态Web页面。

Servlet运行在Web服务器或应用服务器上,接收客户端的请求,并将结果返回给客户端。

Servlet的主要优点是可移植性好、易于维护和扩展。

2.JSP(JavaServer Pages)JSP是一种基于Servlet的页面技术,它允许开发者将Java代码嵌入到HTML 页面中。

JSP页面在服务器端运行时,会将嵌入的Java代码转换成Servlet代码,然后由Servlet引擎执行。

JSP适用于开发动态Web页面,可以简化页面的开发和维护工作。

3.JavaBean(JavaBeans)JavaBean是一种符合特定规范的Java类,用于封装数据和业务逻辑。

JavaBean可以作为MVC模式中的模型部分,用于处理业务数据和业务逻辑。

使用JavaBean可以降低代码的耦合度,提高代码的可重用性和可维护性。

4.JSTL(JavaServer Pages Standard Tag Library)Jstl是一个JSP标签库,它提供了一组标签用于常见的页面操作,如条件判断、循环、格式化等。

使用Jstl可以简化页面的开发工作,提高页面的可读性和可维护性。

三、JavaWeb开发环境搭建1.安装JDK(Java Development Kit)首先需要安装JDK,它是Java开发工具包,包含了JRE和开发工具。

可以使用Oracle官方提供的JDK安装包进行安装,选择合适的版本和操作系统平台。

javaweb学习笔记(一)

javaweb学习笔记(一)

javaweb学习笔记(⼀)1、建javaweb项⽬2、将tomcat环境导⼊到项⽬中3、建包,在包中建内建包的⽬的:是为了区别不同包中的类(就相当于现实⽣活中,有两个王强,分别在不同的班⼀样)代码:⼀、java部分:FileReadpackage com.servletdemo;import java.io.BufferedReader;import java.io.File;import java.io.FileReader;import java.io.FileReader;import java.io.IOException;import java.io.PrintWriter;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class FileRead extends HttpServlet{public void doGet(HttpServletRequest request,HttpServletResponse response)throwsIOException,ServletException{System.out.println("doGet⽅法被调⽤");response.setContentType("text/html");response.setCharacterEncoding("utf-8");PrintWriter out = response.getWriter();request.setCharacterEncoding("utf-8");String realPath = request.getParameter("filePath");File file = new File(realPath);if(file.exists()){FileReader reader = new FileReader(file);BufferedReader bufferReader = new BufferedReader(reader);String line = null;while((line = bufferReader.readLine()) !=null){out.print("<font size='5'>"+line+"</font><br>");}}else{out.print("⽂件不存在");}}public void doPost(HttpServletRequest request,HttpServletResponse response)throwsIOException,ServletException{doGet(request,response);}}⼆、read.jsp<%@ page import="com.servletdemo.FileRead" language="java" contentType="text/html; charset=utf-8"pageEncoding="utf-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>Insert title here</title></head><body><table><tr><td>请选择读取⽂件路径:</td><td><form action="FileRead" method="post"><input type="file" name="filePath"><input type="submit" value="提交"></form></td></tr></table></body></html>三、web.xml<?xml version="1.0" encoding="UTF-8"?><web-app><!-- … --><servlet><servlet-name>FileRead</servlet-name><servlet-class>com.servletdemo.FileRead</servlet-class></servlet><!-- … --></web-app>效果图:编程遇到的问题:我在敲web.xml的时候出现<%@page import ="com.servletdemo.FileRead">这⾥被eclipse提醒:The import com.servletdemo.FileRead cannot be resolved我百度了⼀下:因为环境没配好,只要在WEB-INF的lib中copy进去tomcat中lib⽂件⾥的servlet-api.jar就⾏了,其实eclipse标签很多提⽰可能就是没有把环境部署好,我应该对这个问题多注意Servlet理解:Servlet实际就是⼀个类,能处理客户端的请求并作出相应它的⽣命周期:1、⽣成Servlet,加载到Servlet Engine中,并通过调⽤其init()⽅法来进⾏初始化2、通过提供的相应⽅法来处理客户端的请求3、调⽤destory()⽅法进⾏销毁,并通过垃圾收集器(只有概念,没有深⼊,我觉得有时间要深⼊它)进⾏收集清理它的常⽤⽅法:doGet⽅法:⽤来处理客户端浏览器直接访问和get⽅式提交的表单doPost⽅法:⽤来处理表单post⽅式提交的表单,不能处理客户端浏览器直接访问service⽅法:⽤来处理客户端浏览器直接访问和以表单get⽅式提交的表单,以及以表单post⽅式提交的表单它的常⽤接⼝:HttpServletRequest接⼝HttpServletResponse接⼝HttpSession接⼝ServletContext接⼝。

JavaWeb:笔记(一)

JavaWeb:笔记(一)

JavaWeb:笔记(⼀)昨天已经把JavaWeb 课的所有内容都听完了。

今天开始补上 MVC 案例之前的上课的笔记,算⼀个复习的过程,重新整理⼀遍⾃⼰的知识点,然后再开始写⽹上书店的案例。

1、部署并启动 Tomcat 服务器:1)、解压 apache-tomcat-6.0.16.zip 到⼀个⾮中⽂的⽬录下2)、配置⼀个环境变量 java_home(指向 JDK 安装的根⽬录)或 jre_home3)、通过双击 apache-tomcat-6.0.16\bin ⽬录下的 startup.bat 来启动服务器。

4)、可以在浏览器中输⼊ localhost:8080 来检验 Tomcat 安装是否正确。

5)、若已经启动了⼀个 Tomcat 应⽤,再启动同⼀个 Tomcat 应⽤,会抛出异常:.BindException: Address already in use:JVM_Bind:8080 ,因为端⼝已经被占⽤了。

2、Tomact 是⼀个开源的Servlet 容器。

3、可以通过修改 servlet.xml ⽂件中的配置信息来修改 Tomcat 服务器的端⼝号,在 servlet.xml ⽂件中下⾯这个加粗的值改成其他端⼝号即可:<Connector port="8989" protocol="HTTP/1.1"connectionTimeout="20000"redirectPort="8443" />4、如何在任意⽬录下启动 Tomcat 服务器:4.1、把 D:\apache-tomcat-6.0.16\bin 添加到环境变量 path 下,添加成功后,若在任意⽬录下通过 startup 启动 Tomcat 服务器,会有提⽰:The CATALINA_HOME environment variable is not defined correctlyThis environment variable is needed to run this program即: 要求设置 CATALINA_HOME 这个环境变量。

java web 笔记

java web 笔记

java web 笔记Java Web开发是使用Java技术进行网络应用程序开发的过程。

在Java Web开发中,可以使用各种技术和框架来创建动态网页和应用程序。

以下是关于Java Web开发的一些关键点:1. **Java语言**: Java是一种广泛使用的编程语言,它被设计为一种通用的、多范式的、面向对象的编程语言。

Java具有跨平台的能力,可以在多种操作系统上运行。

2. **Web技术**: Java Web应用程序通常使用HTML、CSS和JavaScript等Web技术来创建用户界面。

此外,Java Web应用程序还使用Web标准(如RESTful API)来处理HTTP请求和响应。

3. **服务器**: Java Web应用程序通常运行在Web服务器上,如Apache Tomcat或Jetty。

这些服务器处理HTTP请求,并将请求转发给Java Servlet或JavaServer Pages (JSP) 页面。

4. **数据库**: Java Web应用程序通常使用关系型数据库管理系统(如MySQL或Oracle)来存储和检索数据。

Java应用程序使用JDBC (Java Database Connectivity)API与数据库进行通信。

5. **框架**: 在Java Web开发中,可以使用各种框架来简化开发过程。

一些流行的Java Web框架包括Spring MVC、Struts2和JSF (JavaServer Faces)。

这些框架提供了控制器、视图和组件的抽象,使开发人员能够专注于应用程序逻辑而不是底层的实现细节。

6. **安全性**: Java Web应用程序必须采取适当的安全措施来保护用户数据和防止攻击。

这包括使用HTTPS、输入验证、防止跨站脚本攻击(XSS)和SQL注入等措施。

7. **性能优化**: 优化Java Web应用程序的性能是一个重要的考虑因素。

这包括使用缓存、优化数据库查询、使用适当的硬件和配置以及使用适当的负载均衡策略。

javaweb第三天笔记

javaweb第三天笔记

day03上节内容回顾1、html的表单标签<form>:** action method enctype输入项:** type="text"** passwrod** radio** checkbox** file** submit** reset** type="image" src=""** select** textarea** type=“button”** hidden2、css** css和html的结合方式(四种)(1)在标签里面style(2)使用标签<style>(3)使用@import url()(4)link头标签实现** css的基本选择器(三种)(1)标签选择器(2)class选择器.名称(3)id选择器#名称3、javascript** java和javascript区别** js原始类型(五个)string number boolean null undifined使用var** js的语句if switch while for do-while** js运算符* == 和=== 区别** js的数组** 创建方式(三种)var arr1 = [1,2,3,"4"];var arr2 = new Array(3);var arr3 = new Array(4,5,6);** 属性length:长度** js的函数** 定义方式(三种)function add1(){}function(){}** js的全局变量和局部变量** 全局变量:在页面的任何js的部分都可以使用** 局部变量:在方法内部定义的变量,只是在方法内部使用** script标签应该放在什么位置</body>1、js的String对象** 创建String对象*** var str = "abc";** 方法和属性(文档)*** 属性length:字符串的长度*** 方法(1)与html相关的方法- bold():加粗- fontcolor(): 设置字符串的颜色- fontsize(): 设置字体的大小- link(): 将字符串显示成超链接**** str4.link("hello.html")- sub() sup(): 下标和上标(2)与java相似的方法- concat(): 连接字符串** //concat方法var str1 = "abc";var str2 = "dfg";document.write(str1.concat(str2));- charAt():返回指定指定位置的字符串** var str3 = "abcdefg";document.write(str3.charAt(20)); //字符位置不存在,返回空字符串- indexOf():返回字符串位置** var str4 = "poiuyt";document.write(str4.indexOf("w")); //字符不存在,返回-1- split():切分字符串,成数组** var str5 = "a-b-c-d";var arr1 = str5.split("-");document.write("length: "+arr1.length);- replace() :替换字符串* 传递两个参数:-- 第一个参数是原始字符-- 要替换成的字符* var str6 = "abcd";document.write(str6);document.write("<br/>");document.write(str6.replace("a","Q"));- substr()和substring()* var str7 = "abcdefghuiop";//document.write(str7.substr(5,5)); //fghui 从第五位开始,向后截取五个字符*** 从第几位开始,向后截取几位document.write("<br/>");document.write(str7.substring(3,5)); //de 从第几位开始到第几位结束[3,5)*** 从第几位开始,到第几位结束,但是不包含最后哪一位2、js的Array对象** 创建数组(三种)- var arr1 = [1,2,3];- var arr2 = new Array(3); //长度是3- var arr3 = new Array(1,2,3); //数组中的元素是1 2 3- var arr = []; //创建一个空数组** 属性:length:查看数组的长度** 方法- concat方法:数组的连接* var arr11 = [1,2,3];var arr12 = [4,5,6];document.write(arr11.concat(arr12));- join():根据指定的字符分割数组* var arr13 = new Array(3);arr13[0] = "a";arr13[1] = "b";arr13[2] = "c";document.write(arr13);document.write("<br/>");document.write(arr13.join("-"));- push():向数组末尾添加元素,返回数组的新的长度** 如果添加的是一个数组,这个时候把数组当做一个整体字符串添加进去* //push方法var arr14 = new Array(3);arr14[0] = "tom";arr14[1] = "lucy";arr14[2] = "jack";document.write("old array: "+arr14);document.write("<br/>");document.write("old length:"+arr14.length);document.write("<br/>");document.write("new length: "+arr14.push("zhangsan"));document.write("<br/>");document.write("new array: "+arr14);* var arr15 = ["aaa","bbb","ccc"];var arr16 = ["www","qqq"];document.write("old array:"+arr15);document.write("<br/>");document.write("old length:"+arr15.length);document.write("<br/>");document.write("new length:"+arr15.push(arr16));document.write("<br/>");document.write("new array: "+arr15);for(var i=0;i<arr15.length;i++) {alert(arr15[i]);}- pop():表示删除最后一个元素,返回删除的那个元素* var arr17 = ["zhangsan","lisi","wangwu","zhaoliu"];document.write("old array: "+arr17);document.write("<br/>");document.write("return: "+arr17.pop());document.write("<br/>");document.write("new array: "+arr17);- reverse():颠倒数组中的元素的顺序* var arr17 = ["zhangsan","lisi","wangwu","zhaoliu"];document.write("old array: "+arr17);document.write("<br/>");document.write("return: "+arr17.pop());document.write("<br/>");document.write("new array: "+arr17);//reverse方法document.write("<hr/>");var arr18 = ["zhangsan1","lisi1","zhaoliu1","niuqi1"];document.write("old array: "+arr18);document.write("<br/>");document.write("new array:"+arr18.reverse());3、js的Date对象** 在java里面获取当前时间Date date = new Date();//格式化//toLocaleString() //2015年4月17日11:17:12** js里面获取当前时间var date = new Date();//获取当前时间var date = new Date();document.write(date); // Fri Apr 17 10:47:46 UTC+0800 2015//转换成习惯的格式document.write("<hr/>");document.write(date.toLocaleString());** 获取当前的年方法getFullYear():得到当前的年**** document.write("year: "+date.getFullYear());** 获取当前的月方法getMonth():获取当前的月*** 返回的是0-11月,如果想要得到准确的值,加1**** var date1 = date.getMonth()+1;document.write("month: "+date1);** 获取当前的星期getDay():星期,返回的是(0 ~ 6)** 外国朋友,把星期日作为一周的第一天,星期日返回的是0而星期一到星期六返回的是1-6** document.write("week: "+date.getDay());** 获取当前的日getDate():得到当前的天1-31** document.write("day: "+date.getDate());** 获取当前的小时getHours():获取小时** document.write("hour: "+date.getHours());** 获取当前的分钟getMinutes():分钟** document.write("minute: "+date.getMinutes());** 获取当前的秒getSeconds(): 秒** document.write("second: "+date.getSeconds());** 获取毫秒数getTime()返回的是1970 1 1 至今的毫秒数** 应用场景:*** 使用毫秒数处理缓存的效果(不有缓存)?毫秒数4、js的Math对象* 数学的运算** 里面的都是静态方法,使用可以直接使用Math.方法()** ceil(x): 向上舍人** floor(x):向下舍人** round(x):四舍五入** random():得到随机数(伪随机数)- 得到0-9的随机数Math.random()*10Math.floor(Math.random()*10));5、js的全局函数* 由于不属于任何一个对象,直接写名称使用** eval() :执行js代码(如果字符串是一个js代码,使用方法直接执行)**** var str = "alert('1234');";//alert(str);eval(str);** encodeURI() :对字符进行编码- %E6%B5%8B%E8%AF%95%E4%B8%AD%E6%96%87aaa1234decodeURI() :对字符进行解码encodeURIComponent() 和decodeURIComponent()** isNaN():判断当前字符串是否是数字-- var str2 = "aaaa";alert(isNaN(str2));*** 如果是数字,返回false*** 如果不是数字,返回true** parseInt():类型转换** var str3 = "123";document.write(parseInt(str3)+1);6、js的函数的重载** 什么是重载?方法名相同,参数不同** js的重载是否存在?不存在** 调用最后一个方法** 把传递的参数保存到arguments数组里面** js里面是否存在重载?(面试题目)(1)js里面不存在重载。

Java_WEB(JSPSeverlet)上课笔记

Java_WEB(JSPSeverlet)上课笔记

Java_WEB(JSPSeverlet)上课笔记http协议:访问请求----->响应的过程一问一答http请求头请求的方式,协议,URLhttp响应头Web容器(服务中间件):tomcat 开源的WebLogic IBMResinJBossWebSphere下载安装tomcat安装是1.输入administrator用户及密码2.指定jre java的虚拟机注:tomcat默认商品为8080端口,查看当前主机端口的使用情况: netstat -atomcat的目录结构:%tomcat_home%\bin 存放应用程序启动,关闭脚本%tomcat_home%\conf tomcat配置目录context.xml server.xml tomcat-users.xml web.xml%tomcat_home%\lib 存放所有项目都可以使用的jar包%tomcat_home%\logs 存放tomcat日志%tomcat_home%\webapps 存放所有项目%tomcat_home%\work 所有jsp文件转换成class文件存放的地方修改server.xml修改目的:为了解决使用HTTP Get方法传递中文参数乱码的问题修改context.xml把修改成修改目的:当Web应用中的文件或者web.xml文件修改后,Tomcat服务器会自动重新加载当前Web应用,避免重新启动Tomcat。

tomcat-users.xml 配置管理tomcat用户tomcat配置到MyEclipse中:首选项---MyEclipse-->Servers--->Tomcat-->Tomcat X 选择相应版本路径创建WEB项目,并发布到tomcat去1.创建WEB项目新建--->WEB 项目2.发布3.访问: http://主机ip(名):端口/项目名/页面.jsphttp://localhost:8080/testWeb/index.jspJ2EEServlet: 一个服务类(基本类) 它只能在web容器中执行,响应请求,并执行相应业务逻辑,并返回一个结果(结果通常以jsp,或html文件)继承关系:public interface javax.servlet--------- public abstract class javax.servlet.GenericServlet----------------public abstract class javax.servlet.http.HttpServlet ******************httpHttpServlet:提供将要被子类化以创建适用于Web 站点的HTTP servlet 的抽象类。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Java Web Lesson 11. HTML(Hyper Text Markup Language),超文本标记语言。

HTML文件的后缀名一般是:.htm,.html2. 表单(form):3. 浏览器内核:WebKit,trident4. CSS定义的语法:selector {property: value}5. Http是一个基于请求/响应模式的,无状态的协议(request/responsebased ,stateless protocol)Java Web Lesson 21.浏览器与服务器连接的一般过程:2. 当我们通过在浏览器的地址栏中直接输入网址的方式去访问网页的时候,浏览器采用的就是GET方法向服务器获取资源3. Tomcat环境变量的配置:4. Tomcat、Resin、Jetty、Weblogic、WebSphere、JBoss5. 在Tomcat安装目录的conf目录下打开server.xml文件,找到倒数第四行</Host>,在</Host>上面加入如下XML片段:6. 启动Tomcat(startup.bat),打开浏览器,访问如下地址:http://localhost:8080/test/login.jsp7. web.xml(deployment descriptor),部署描述符8. 我们可以将Servlet看作是嵌套了HTML代码的Java类;可以将JSP看作是嵌套了Java代码的HTML页面。

9. get与post方法之间的差别:1)浏览器地址栏呈现的结果不同(表象)2)真正的原因在于向服务器端发送请求时的形式是不同的3)get的请求格式:4)post的请求格式:10. 通过浏览器进行文件上传时,一定要使用post方式而绝不能使用get 方式。

11. 通过浏览器地址栏输入网址的方式来访问服务器端资源,全部使用的是get方法请求的。

12. 客户端、服务器与Servlet/JSP之间的关系Java Web Lesson 3 1. 课堂练习:2. JSP执行流程:3.JSP 执行详细流程:4. JSP 最终都会转换为Servlet 去执行。

5. JSP 声明的格式:<%! int a = 3;%>,脚本段的形式:<% int b = 3;%>,当服务器将JSP 转换为Servlet 时,会将JSP 中的声明转换为类的成员变量,而将脚本段转换为方法中的局部变量,Servlet是单实例的,这样成员变量的值就只有一个,每个用户都会访问到它,而脚本段中的值则是局部变量,每个用户访问的时候各有一份,互不影响。

6. JSP包含(include)7. <jsp:forward>指令用于转向页面,在该指令后面的所有代码都没有机会执行了,因为页面的流程已经转向了另外一个页面了。

8. getParameter方法是getParameterValues方法的特例,表示请求参数值只有一个,如果请求参数值有多个,请使用getParameterValues方法。

在多选框的情况下,需要使用getParameterValues方法来获取用户所选择的多个复选框的值。

Java Web Lesson 41. request的setAttribute与getAttribute方法一般都是成对出现的,首先通过setAttribute方法设置属性与属性值,然后通过getAttribute方法根据属性获取到与该属性对应的对象值(获取到之后一般都需要进行向下类型转换,将属性值转换为真正的对象)。

setAttribute与getAttribute方法都是在服务器端内部执行的,客户端不知道服务器端是否执行过这两个方法。

2. request的getParameter方法的作用是获取到客户端通过表单或url请求参数所发送过来的参数值,是客户端与服务器端之间的交互,服务器端要想获取到客户端发送过来的数据,就需要使用getParameter方法来获取。

没有与getParameter方法对应的setParameter方法。

3. request对象内数据的存活范围就是在request对象的存活范围内,当客户端向服务器端发送一个请求,服务器向客户端返回一个响应后,该请求对象就被销毁了;之后再向服务器端发送新的请求时,服务器会创建新的request对象,该request对象与之前的request对象没有任何关系,因此也无法获得在之前的request对象中所存放的任何数据。

4. session对象内数据的存活范围也就是session对象的存活范围(?只要浏览器不关闭,session对象就会一直存在?),因此在同一个浏览器窗口中,无论向服务器端发送多少个请求,session对象只有一个。

5. application(应用对象):存活范围最大的对象,只要服务器没有关闭,application对象中的数据就会一直存在。

在整个服务器运行过程当中,application对象只有一个。

6. request、session以及application这3个对象的范围是逐个增加的:request 只在一个请求的范围内;?session是在浏览器窗口的范围内?;application则是在整个服务器的运行过程中。

Java Web Lesson 51. HttpServletResponse对象的sendRedirect(String location)方法称作重定向。

如果location地址前面加上“/”,则表示相对于Servlet容器的根来请求,即http://localhost:8080,如果location地址前没有加上“/”,则表示相对于当前请求的URI来寻找地址。

2. RequestDispatcher的forward(request, response)方法称作请求转发。

3. 请求转发与重定向的区别。

1)请求转发,整个过程处于同一个请求当中2)重定向。

实际上客户端会向服务器端发送两个请求。

3 )RequestDispatcher 是通过调用HttpServletRequest 对象的getRequestDispatcher()方法得到的,是属于请求对象的方法。

4)sendRedirect()是HttpServletResponse 对象的方法,即响应对象的方法,既然调用了响应对象的方法,那就表明整个请求过程已经结束了,服务器开始向客户端返回执行的结果。

5)重定向在FireBug 中的示意图4. 练习(投票管理系统)项目执行流程1. 出题目1)设定题目名称2)设定选项数量以及每个选项的名称3)设定投票的类型(单选,多选)2. 投票5. MVC设计模式(Model 模型View 视图Controller 控制器)。

6. JavaBean的规范要求7. 一个典型的JavaBean8. JSP访问JavaBean的语法Java Web Lesson 61. 可以在<jsp:setProperty>中通过param参数为bean的属性动态赋值。

对应的Servlet代码是:2.JavaBean的存活范围:3. 当将JavaBean放在session范围内时生成的Servlet源代码是:4. 当将JavaBean 放在application 范围内时生成的Servlet 源代码是:5. 每一个Servlet 都必须要实现Servlet 接口,GenericServlet 是个通用的、不特定于任何协议的Servlet,它实现了Servlet 接口,而HttpServlet 继承于GenericServlet,因此HttpServlet 也实现了Servlet 接口,所以我们定义的Servlet 只需要继承HttpServlet 父类即可。

6. Servlet 接口中定义了一个service 方法,HttpServlet 对该方法进行了实现,实现方式就是将ServletRequest 与ServletResponse 转换为HttpServletRequest 与HttpServletResponse7. 转换完毕后,会调用HttpServlet类中自己定义的service方法,如下所示8.在该service方法中,首先获得到请求的方法名,然后根据方法名调用对应的doXXX方法,比如说请求方法为GET,那么就去调用doGet方法;请求方法为POST,那么就去调用doPost方法。

9. 在HttpServlet类中所提供的doGet、doPost等方法都是直接返回错误信息,所以我们需要在自己定义的Servlet类中override这些方法10. 源码面前,了无秘密11. Servelt 核心API 之间的关系UML 图:12. Servlet 的启动Java Web Lesson 71. 对于Tomcat来说,它会将客户传递过来的参数放在一个Hashtable中,该Hashtable的定义是:这是一个String->String[]的键值映射。

2. 某些Servlet在web.xml文件中只有<servlet>元素而没有<servlet-mapping>元素,这样我们就无法通过url地址的方式访问这个Servlet了,这种Servlet 通常会在<servlet>元素中配置一个<load-on-startup>子元素,让容器在启动的时候自动加载该Servlet,并且调用其init方法完成一些全局性的初始化工作。

3. Servlet的多线程同步问题:Servlet本身是单实例的,这样当有多个用户同时访问某个Servlet时,会访问该唯一的Servlet实例中的成员变量,如果对成员变量进行写入操作,那就会导致Servlet的多线程问题,即数据不一致。

4. 解决Servlet多线程同步问题的最好方案:去除实例变量,使用局部变量5. Servlet是纯Java语言,擅长于处理流程和业务逻辑。

6. Session的原理图Java Web Lesson 81. 过滤器(Filter):1)Servlet过滤器本身并不生成请求和响应对象,它只提供过滤作用。

2)Servlet过滤器能够在Servlet被调用之前检查Request对象,修改Request Header和Request内容;3)在Servlet被调用之后检查Response对象,修改Response Header和Response内容。

Servlet过滤器负责过滤的Web组件可以是Servlet、JSP 或HTML文件。

2. 过滤器的过滤过程:3.过滤器的链式请求处理过程(FilterChain)Java Web Lesson 101. 在js中为某个对象(控件)绑定事件通常可以采取两种手段:1)<input type=”button” onclick=”clickHandler();”>2)<input type=”button” id=”button1”><script type=”text/javascript”>var v = document.getElementById(“button1”);v.onclick = clickHandler;</script>2. 有两种类型的cookie1)持久性cookie,会被存储到客户端的硬盘上。

相关文档
最新文档