项目javascript |
内容java |
这个做业属于哪一个课程c++ |
https://www.cnblogs.com/nwnu-daizh/web |
这个做业的要求在哪里数据库 |
|
做业学习目标浏览器 |
|
随笔博文正文内容包括:安全
第一部分:课程学习平台注册帐号(20分,每项4分)服务器
平台名称网络 |
注册帐号或者我的博客园地址 |
博客园:www.cnblogs.com |
|
程序设计评测:https://pintia.cn/ |
1778183526@qq.com |
中国大学MOOC: https://www.icourse163.org/ |
15352021749 |
如下回答是或否 |
|
是否加入课程班级博客群 |
是 |
是否加入课程QQ讨论群 |
是 |
第二部分:理论知识学习部分
第一章 Java程序设计概述
一:Java"白皮书“的关键术语
1.简单性
人们但愿构建一个无须深奥的专业训练就能够进行编程的系统,而且要符合当今的标准惯例。所以,尽管人们发现C++不太适合,但在设计java的时候仍是尽量地接近C++,以便系统更易于理解。Java挑剔了C++中许多不多使用、难以理解、易混淆的特性。在目前看来,这些新特性带来的麻烦远远多于其带来的好处
的确,Java语言是C++语法的一个纯净版本。这里没有头文件、指针运算(甚至指针语法)、结构、联合、操做符重载、虚基类等。然而设计者并无试图清除C++中全部不适当的特性。例如,switch语句在Java中就没有改变。若是你了解C++你就会发现能够垂手可得地转换到Java语法。之前,Java刚发布时,许多开发人员确定以为Java并不简单。不少年之后Java的开发环境才迎头而上。现在,Java发开环境已经远远超过了大多数其余编程语言的开发环境。简单的另外一方面是小。可以在小型机器上独立运行的软件。随着时代的发展,如今已经适用于嵌入式设备。
2.面向对象性
简单来讲,面向对象设计是一种程序设计技术。它的重点在于对象。举一个例子:有一个木匠想作一把椅子,一个有面向对象特色的木匠,他始终关注的是所制造的椅子,而后再关注所使用的工具;一个不具备面向对象特色的木匠,他首先考虑的是所用的工具。在本质上,Java的面向对象能力和C++是同样的。主要不一样点在于,C++能够多重继承,在Java中取而代之的是更简单的接口概念。总的来讲,就是Java先考虑的是结果,再考虑怎么实现它。
3.分布式
Java有一个丰富的例程库,到这里是否是想问例程库 是什么? 有什么用? 它是用于处理像HTTP和FTP之类的TCP/IP协议。Java应用程序能经过URL打开和访问网络上的对象,它的编写程度就至关于咱们访问本地同样。
4.健壮性
Java的设计目标之一就在于Java编写的程序能够具备多方面的可靠性。Java编译器可以检测许多在其余语言中仅在运行时才能检测出来的问题。至于第二点,对于之前须要花费几个小时才能检查出指针bug而引发的内存冲突的人来讲,必定会爱上Java的这一特性。简单来讲,健壮性是指出错了也能继续运行的能力。
5.安全性
Java适用于网络/分布式环境。为了达到这个目标,在安全方面投入了很大精力。使用Java能够构建防病毒、防篡改的系统。从一开始,Java就设计成可以防范各类攻击,其中包括:* 运行时堆栈溢出时。如蠕虫和病毒经常使用的攻击手段。*破坏本身的进程空间以外的内存。*未经受权读写文件。 不过黑客已经擅长找出全体系结构实现中的小漏洞,Java安全模型没有原先预想的那么成功,不过我相信早晚有一天,它会出现奇迹的。
6.体系结构中立
编译器生成一个体系结构中立的目标文件格式,这是一种编译过的代码,只要有Java运行时系统,这些编译后的代码能够在许多处理器上运行。Java编译器经过生成与特定的计算机体系结构无关的字节码指令来实现这一特性。精心设计的字节码不只能够很容易地在任何机器上解释执行,并且还能够迅速地翻译成本地机器的代码。字节码能够实现告终构中立。
7.可移植性
由于Java有一个JVM(Java Virtual Machine)Java虚拟机,源程序*.java被编译成字节码文件,字节码是与平台无关的,是面向jvm编写的,而Jvm又有本身的一套指令系统,在不一样的平台上jvm的指令也是不同的,也就是说不一样操做平台有本身的Jvm可是Jvm向上的字节码接口是与平台无关的,Jvm接口向下是与硬件有关的,jvm是个中间件,这样只要有字节码和Jvm,无论在任何平台均可以运行Java程序。全靠的是Jvm虚拟机,能够跨平台,这就是可移植性。
8.解释型
Java解释器能够在任何移植解释器的机器上执行Java字节码。因为连接是一个轻量级的过程,因此,开发过程也变得更加敏捷,更加具备探索性。它其实就是把作好的源程序翻译一句,而后执行一句,直至结束。特色:执行速度慢、效率低;依靠解释器、跨平台性好。javascript语言也是解释型的。
9.高性能
尽管如今咱们对解释后的字节码的性能已经比较满意了,但在有些场合还须要更高的性能,这时候咱们该怎么办呢?字节码能够在运行时刻 动态地 翻译成对应这个应用的特定CPU的机器码。
10.多线程
多线程能够带来更好的交互响应和实时行为。现在,咱们很是关注并发性,如今咱们再也不追求更快的处理器,而是得到更多的处理器,并且要让它们一直保持工做。并发程序设计绝非易事,不过Java在这方面表现很出色,能够很好地管理这个工做;web编程由于时间不是很长,处理器则要花很长时间来等待服务器响应,须要并发程序设计来确保用户界面不会被冻住。
11.动态性
从各类角度看,Java与C或C++相比更加具备动态性。由于它可以适应不断发展的环境。库中能够自由地添加新方法和实例变量,而客户端却没有任何影响。在Java中找出运行时类型信息十分简单。
当须要将某些代码添加到正在运行的程序中时,动态性将是一个很是重要的特性。好比说:从网上下载代码,而后在浏览器上运行。若是使用C或C++,这确实难度很大,不过Java能够很容易实现程序的推演。(C#与Java有不少相同之处,不过使用的虚拟机倒是彻底不一样的)。
二:Java applet
1:Applet基础
在网页中嵌入Applet程序:
<applet codebase= "."
code= "com.webtec.graph.TopGraphApplet.class"
archive="topview20111202.jar"
width=800 height=600>
<param name=width value="800">
<param name=height value="600">
</applet>
Codebase: applet程序位置(.表示页面和applet在同一位置)
Code: applet类的全名
Archive:引入的jar包,多个用","隔开
<param name=width value="800">指定向applet传入的参数
Applet程序:
getParameter("width"), 从Apple获取参数对应值,未设置返回null
getCodeBase (),返回当前applet的路径,即applet的目录的URL。
这里犯了个错误,想要从properties文件中读取服务器配置,在applet中配置链接服务器的路径,可是applet是服务器端下载的,不能访问客户端的文件系统,不可能读到properties文件,最后用getCodeBase()方法替代了。要配置用户属性,能够在param标签配置。
Validate(),在applet中动态添加组件,不显示,调用了一下Validate()方法,而后图形出来了,repaint()、doLayout()都不得行。
2. Applet与服务器交互
准备在applet程序中绘制图形,图形数据从数据库中获取出来的,开发的时候直接访问了数据库,还用了JPA,在Eclipse里面发现运行起来很正常,很强大,发布的时候发现又作错了。
Applet是运行在客户端的,须要客户端的java类库支持,开发的时候直接把不少包放到了类路径下,发现用户要从网页运行不可能下载全部的jar包支持运行,因此不要把applet功能作得太过强大,主要是用来展现的。
Applet能够直接访问数据库,可是须要JDBC的支持,可是最好不要这样作。一方面客户端是没有jdbc包的,直接放到applet一块儿会增长用户访问时的网络负担;另外一方面,数据库服务器不必定可以从客户端直接连通,主要是网络问题,可能数据库位于内外或者其余安全考虑。
最终不得不考虑从远程Http服务器获取图形数据,代码以下:
/**
* 从服务器读取数据绘制TOP图的数据
* */
public static String getGraphicData() {
String graphicData = "";
//服务器servlet或Action请求路径(绝对路径)
String urlString = Common.ActionAddress.getGraphDataUrl();
byte buffer[] = new byte[4096];
StringBuffer data = new StringBuffer();
HttpURLConnection conn = null;
try {
URL url = new URL(urlString);
conn = (HttpURLConnection) url.openConnection();
conn.connect();
InputStream is = conn.getInputStream();
int len = 0;
while((len = is.read(buffer))>0){
data.append(new String(buffer, 0, len));
}
is.close();
} catch (Exception e) {
e.printStackTrace();
JOptionPane.showMessageDialog(null,
"Error: " + "Error occurs when request to : \n" +
urlString + "\nReason: " + e.getLocalizedMessage(),
"Applet Message", JOptionPane.ERROR_MESSAGE);
}
return graphicData;
}
在开发环境中测试一切正常,可是发布到网页中没法执行。上面的代码表面上看只有IOException,因此一开始只捕获了IO异常,开发环境中运行正常,可是网页加载后执行正常,Java控制台无任何异常信息,调了好久不知道为何。后来只好将IOException改为Exception,捕获到了java.net.SocketPermission,提示Access Denied,发现是applet没法使用网络资源,是java security机制的缘由,applet没法访问客户端的网络、文件等资源,因此只好在客户端修改配置了,配置方法在下一节。
网络异常解决了,程序仍是没法执行,检查到java.lang.reflect.ReflectPermission异常,多是在给Filed设置值是设置了私有成员,最终没有解决,网上查不到资料,本身改不来,只好吧那部分代码换了,用了点低级的代码先把功能实现了再说。
还有一个问题不能解决的是Applet的字符编码问题,服务器端用的是UTF-8的编码格式,在页面测试正常,开发环境中的Applet测试正常,可是发布到网页测试不正常,说是Applet运行的时候用的是操做系统的默认字符集,最后只好把它从GBK转了一遍,勉强凑合,可是没有彻底去除乱码,GBK2312和GBK18030直接抛异常,没搞懂为何,期待高手指点。
3. Applet安全设置
Applet访问网络,抛出异常:
java.security.AccessControlException: access denied (java.net.SocketPermission server1 resolve)
这个错误的通知你访问被拒绝。这就是说,因为 applet 程序试图在没有得到正确的权限的状况下访问系统资源,括号中代码表示,若要纠正这种状况,您须要一个向数据库所在计算机(主机名为server1) 授予 applet 访问权限的 SocketPermission。
解决办法:
建立policy策略文件,内容以下:
grant {
permission java.net.SocketPermission "server1", "resolve";
permission java.net.SocketPermission "127.0.0.1:8080", "connect, resolve";
};
将该文件保存成ASCII文件,命名为netconnect.policy,存于${JRE_HOME}/lib/security/目录下(主要是为方便后面路径填写)。
修改Java安全配置:
建立了策略文件后,修改${JRE_HOME}/lib/security/java.security文件,在
policy.url.1=file:${java.home}/lib/security/java.policy
policy.url.2=file:${user.home}/.java.policy
下添加一行
policy.url.3= file: ${java.home}/lib/security/netconnect.policy
再次访问页面的applet,又捕获到以下异常:
java.security.AccessControlException: access denied(java.net.SocketPermission 127.0.0.1:8080 connect,resolve)
网络访问仍受限,不能访问服务器127.0.0.1:8080,在前面生成的策略文件中加入
permission java.net.SocketPermission "
10.6.1.16:1521", "connect, resolve";
再次访问,运行成功。
三:关于Java的常见误解
1:Java是HTML的扩展。
Java是一种程序设计语言;HTML是一种描述网页结构的方式。除了用于在网页上放置Javaapplet的HTML扩展以外,二者没有任何共同之处。既然说到了HTML就不得不提一下JSP了,JSP全名为Java Server Pages,中文名叫java服务器页面,其根本是一个简化的Servlet设计,他是一个动态网页设计。咱们能够把JSP理解为是Java Servlet的扩展;
2使用XML,就不须要Java。
Java是一种程序设计语言;XML是一种描述数据的方式,可使用任何一种程序设计语言处理XML数据,而Java API对XML处理提供了很好的支持。此外,许多重要的第三方XML工具采用Java编写。
3Java是一种很是容易学习的程序设计语言。
像Java这种功能强大的语言大都不太容易学习。首先,必须将编写玩具式程序,或者模仿他人的增删改与实际项目是的艰难区分开来。Java类库包含了数千种类和接口与几万个方法,要解决Java的实际问题,咱们仍是要了解很多内容的;
4.Java将成为使用与全部平台的通用性编程语言。
从理论上讲,这是彻底有可能的。的确,除了微软以外的每个厂商都但愿如此。然而,有不少在桌面计算机上已经彻底工做良好的应用程序,在其余设备上或浏览器中或许不能正常地工做。同时,在编写这些应用程序时,利用了相应处理器的速度和本地的用户接口库,并且他们已经移植到全部重要的平台上。这类应用程序包括:字处理程序,图片编辑器以及Web浏览器。他们一般是用C编写的,采用Java语言从新编写彷佛对最终的用户不会带来什么特别的好处。
5Java只不过是另一种程序设计语言。
Java是一种很好的程序设计语言,不少程序设计人员喜欢Java赛过C,有上百种好的程序语言没有普遍的流行,而带有明显缺陷的语言,而Java和C却大行其道。这是由于程序设计语言的的成功更多的取决于其支撑系统的能力,而不是优美的语法。人们主要关注:是否提供了易于实现某些功能的易用,
便捷和标准的库。是否拥有强大的程序设计能力与调试工具,语言和工具是否可以与计算器的其余基础结构整合在一块儿Java的成功源于其类库可以让人们轻松的完成本来有必定难度的事情。
6.Java是解释型语言,所以对于关键的应用程序速度太慢了。
早起的Java是解释型的,如今除了像手机这样的微型平台以外。Java虚拟机使用了即时编译器,所以采用Java编写的热点代码其运行速度与c++相差无几。
如今今天的计算机速度远比人们发出抱怨的时候快了不少。一个较慢的Java程序与几年前至关快的C++程序还要快一些。如今的人们已经不抱怨Java程序慢了,而去抱怨Java的界面太丑了。
7.JavaScript是Java的简易版。
JavaScript是一种在网页中使用的脚本语言。它是由Netscape发明的,原来的名字叫作LiveScript.JavaScript的语法相似于Java,除此以外。二者无任何关系。固然名字有些想象。
第二章 Java程序设计环境及实验内容说明
主要学习了Java程序开发过程。和如何分析Java应用程序。
1:源程序的编辑:Java源程序是以•Java为后缀的文本文件,能够用各类Java集成 开发环境中的源代码编辑器来编写,也能够用文本编辑工具来编写。
2:源文件的命名:若是源文件中有多个类,那么只能有一个类是public类。 若是有一个类是public类,那么源文件的名字必须与这个类的名字彻底相同 。源程序文件的扩展名是.java 。若是源文件没有public类,那么源文件的名字只要和某个类的名字相同,而且扩展名是.java就能够。 源程序名必定为MyJavaApplication.java
第三部分:实验部分
一、实验名称:实验一 Java程序设计环境
2. 实验目的:
(1)掌握JDK的安装与配置;
(2)掌握使用JDK开发Java程序的基本命令及步骤;
(3)熟练运用Elipse集成开发环境开发java程序的基本步骤
(4)掌握Java程序的基本语法。
3. 实验步骤与内容:
实验1 JDK的安装与配置
1):下载jdk10.0.2文件并进行安装,安装路径不会改变。
安装后的文件夹截图以下
2):进行环境变量的设置
步骤:此电脑-计算机-属性-高级系统设置-环境变量-path-新建文件夹-将如图所示的变量名粘贴
3):window+R
4):输入java
5):输入javac
6):下载安装eclipse软件包,页面以下
7):安装后设置工做空间后,截图以下
8):建立Java文件,截图以下
9):利用eclipse输出九九乘法表
10):代码以下:
package cfb.java;
public class welcome {
public static void main(String[] args) {
int sum;
for(int i=1;i<=9;i++) {
for(int j=1;j<=i;j++) {
sum=i*j;
System.out.print(j+"*"+i+"="+sum+" ");
}
System.out.println();
}
}
}
4:实验总结以下:
1):经过本次课程的学习让咱们对Java程序设计这们课程有了初步的了解;学习了Java的发展史及Java程序设计环境等知识。
2):学会了如何去安装JDK及Elipse,在安装的过程当中,出现了许多问题,如环境变量的调试等,经过问助教及同窗都一一解决了;掌握了一些基础的实验知识。
3):最后经过本身安装的JDK及Elipse运行了welcome.java及九九乘法表的命令,掌握了运行的步骤及过程。
4):经过此次的实验使我学到了很多实用的知识,而且锻炼了本身的动手能力;相信在之后的学习中,在助教和老师带领下,我能够学到更多的关于编程的相关知识。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
package
project3;
public
class
test {
public
static
void
main(String[] args) {
int
sum;
for
(
int
i=
1
;i<=
9
;i++) {
for
(
int
j=
1
;j<=i;j++) {
sum=i*j;
System.out.print(j+
"*"
+i+
"="
+sum+
" "
);
}
System.out.println();
}
}
}
|