1.什么B/S技术?B/S技术与C/S技术的区别
B/S结构(Browser/Server结构)结构即浏览器和服务器结构
C/S 与 B/S 区别: Client/Server是建立在局域网的基础上的.Browser/Server是建立在广域网的基础上的. 1.硬件环境不同: C/S 一般建立在专用的网络上, 小范围里的网络环境, 局域网之间再通过专门服务器提供连接和数据交换服务. B/S 建立在广域网之上的, 不必是专门的网络硬件环境,例与电话上网, 租用设备. 信息自己管理. 有比C/S更强的适应范围, 一般只要有操作系统和浏览器就行 2.对安全要求不同 C/S 一般面向相对固定的用户群, 对信息安全的控制能力很强. 一般高度机密的信息系统采用C/S 结构适宜. 可以通过B/S发布部分可公开信息. B/S 建立在广域网之上, 对安全的控制能力相对弱, 面向是不可知的用户群. 3.对程序架构不同 C/S 程序可以更加注重流程, 可以对权限多层次校验, 对系统运行速度可以较少考虑. B/S 对安全以及访问速度的多重的考虑, 建立在需要更加优化的基础之上. 比C/S有更高的要求 B/S结构的程序架构是发展的趋势, 从MS的.Net系列的BizTalk 2000 Exchange 2000等, 全面支持网络的构件搭建的系统. SUN 和IBM推的JavaBean 构件技术等,使 B/S更加成熟. 4.软件重用不同 C/S 程序可以不可避免的整体性考虑, 构件的重用性不如在B/S要求下的构件的重用性好. B/S 对的多重结构,要求构件相对独立的功能. 能够相对较好的重用.就入买来的餐桌可以再利用,而不是做在墙上的石头桌子 5.系统维护不同 系统维护是软件生存周期中,开销大, -------重要 C/S 程序由于整体性, 必须整体考察, 处理出现的问题以及系统升级. 升级难. 可能是再做一个全新的系统 B/S 构件组成,方面构件个别的更换,实现系统的无缝升级. 系统维护开销减到最小.用户从网上自己下载安装就可以实现升级. 6.处理问题不同 C/S 程序可以处理用户面固定, 并且在相同区域, 安全要求高需求, 与操作系统相关. 应该都是相同的系统 B/S 建立在广域网上, 面向不同的用户群, 分散地域, 这是C/S无法作到的. 与操作系统平台关系最小. 7.用户接口不同 C/S 多是建立的Window平台上,表现方法有限,对程序员普遍要求较高 B/S 建立在浏览器上, 有更加丰富和生动的表现方式与用户交流. 并且大部分难度减低,减低开发成本. 8.信息流不同 C/S 程序一般是典型的中央集权的机械式处理, 交互性相对低 B/S 信息流向可变化, B-B B-C B-G等信息、流向的变化, 更象交易中心
2.什么是URL? URL由几部分组成?
url一般用浏览器打开。
URL是(Uniform Resource Locator,统一资源定位符)的缩写,它是WWW的统一资源定位标志,就是指网络地址。
一般标准的URL由()几大部分组成。
A.协议
B.域名
C.主机名
D.路径及文件名
3.Jsp注释分为几种情况?有何区别?(请写出具体事例)
在JSP中的注释一共分为两种注释:
· 显式注释:在HTML中存在注释“<!--注释内容 -->”
· 隐式注释:可以使用java中的“//”、“/*….*/”,以及JSP中自己的注释:“<%-- 注释内容 --%>”
所谓是显式或隐式实际上就是指在查看源文件的时候的显示的代码。
<%-- JSP中的注释,看不见 --%>
<%
// 注释,看不见
/*
注释,看不见
*/
%>
<!--显式注释-->
4.Jsp页组成包括哪些内容?
JSP页面是由静态内容和动态内容构成:
1、静态内容:HTML页面元素。
2、动态内容:JSP的指令元素、脚本元素、动作元素,注释等等。
5.Jsp是如何响应客户端的请求并且向客户端输出信息?
1、概念和定义
1.1 JSP内置对象:
JSP 内置对象是 Web 容器创建的一组对象,可以直接在JSP页面使用,无需使用“new”获取实例,它的名称是 JSP 的保留字。常用的JSP 内置对象有out、request、response、session、application。
1.2out:
out对象用于向客户端输出数据,它的常用方法是print(),用于在页面中打印出字符串信息。
需求:
在页面上打印hello ACCP。
关键代码:
<%
out.print(" hello ACCP" );
%>
request:
request对象主要用于处理客户端请求。
需求:
编程实现如下图示在页面输入ACCP学员的注册提交后,显示学员输入的数据。
关键代码:
创建reginput.jsp页面用于输入注册信息,并将checkbox选项命名为相同的名字。
<td><input type="checkbox" name="channel" value="报刊">报刊
<input type="checkbox" name="channel" value="网络">网络
<input type="checkbox" name="channel" value="朋友推荐">朋友推荐
<input type="checkbox" name="channel" value="电视">电视</td>
创建reginfo.jsp页面用于显示注册信息。
<%
// 在调用request.getParameter()之前指定每个请求的编码,可以解决中文乱码问题
request.setCharacterEncoding("GBK");
// 根据页面表单元素名称获取页面提交数据
String name = request.getParameter("name");
String pwd = request.getParameter("pwd");
// 获取一个页面表单组件对应多个值时的用户的请求数据
String[] channels = request.getParameterValues("channel");
%>
用户名:<%=name%>
密码:<%=pwd%>
你从哪里知道ACCP培训:
<%
if (channels != null) {
for (int i = 0; i < channels.length; i++) {
out.println(channels+" ");
}
}
%>
1.3 response:
response对象用于响应客户请求并向客户端输出信息。
需求:
在首页面(input.jsp)上输入用户名、密码,提交至input2.jsp进行处理,如果输入的用户名、密码都是sa,跳转至欢迎页面(welcome.jsp)。首页面如下图示:
关键代码:
input.jsp页面关键代码如下:
<form name="form1" method=post action="input2.jsp">
input2.jsp页面关键代码如下:
<%
request.setCharacterEncoding("GBK");
String name = request.getParameter("userName");
String pwd = request.getParameter("pwd");
if(name.equals("sa")&&pwd.equals("sa")){
response.sendRedirect("welcome.jsp");
}
%>
6.什么是重定向?什么是转发?区别是什么?
重定向:response.sendRedirect(String url);
服务器端在响应第一次请求的时候,让浏览器再向另外一个url发出请求;它本质上是两次HTTP请求,对应两个request对象。
转发:request.getRequestDispatcher(String url).forward(request,response);
客户端浏览器只发出一次请求,Servlet把请求转发给Servlet、HTML、JSP或其他信息资源,由其他信息资源响应该请求,两个信息资源共享一个request对象。
两者区别:
(1)重定向url改变,转发url不变;
(2)重定向重新发出请求,转发不再发出请求;
(3)重定向不携带请求,转发携带请求;
(4)重定向的目标url可以是任意的,转发的目标url仅限于本应用;
(5)重定向是客户端行为,转发是服务器端行为。
7.Jsp如何实现数据库访问?请写出相应步奏
<%@page import="java.sql.*"
import ="java.util.*"
import ="java.io.*"
contentType="text/html; charset=gb2312"
%>
<html>
<head>
<title>使用MYsql数据库</title>
<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
</head>
<body>
<p align="center"><u><font size="5" face="华文新魏">使用JSP读取Mysql数据库</font></u></p>
<%!
String host="localhost"; //数据库主机
String database="pinghui"; //数据库名
String user="test"; //用户名
String pass=""; //口令
%><% java.sql.Connection sqlConn; //数据库连接对象
java.sql.Statement sqlStmt; //语句对象
java.sql.ResultSet sqlRst; //结果集对象
//登记JDBC驱动对象
Class.forName ("org.gjt.mm.mysql.Driver").newInstance ();
//连接数据库
sqlConn= java.sql.DriverManager.getConnection ("jdbc:mysql://"+host+"/"+database,user,pass);
//创建语句对象
sqlStmt=sqlConn.createStatement (java.sql.ResultSet.TYPE_SCROLL_INSENSITIVE,java.sql.ResultSet.CONCUR_READ_ONLY);
//执行Sql语句
String sqlQuery="select count(*) from comment";
sqlRst=sqlStmt.executeQuery (sqlQuery);
sqlRst.next();
int count=sqlRst.getInt(1); //取得总的留言记录数
sqlQuery="select * from comment order by userid desc;";
sqlRst=sqlStmt.executeQuery (sqlQuery); //执行SQL语句
%>
总共有<%=count%>条留言
<table border="1" width="100%" bordercolorlight="#CC99FF" cellpadding="2" bordercolordark="#FFFFFF" cellspacing="0">
<tr>
<td align="center"> ID</td>
<td align="center">昵称</td>
<td align="center">性别</td>
<td align="center">地址</td>
<td align="center">IP地址</td>
<td align="center">邮编</td>
<td align="center">Oicq</td>
<td align="center">ICQ</td>
<td align="center">电话</td>
<td align="center">留言</td>
<td align="center">时间</td>
</tr>
<% while (sqlRst.next()) { //取得下一条记录 %>
<tr><!--显示记录-->
<td><%=sqlRst.getString("userid")%></td>
<td><%=sqlRst.getString("username")%></td>
<td><%=sqlRst.getString("sex")%></td>
<td><%=sqlRst.getString("address") %></td>
<td><%=sqlRst.getString("ip") %></td>
<td><%=sqlRst.getString("post")%></td>
<td><%=sqlRst.getString("oicq")%></td>
<td><%=sqlRst.getString("icq")%></td>
<td><%=sqlRst.getString("telnumber")%></td>
<td><%=sqlRst.getString("comment")%></td>
<td><%=sqlRst.getString("time") %></td>
</tr>
<% } %>
</table>
</body>
<%
//关闭结果集对象
sqlRst.close();
//关闭语句对象
sqlStmt.close ();
//关闭数据库连接
sqlConn.close();
%>
8.0.6332的数据类型是?(请写出具体类型)
double
默认为double型,如果为float型需要加上f显示说明,即0.6332f
9.abstract class和interface有什么区别?
在Java语言中,abstract class和interface是支持抽象类定义的两种机制。正是由于这两种机制的存在,才赋予了Java强大的面向对象能力。abstract class和interface之间在对于抽象类定义的支持方面具有很大的相似性,甚至可以相互替换,因此很多开发者在进行抽象类定义时对于abstract class和interface的选择显得比较随意。其实,两者之间还是有很大的区别的,对于它们的选择甚至反映出对于问题领域本质的理解、对于设计意图的理解是否正确、合理。
| Abstract class | Interface |
实例化 | 不能 | 不能 |
类 | 一种继承关系,一个类只能使用一次继承关系。可以通过继承多个接口实现多重继承 | 一个类可以实现多个interface |
数据成员 | 可有自己的 | 静态的不能被修改即必须是static final,一般不在此定义 |
方法 | 可以私有的,非abstract方法,必须实现 | 不可有私有的,默认是public,abstract 类型 |
变量 | 可有私有的,默认是friendly 型,其值可以在子类中重新定义,也可以重新赋值 | 不可有私有的,默认是public static final 型,且必须给其初值,实现类中不能重新定义,不能改变其值。 |
设计理念 | 表示的是“is-a”关系 | 表示的是“like-a”关系 |
实现 | 需要继承,要用extends | 要用implements |
abstract class和interface在Java语言中都是用来进行抽象类(本文中的抽象类并非从abstract class翻译而来,它表示的是一个抽象体,而abstract class为Java语言中用于定义抽象类的一种方法)定义的,那么什么是抽象类,使用抽象类能为我们带来什么好处呢?
声明方法的存在而不去实现它的类被叫做抽象类(abstract class),它用于要创建一个体现某些基本行为的类,并为该类声明方法,但不能在该类中实现该类的情况。不能创建abstract 类的实例。然而可以创建一个变量,其类型是一个抽象类,并让它指向具体子类的一个实例。不能有抽象构造函数或抽象静态方法。Abstract 类的子类为它们父类中的所有抽象方法提供实现,否则它们也是抽象类为。取而代之,在子类中实现该方法。知道其行为的其它类可以在类中实现这些方法。
接口(interface)是抽象类的变体。在接口中,所有方法都是抽象的。多继承性可通过实现 这样的接口而获得。接口中的所有方法都是抽象的,没有一个有程序体。接口只可以定义static final成员变量。接口的实现与子类相似,除了该实现类不能从接口定义中继承行为。当类实现特殊接口时,它定义(即将程序体给予)所有这种接口的方法。 然后,它可以在实现了该接口的类的任何对象上调用接口的方法。由于有抽象类,它允许使用接口名作为引用变量的类型。通常的动态联编将生效。引用可以转换到 接口类型或从接口类型转换,instanceof 运算符可以用来决定某对象的类是否实现了接口。
接口可以继承接口。抽象类可以实现(implements)接口,抽象类是可以继承实体类,但前提是实体类必须有明确的构造函数。接口更关注“能实现什么功能”,而不管“怎么实现的”。
1.相同点
A. 两者都是抽象类,都不能实例化。
B. interface实现类及abstrct class的子类都必须要实现已经声明的抽象方法。
2. 不同点
A. interface需要实现,要用implements,而abstract class需要继承,要用extends。
B. 一个类可以实现多个interface,但一个类只能继承一个abstract class。
C. interface强调特定功能的实现,而abstract class强调所属关系。
D. 尽管interface实现类及abstrct class的子类都必须要实现相应的抽象方法,但实现的形式不同。interface中的每一个方法都是抽象方法,都只是声明的 (declaration, 没有方法体),实现类必须要实现。而abstract class的子类可以有选择地实现。
这个选择有两点含义:
一是Abastract class中并非所有的方法都是抽象的,只有那些冠有abstract的方法才是抽象的,子类必须实现。那些没有abstract的方法,在Abstrct class中必须定义方法体。
二是abstract class的子类在继承它时,对非抽象方法既可以直接继承,也可以覆盖;而对抽象方法,可以选择实现,也可以通过再次声明其方法为抽象的方式,无需实现,留给其子类来实现,但此类必须也声明为抽象类。既是抽象类,当然也不能实例化。
E. abstract class是interface与Class的中介。
interface是完全抽象的,只能声明方法,而且只能声明pulic的方法,不能声明private及protected的方法,不能定义方法体,也 不能声明实例变量。然而,interface却可以声明常量变量,并且在JDK中不难找出这种例子。但将常量变量放在interface中违背了其作为接 口的作用而存在的宗旨,也混淆了interface与类的不同价值。如果的确需要,可以将其放在相应的abstract class或Class中。
abstract class在interface及Class中起到了承上启下的作用。一方面,abstract class是抽象的,可以声明抽象方法,以规范子类必须实现的功能;另一方面,它又可以定义缺省的方法体,供子类直接使用或覆盖。另外,它还可以定义自己 的实例变量,以供子类通过继承来使用。
3. interface的应用场合
A. 类与类之前需要特定的接口进行协调,而不在乎其如何实现。
B. 作为能够实现特定功能的标识存在,也可以是什么接口方法都没有的纯粹标识。
C. 需要将一组类视为单一的类,而调用者只通过接口来与这组类发生联系。
D. 需要实现特定的多项功能,而这些功能之间可能完全没有任何联系。
4. abstract class的应用场合
一句话,在既需要统一的接口,又需要实例变量或缺省的方法的情况下,就可以使用它。最常见的有:
A. 定义了一组接口,但又不想强迫每个实现类都必须实现所有的接口。可以用abstract class定义一组方法体,甚至可以是空方法体,然后由子类选择自己所感兴趣的方法来覆盖。
B. 某些场合下,只靠纯粹的接口不能满足类与类之间的协调,还必需类中表示状态的变量来区别不同的关系。abstract的中介作用可以很好地满足这一点。
C. 规范了一组相互协调的方法,其中一些方法是共同的,与状态无关的,可以共享的,无需子类分别实现;而另一些方法却需要各个子类根据自己特定的状态来实现特定的功能。