1、什么是B/S技术?B/S技术与C/S技术的区别?
C/S模式:是客户端/服务器(Client/Server)模式,主要指的是传统的桌面级的应用程序。比如我们经常用的信息管理系统。
B/S模式:是浏览器/服务器(Browser/Server)模式,主要指的是web应用程序,就像你说的电子商务网站,如淘宝,阿里巴巴等。相对于C/S模式的应用程序来说,B/S模式最大的优势在于客户端只要有浏览器就可以运行。而C/S模式的应用程序需要在客户端进行安装,而且升级也不太方便。而B/S模式的应用程序对于客户端来说,永远都是最新版本的。
2、什么是URL?URL由几部分组成?
URL:统一资源定位符(Uniform Resource Locator)
一个完整的URL包括以下几部分:
1.协议部分:该URL的协议部分为“http:”,这代表网页使用的是HTTP协议。在Internet中可以使用多种协议,如HTTP,FTP等等本例中使用的是HTTP协议。在"HTTP"后面的“//”为分隔符。
2.域名部分:该URL的域名部分为“www.aspxfans.com”。一个URL中,也可以使用IP地址作为域名使用。
3.端口部分:跟在域名后面的是端口,域名和端口之间使用“:”作为分隔符。端口不是一个URL必须的部分,如果省略端口部分,将采用默认端口。
4.虚拟目录部分:从域名后的第一个“/”开始到最后一个“/”为止,是虚拟目录部分。虚拟目录也不是一个URL必须的部分。本例中的虚拟目录是“/news/”。
5.文件名部分:从域名后的最后一个“/”开始到“?”为止,是文件名部分,如果没有“?”,则是从域名后的最后一个“/”开始到“#”为止,是文件部分,如果没有“?”和“#”,那么从域名后的最后一个“/”开始到结束,都是文件名部分。本例中的文件名是“index.asp”。文件名部分也不是一个URL必须的部分,如果省略该部分,则使用默认的文件名。
6.锚部分:从“#”开始到最后,都是锚部分。本例中的锚部分是“name”。锚部分也不是一个URL必须的部分。
7.参数部分:从“?”开始到“#”为止之间的部分为参数部分,又称搜索部分、查询部分。本例中的参数部分为“boardID=5&ID=24618&page=1”。参数可以允许有多个参数,参数与参数之间用“&”作为分隔符。
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的选择显得比较随意。其实,两者之间还是有很大的区别的,对于它们的选择甚至反映出对于问题领域本质的理解、对于设计意图的理解是否正确、合理。
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. 规范了一组相互协调的方法,其中一些方法是共同的,与状态无关的,可以共享的,无需子类分别实现;而另一些方法却需要各个子类根据自己特定的状态来实现特定的功能。