复习答案.txt
来自「Java大部分的基础知识,EJB3,EJB2,WEBSERVICE,SOAP,J」· 文本 代码 · 共 870 行 · 第 1/3 页
TXT
870 行
基础
异常处理的关键字及作用
try:产生异常
catch:处理异常
finally:不管有没有异常必执行
throws:在方法声明处声明一个异常,调用者必须对这个异常进行处理
throw:在方法内抛出一个异常
抽象类与接口的区别
一个类只可以继承一个抽象类
抽象类即可有方法的实现又可以有方法声明
当功能需要累积时,用抽象类
一个类可以实现n个接口
接口只提供方法的声明不提供方法的实现阶段
当定义一个标准,功能不需要累积时用接口
final、finally、finalize的区别
final:不可变
finally:异常处理中,有没有异常必执行
finalize:是类级的一个方法,当虚拟机回收实例前执行
技术
jdbc的核心类及作用
DriverManager:得到连接
Connection:真实的数据连接,可以产年PreapredStatement
PreparedStatement:执行sql
executeUpdate:dml
executeQuery:dql
ResultSet:结果集
一行
if(rs.next())
{
}
while(rs.next())
{
}
如何实现从oracle数据库取一行
Class.forName("Oracle.jdbc.driver.OracleDriver");
Connection con=DriverManage.getConnection("jdbc:oracle:thin:@localhost:1521:accp","uid","pwd");
PreapredStatement ps=con.prepareStatement("select * from customer where customerName=?");
ps.setString(1,"张三");
ResultSet rs=ps.executeQuery();
Customer customer=new Customer();
if(rs.next())
{
customer.setCustomerName(rs.getString("customerName"));
}
如何实现一个servlet
类:
public class MyServlet extends HttpServlet
{
//如果超链或表单的method=get时触发
//信息量少,不安全,因在http请求的头
public void doGet(HttpServletRequest request,HttpServletResponse response)
{
}
//表单的method=post时触发
//信息量大,安全,因在http请求的正,一般用这种方法
public void doPost(HttpServletRequest request,HttpServletResponse response)
{
}
}
在web.xml文件中配置
<servlet>
<servlet-name>myservlet</servlet-name>
<servlet-class>aa.MyServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>myservlet</servlet-name>
<url-pattern>/myservlet</url-pattern>
<param>
<param-name>a1</param-name>
<param-value>@@@@@@@@@@@@</param-value>
</param>
</servlet-mapping>
servlet的核心类、作用、最重要的方法
HttpServletRequest:得到客户的请求个信息
String temp=request.getParameter("表单域名")
String temp[]=request.getParameterValues("表单域名");
request.getSession();
--转发,在下个页面中保留本页面request,response
request.getRequestDispatch("a.jsp").forward(request,response);
request.setAttribute("属性名",对象)
request.getAttribute("属性名")
HttpServletResponse:向客户响应信息
--跳转,在下个页面中不保留本页面request,response
response.sendRedirect("a.jsp");//跳转到下一个页面
PrintWriter pw=response.getWriter();//向客户打印一个脚本
HttpSession:一个用户多个页面共享同一变量
session.setAttribute("属性名","对象");
session.getAttribute("属性名");
ServletContext:全局变量,多个用户多个页面共享同一变量
servletContext.setAttribute("属性名","对象");
ServletConfig:一个servlet的配置
servletConfig.getParameter("a1")
servlet的生命周期
init
doGet/doPost
destroy
servlet的体系结构
Servlet接口
GenericServlet:通用的servlet,适合于所有的协议
HttpServlet:适合于Http协议
自定义 extends HttpServlet
{
}
过滤类的作用
public class MyFilter implements Filter
{
public void doFilter(HttpServletRequest request,HttpServletResponse response,Filter filte)
{
request.setCharactorSet("utf-8");
filter.doFilter(request,response);//给真正的处理者
System.out.println("aaaaaaaaaaaaaaa");
}
}
<filter>
<filter-name>code</filter-name>
<filter-class>aa.MyFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>code</filter-name>
<url-pattern>/*.do</url-pattern>
</filter-mapping>
转发、跳转、提交、超链的区别
转发:运行在服务端,下一页面保留当前页面的request、response
跳转:运行在服务端,下一页面不保留当前页面的request、response
提交:运行在客户端,向服务器发送请求,提交表单域的内容
超链:运行在客户端,向服务器发送请求,提交超链信息
jsp中的九大内置对象、作用、方法
request:HttpServletRequest
response:HttpServletResponse
session:HttpSession
application:ServletContext
out:向客户端打印文本
pageContext:当前jsp页面的上下文环境,主要用在自定义标签,可在得到其他的所有内置对象
pageContext.getSession();
pageContext.getOut();
pageContext.getApplication();
pageContext.forward();//转发到下一个页面
exception:错误页面的异常
<%@page contentType="text/html;charset=utf-8" isErrorPage="true"%>
page
当前jsp页面对应的servlet
config
当前jsp页面对应的servlet的ServletConfig
jsp的脚本及作用
<%%>:java代码
<%=%>:表达式
<%!%>:声明,声明一个类级的方法或属性
<%----%>:注释,在服务端不执行并不返回给客户
<!--
<%%>
-->:<%%>的内容在服务端执知并返回给客户端,客户端不解析
jsp的指令及作用
<%@page contentType="text/html;charset=utf-8" language="java"%>
<%@taglib uri="" prefix="html"%>
<%@include file="a.jsp"%>:在编译时将两个jsp合在一起生成源码,
再生成class文件执行,所以主页面与从页面变量不同重名。
jsp的动作及作用
<jsp:useBean id="" class="" scope=""/>
在scope中找名称是id的对象,如果有用已有的,
如果没有实例一个新的,其名称是id对应的名称
<jsp:setProperty name="名称" property="属性名" value="值"/>
<jsp:getProperty name="名称" property="属性名"/>
<jsp:forward page="a.jsp"/>:转发
<jsp:include page="a.jap"/>: 调用另一个jsp页面,将执行得到的html文本与当前jsp页面生成的文本合在一起。
是一种调用关系,变量名可以重名。
jsp是不是一个servlet:是
如何用EL语言打印某个作用域的变量
${requestScope.对象名.属性名}
jstl的遍历如何实现
<c:foreach items="${sessionScope.对象名}" var="一个对象">
</c:foreach>
jstl如何实现判断
<c:if test="条件">
</c:if>
<c:choose>
<c:when test="条件">
</c:when>
<c:otherwise>
</c:otherwise>
</c:choose>
简述设计模式的原则及目的
原则:
增加开发,修改关闭
面向接口或抽象类编程
目的:
可扩展
可维展
简述单例模式(singleton):整个虚拟机中只有一个实例
懒汉式:
用时才得到实例
饿汉式:
加载类时实例化一个实例
特点:
构造函数是私有
实例属性名私有、静态
得到实例的方法公有,静态
简述模板模式(template):父类提供抽象方法及具体方法,抽象方法由子类实现,父类的具体方法为子类
实现的抽象方法提供相关服务,公开的是子类的方法。
简述工厂模式:(simplefactory)
角色:
工厂
抽象产品
具体产品
作用:
通过工厂实例化一个具体产品,返回一个抽象产品,实现了部分的开闭原则,
增加一个产品时,不用修改客户端,只修改工厂,如果在工厂中用类的返射
就只改配置文件,不用修改工厂。
简述代理模式(静、动)
角色:
接口
真实对象
代理对象
作用:
代理与真实对象实现了同一接口并将真实对象作为代理的一个属性。
向客户端公开的代理,当客户端调用代理的方法时,代理调用真实对象的方法,
在调用真实对象的方法之前和之后可以做一些处理。
动态代理:不用写代理类,虚拟机根据真实对角实现的接口产生一个类,通过
类实例化一个动态代理,在实例化动态代理时将真实对象
及处理类注入到动态代理中,向客户端公开的是动态代理,
当客户端调用动态代理方法时,动态代理根据类的返射得
到真实对象的Method,调用处理类的invoke方法,将动态代理、
Method、方法参数传与invoke方法,invoke方法在唤
起method方法前或后做一些处理。
简述观察者
角色:
观察者(老鼠)
被观察者(猫)
实现:
将观察者聚集到被观察者,当被观察者的状态改变时通知所有的观察者。
应用:
awt的事件处理模型
简述架构设计的原则
上层依赖于下层,尽量减少下层对上层的依赖,层与层之间通过接口相互通信。
简述页面、业务层、dao层、持久层的作用及实现
总体说明:
页面:strutsMVC及请求处理过程
业务层:处理客户的一次操作
dao:让业务层与持久层强制解藕,当持久层了,对业务层没有任何影响。
持久层:hibernate jdbc ibatis
具体实现:
页面:struts MVC
业务层:
IFacade
Facade
FacadeFactory
dao层:
Dao接口
DaoImpl:实现
DaoFactory:产生具体的dao实例,返回dao接口
AbstactFactory:产生具体的daoFacatory实例,返回AbstractFactory,
用AbstractFactory代表具体的daoFactory,产生
具体dao实现,返回dao接口。
如何通过oracle实向分页处理,在java中怎样调用
--oracle的实现
create or replace package myPack
is
c_type is ref cursor;
procedure getPage(p_sql varchar2,pageSize number,currentPage number,c1 out c_type) ;
end;
create or replace package body myPack
is
procedure getPage(p_sql varchar2,pageSize number,currentPage number,c1 out c_type)
is
v_sql varchar2(2000);
begin
v_sql:='select * from ('||p_sql||') where rownum<='||currentPage*pageSize;
v_sql:=v_sql||' minus ';
v_sql:=v_sql||'select * from ('||p_sql||') where rownum<='||((currentPage1-)*pageSize);
open c1 for v_sql;
end;
end;
--java调用oracle
CallStatement cs=con.preCall("call {myPack.getPage(?,?,?,?)}");
cs.setString(1,"select * from customer");
cs.setInt(2,2);
cs.setInt(3,2);
cs.registerOutParameter(4,OracleTypes.cursorType);
cs.execute();
ResultSet rs=cs.getObejct(4);
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?