Java练习题第一套知识点

标识符

1>标识符由大小写字母, 下划线, 数字, $符号组成.

 

2>开头可以是大小写字母, 下划线, 和$符号.(数字不能开头)

 

3>标识符长度没有限制

 

4>标识符不能是关键字和保留字

 

标识符的命名最好能反映出其作用 ,java语言对字母的大小写有严格的要求.所有自定义标识符需全部遵循标识符的命名规范.

 

变量: 

 1>如果是单个单词, 单词全部字母小写. 如:intcount;

      

 2>如果是由多个单词组成的复合单词, 除第一个单词外,  其后所有单词首字母大写. 如: codeName;

 

常量 :

 常量所有单词字母大写, 如果是由多个单词组成, 由下划线连接.如:String PERSON_NAME;

 

方法:

方法命名规范与变量相似, 如 count(); getSum();

 

类: 

 类名的所有单词首字母均大写. 如Person{}  , DataCenter{};

 

包:  

用小写的倒置域名来命名. 格式: 前缀 + 项目名 + 模块名 + 层如: org.itfuture.domain.sorts  

 

 

标签

标签

描述

<!--...-->

定义注释。

<!DOCTYPE>

定义文档类型。

<a>

定义锚。

<abbr>

定义缩写。

<acronym>

定义只取首字母的缩写。

<address>

定义文档作者或拥有者的联系信息。

<applet>

不赞成使用。定义嵌入的 applet

<area>

定义图像映射内部的区域。

<article>

定义文章。

<aside>

定义页面内容之外的内容。

<audio>

定义声音内容。

<b>

定义粗体字。

<base>

定义页面中所有链接的默认地址或默认目标。

<basefont>

不赞成使用。定义页面中文本的默认字体、颜色或尺寸。

<bdi>

定义文本的文本方向,使其脱离其周围文本的方向设置。

<bdo>

定义文字方向。

<big>

定义大号文本。

<blockquote>

定义长的引用。

<body>

定义文档的主体。

<br>

定义简单的折行。

<button>

定义按钮 (push button)

<canvas>

定义图形。

<caption>

定义表格标题。

<center>

不赞成使用。定义居中文本。

<cite>

定义引用(citation)

<code>

定义计算机代码文本。

<col>

定义表格中一个或多个列的属性值。

<colgroup>

定义表格中供格式化的列组。

<command>

定义命令按钮。

<datalist>

定义下拉列表。

<dd>

定义定义列表中项目的描述。

<del>

定义被删除文本。

<details>

定义元素的细节。

<dir>

不赞成使用。定义目录列表。

<div>

定义文档中的节。

<dfn>

定义定义项目。

<dialog>

定义对话框或窗口。

<dl>

定义定义列表。

<dt>

定义定义列表中的项目。

<em>

定义强调文本。

<embed>

定义外部交互内容或插件。

<fieldset>

定义围绕表单中元素的边框。

<figcaption>

定义 figure 元素的标题。

<figure>

定义媒介内容的分组,以及它们的标题。

<font>

不赞成使用。定义文字的字体、尺寸和颜色。

<footer>

定义 section page 的页脚。

<form>

定义供用户输入的 HTML 表单。

<frame>

定义框架集的窗口或框架。

<frameset>

定义框架集。

<h1> to <h6>

定义 HTML 标题。

<head>

定义关于文档的信息。

<header>

定义 section page 的页眉。

<hr>

定义水平线。

<html>

定义 HTML 文档。

<i>

定义斜体字。

<iframe>

定义内联框架。

<img>

定义图像。

<input>

定义输入控件。

<ins>

定义被插入文本。

<isindex>

不赞成使用。定义与文档相关的可搜索索引。

<kbd>

定义键盘文本。

<keygen>

定义生成密钥。

<label>

定义 input 元素的标注。

<legend>

定义 fieldset 元素的标题。

<li>

定义列表的项目。

<link>

定义文档与外部资源的关系。

<map>

定义图像映射。

<mark>

定义有记号的文本。

<menu>

定义菜单列表。

<meta>

定义关于 HTML 文档的元信息。

<meter>

定义预定义范围内的度量。

<nav>

定义导航链接。

<noframes>

定义针对不支持框架的用户的替代内容。

<noscript>

定义针对不支持客户端脚本的用户的替代内容。

<object>

定义内嵌对象。

<ol>

定义有序列表。

<optgroup>

定义选择列表中相关选项的组合。

<option>

定义选择列表中的选项。

<output>

定义输出的一些类型。

<p>

定义段落。

<param>

定义对象的参数。

<pre>

定义预格式文本。

<progress>

定义任何类型的任务的进度。

<q>

定义短的引用。

<rp>

定义若浏览器不支持 ruby 元素显示的内容。

<rt>

定义 ruby 注释的解释。

<ruby>

定义 ruby 注释。

<s>

定义加删除线的文本。

<samp>

定义计算机代码样本。

<script>

定义客户端脚本。

<section>

定义 section

<select>

定义选择列表(下拉列表)

<small>

定义小号文本。

<source>

定义媒介源。

<span>

定义文档中的节。

<strike>

不赞成使用。定义加删除线文本。

<strong>

定义强调文本。

<style>

定义文档的样式信息。

<sub>

定义下标文本。

<summary>

<details> 元素定义可见的标题。

<sup>

定义上标文本。

<table>

定义表格。

<tbody>

定义表格中的主体内容。

<td>

定义表格中的单元。

<textarea>

定义多行的文本输入控件。

<tfoot>

定义表格中的表注内容(脚注)

<th>

定义表格中的表头单元格。

<thead>

定义表格中的表头内容。

<time>

定义日期/时间。

<title>

定义文档的标题。

<tr>

定义表格中的行。

<track>

定义用在媒体播放器中的文本轨道。

<tt>

定义打字机文本。

<u>

定义下划线文本。

<ul>

定义无序列表。

<var>

定义文本的变量部分。

<video>

定义视频。

<wbr>

定义视频。

<xmp>

定义预格式文本。

 

Applet标签

详见http://www.w3school.com.cn/tags/tag_applet.asp

         https://baike.so.com/doc/1419575-1500563.html

 

Java异常

java中常见的几种异常

 (2012-07-24 11:26:02)

转载

标签: 

杂谈

分类: 学习笔记

算术异常类:ArithmeticExecption

空指针异常类:NullPointerException

类型强制转换异常:ClassCastException

数组负下标异常:NegativeArrayException

数组下标越界异常:ArrayIndexOutOfBoundsException

违背安全原则异常:SecturityException

文件已结束异常:EOFException

文件未找到异常:FileNotFoundException

字符串转换为数字异常:NumberFormatException


操作数据库异常:SQLException


输入输出异常:IOException


方法未找到异常:NoSuchMethodException

java.lang.AbstractMethodError

抽象方法错误。当应用试图调用抽象方法时抛出。

java.lang.AssertionError

断言错。用来指示一个断言失败的情况。

java.lang.ClassCircularityError

类循环依赖错误。在初始化一个类时,若检测到类之间循环依赖则抛出该异常。

java.lang.ClassFormatError

类格式错误。当Java虚拟机试图从一个文件中读取Java类,而检测到该文件的内容不符合类的有效格式时抛出。

java.lang.Error

错误。是所有错误的基类,用于标识严重的程序运行问题。这些问题通常描述一些不应被应用程序捕获的反常情况。

java.lang.ExceptionInInitializerError

初始化程序错误。当执行一个类的静态初始化程序的过程中,发生了异常时抛出。静态初始化程序是指直接包含于类中的static语句段。

java.lang.IllegalAccessError

违法访问错误。当一个应用试图访问、修改某个类的域(Field)或者调用其方法,但是又违反域或方法的可见性声明,则抛出该异常。

java.lang.IncompatibleClassChangeError

不兼容的类变化错误。当正在执行的方法所依赖的类定义发生了不兼容的改变时,抛出该异常。一般在修改了应用中的某些类的声明定义而没有对整个应用重新编译而直接运行的情况下,容易引发该错误。

java.lang.InstantiationError

实例化错误。当一个应用试图通过Java的new操作符构造一个抽象类或者接口时抛出该异常.

java.lang.InternalError

内部错误。用于指示Java虚拟机发生了内部错误。

java.lang.LinkageError

链接错误。该错误及其所有子类指示某个类依赖于另外一些类,在该类编译之后,被依赖的类改变了其类定义而没有重新编译所有的类,进而引发错误的情况。

java.lang.NoClassDefFoundError

未找到类定义错误。当Java虚拟机或者类装载器试图实例化某个类,而找不到该类的定义时抛出该错误。

java.lang.NoSuchFieldError

域不存在错误。当应用试图访问或者修改某类的某个域,而该类的定义中没有该域的定义时抛出该错误。

java.lang.NoSuchMethodError

方法不存在错误。当应用试图调用某类的某个方法,而该类的定义中没有该方法的定义时抛出该错误。

java.lang.OutOfMemoryError

内存不足错误。当可用内存不足以让Java虚拟机分配给一个对象时抛出该错误。

java.lang.StackOverflowError

堆栈溢出错误。当一个应用递归调用的层次太深而导致堆栈溢出时抛出该错误。

java.lang.ThreadDeath

线程结束。当调用Thread类的stop方法时抛出该错误,用于指示线程结束。

java.lang.UnknownError

未知错误。用于指示Java虚拟机发生了未知严重错误的情况。

java.lang.UnsatisfiedLinkError

未满足的链接错误。当Java虚拟机未找到某个类的声明为native方法的本机语言定义时抛出。

java.lang.UnsupportedClassVersionError

不支持的类版本错误。当Java虚拟机试图从读取某个类文件,但是发现该文件的主、次版本号不被当前Java虚拟机支持的时候,抛出该错误。

java.lang.VerifyError

验证错误。当验证器检测到某个类文件中存在内部不兼容或者安全问题时抛出该错误。

java.lang.VirtualMachineError

虚拟机错误。用于指示虚拟机被破坏或者继续执行操作所需的资源不足的情况。

java.lang.ArithmeticException

算术条件异常。譬如:整数除零等。

java.lang.ArrayIndexOutOfBoundsException

数组索引越界异常。当对数组的索引值为负数或大于等于数组大小时抛出。

java.lang.ArrayStoreException

数组存储异常。当向数组中存放非数组声明类型对象时抛出。

java.lang.ClassCastException

类造型异常。假设有类A和B(A不是B的父类或子类),O是A的实例,那么当强制将O构造为类B的实例时抛出该异常。该异常经常被称为强制类型转换异常。

java.lang.ClassNotFoundException

找不到类异常。当应用试图根据字符串形式的类名构造类,而在遍历CLASSPAH之后找不到对应名称的class文件时,抛出该异常。

java.lang.CloneNotSupportedException

不支持克隆异常。当没有实现Cloneable接口或者不支持克隆方法时,调用其clone()方法则抛出该异常。

java.lang.EnumConstantNotPresentException

枚举常量不存在异常。当应用试图通过名称和枚举类型访问一个枚举对象,但该枚举对象并不包含常量时,抛出该异常。

java.lang.Exception

根异常。用以描述应用程序希望捕获的情况。

java.lang.IllegalAccessException

违法的访问异常。当应用试图通过反射方式创建某个类的实例、访问该类属性、调用该类方法,而当时又无法访问类的、属性的、方法的或构造方法的定义时抛出该异常。

java.lang.IllegalMonitorStateException

违法的监控状态异常。当某个线程试图等待一个自己并不拥有的对象(O)的监控器或者通知其他线程等待该对象(O)的监控器时,抛出该异常。

java.lang.IllegalStateException

违法的状态异常。当在Java环境和应用尚未处于某个方法的合法调用状态,而调用了该方法时,抛出该异常。

java.lang.IllegalThreadStateException

违法的线程状态异常。当县城尚未处于某个方法的合法调用状态,而调用了该方法时,抛出异常。

java.lang.IndexOutOfBoundsException

索引越界异常。当访问某个序列的索引值小于0或大于等于序列大小时,抛出该异常。

java.lang.InstantiationException

实例化异常。当试图通过newInstance()方法创建某个类的实例,而该类是一个抽象类或接口时,抛出该异常。

java.lang.InterruptedException

被中止异常。当某个线程处于长时间的等待、休眠或其他暂停状态,而此时其他的线程通过Thread的interrupt方法终止该线程时抛出该异常。

java.lang.NegativeArraySizeException

数组大小为负值异常。当使用负数大小值创建数组时抛出该异常。

java.lang.NoSuchFieldException

属性不存在异常。当访问某个类的不存在的属性时抛出该异常。

java.lang.NoSuchMethodException

方法不存在异常。当访问某个类的不存在的方法时抛出该异常。

java.lang.NullPointerException

空指针异常。当应用试图在要求使用对象的地方使用了null时,抛出该异常。譬如:调用null对象的实例方法、访问null对象的属性、计算null对象的长度、使用throw语句抛出null等等。

java.lang.NumberFormatException

数字格式异常。当试图将一个String转换为指定的数字类型,而该字符串确不满足数字类型要求的格式时,抛出该异常。

java.lang.RuntimeException

运行时异常。是所有Java虚拟机正常操作期间可以被抛出的异常的父类。

java.lang.SecurityException

安全异常。由安全管理器抛出,用于指示违反安全情况的异常。

java.lang.StringIndexOutOfBoundsException

字符串索引越界异常。当使用索引值访问某个字符串中的字符,而该索引值小于0或大于等于序列大小时,抛出该异常。

java.lang.TypeNotPresentException

类型不存在异常。当应用试图以某个类型名称的字符串表达方式访问该类型,但是根据给定的名称又找不到该类型是抛出该异常。该异常与ClassNotFoundException的区别在于该异常是unchecked(不被检查)异常,而ClassNotFoundException是checked(被检查)异常。

java.lang.UnsupportedOperationException

不支持的方法异常。指明请求的方法不被支持情况的异常。

异常
javax.servlet.jsp.JspException: Cannot retrieve mapping for action /Login (/Login是你的action名字)   

可能原因
action没有再struts-config.xml 中定义,或没有找到匹配的action,例如在JSP文件中使用 <html:form action="Login.do".将表单提交给

Login.do处理,如果出现上述异常,请查看struts-config.xml中的定义部分,有时可能是打错了字符或者是某些不符合规则,可以使用struts

console工具来检查。
-----------------------------------------------------------------------------------------------------------------
异常
org.apache.jasper.JasperException: Cannot retrieve definition for form beannull

可能原因      
       
这个异常是因为Struts根据struts-config.xml中的mapping没有找到action期望的form bean。大部分的情况可能是因为在form-bean中设置的

name属性和action中设置的name属性不匹配所致。换句话说,action和form都应该各自有一个name属性,并且要精确匹配,包括大小写。这个

错误当没有name属性和action关联时也会发生,如果没有在action中指定name属性,那么就没有name属性和action相关联。当然当action制作

某些控制时,譬如根据参数值跳转到相应的jsp页面,而不是处理表单数据,这是就不用name属性,这也是action的使用方法之一。
-----------------------------------------------------------------------------------------------------------------
异常
No action instance for path /xxxx could be created

可能原因
特别提示:因为有很多中情况会导致这个错误的发生,所以推荐大家调高你的web服务器的日志/调试级别,这样可以从更多的信息中看到潜在

的、在试图创建action类时发生的错误,这个action类你已经在struts-config.xml中设置了关联(即添加了<action>标签)。

在struts-config.xml中通过action标签的class属性指定的action类不能被找到有很多种原因,例如:

定位编译后的.class文件失败。Failure to place compiled .class file for the action in theclasspath (在web开发中,class的的位置

在r WEB-INF/classes,所以你的action class必须要在这个目录下。例如你的action类位于WEB-INF/classes/action/Login.class,那么在

struts-config.xml中设置action的属性type时就是action.Login).
拼写错误,这个也时有发生,并且不易找到,特别注意第一个字母的大小写和包的名称。
-----------------------------------------------------------------------------------------------------------------
异常
javax.servlet.jsp.JspException: No getter method for property username of beanorg.apache.struts.taglib.html.BEAN

可能原因
没有位form bean中的某个变量定义getter 方法

这个错误主要发生在表单提交的FormBean中,用struts标记<html:text property=”username”>时,在FormBean中必须有一个getUsername()

方法。注意字母“U”。
-----------------------------------------------------------------------------------------------------------------
异常
java.lang.NoClassDefFoundError: org/apache/struts/action/ActionForm

可能原因
这个错误主要发生在在classpath中找不到相应的Java .class文件。如果这个错误发生在web应用程序的运行时,主要是因为指定的class文件

不在web server的classpath中(/WEB-INF/classes 和 /WEB-INF/lib)。

在上面的错误中,原因是找不到ActionForm类。
-----------------------------------------------------------------------------------------------------------------
异常
javax.servlet.jsp.JspException: Exception creating bean of classorg.apache.struts.action.ActionForm: {1}

可能原因
Instantiating Struts-provided ActionForm class directly instead ofinstantiating a class derived off ActionForm. This might

occur implicitly if you specify that aform-bean is this Struts ActionForm class rather than specifying a child ofthis class

for the form-bean.

Not associating an ActionForm-descended class with an action can also lead tothis error.
-----------------------------------------------------------------------------------------------------------------
异常
javax.servlet.jsp.JspException: Cannot find ActionMappings or ActionFormBeanscollection

可能原因
不是标识Struts actionServlet的<servlet>标记就是映射.do扩展名的<sevlet-mapping>标记或者两者都没有在web.xml中声明。

在struts-config.xml中的打字或者拼写错误也可导致这个异常的发生。例如缺少一个标记的关闭符号/>。最好使用struts console工具检查一

下。

另外,load-on-startup必须在web.xml中声明,这要么是一个空标记,要么指定一个数值,这个数值用来表servlet运行的优先级,数值越大优

先级越低。

还有一个和使用load-on-startup有关的是使用Struts预编译JSP文件时也可能导致这个异常。
-----------------------------------------------------------------------------------------------------------------
异常
java.lang.NullPointerException atorg.apache.struts.util.RequestUtils.forwardURL(RequestUtils.java:1223)

可能原因
在struts-config.xml中的forward元素缺少path属性。例如应该是如下形式:
<forward name="userhome" path="/user/userhome.jsp"/>
-----------------------------------------------------------------------------------------------------------------
异常
javax.servlet.jsp.JspException: Cannot find beanorg.apache.struts.taglib.html.BEAN in any scope


  

Probable Causes
试图在Struts的form标记外使用form的子元素。这常常发生在你在</html:form>后面使用Struts的html标记。

另外要注意可能你不经意使用的无主体的标记,如<html:form … />,这样web 服务器解析时就当作一个无主体的标记,随后使用的所有

<html>标记都被认为是在这个标记之外的,如又使用了<html:textproperty=”id”>

还有就是在使用taglib引入HTML标记库时,你使用的prefix的值不是html。
-----------------------------------------------------------------------------------------------------------------
异常
javax.servlet.jsp.JspException: Missing message for key xx.xx.xx

Probable Causes
这个key的值对没有在资源文件ApplicationResources.properties中定义。如果你使用eclipse时经常碰到这样的情况,当项目重新编译时,

eclipse会自动将classes目录下的资源文件删除。

资源文件ApplicationResources.properties 不在classpath中应将资源文件放到WEB-INF/classes 目录下,当然要在struts-config.xml中

定义)
-----------------------------------------------------------------------------------------------------------------
异常
Cannot find message resources under key org.apache.struts.action.MESSAGE

可能原因
很显然,这个错误是发生在使用资源文件时,而Struts没有找到资源文件。

Implicitly trying to use message resources that are not available (such asusing empty html:options tag instead of specifying

the options in its body -- this assumesoptions are specified in ApplicationResources.properties file)

XML parser issues -- too many, too few, incorrect/incompatible versions
-----------------------------------------------------------------------------------------------------------------
异常
Strange and seemingly random characters in HTML and on screen, but not inoriginal JSP or servlet.

可能原因
混和使用Struts的html:form标记和标准的HTML标记不正确。

使用的编码样式在本页中不支持。
-----------------------------------------------------------------------------------------------------------------
异常
"Document contained no data" in Netscape

No data rendered (completely empty) page in Microsoft Internet Explorer

可能原因
使用一个Action的派生类而没有实现perform()方法或execute()方法。在Struts1.0中实现的是perform()方法,在Struts1.1中实现的是

execute()方法,但Struts1.1向后兼容perform()方法。

但你使用Struts1.1创建一个Action的派生类,并且实现了execute()方法,而你在Struts1.0中运行的话,就会得到"Document contained no

data" error message in Netscape or acompletely empty (no HTML whatsoever) page rendered in Microsoft InternetExplorer.”的

错误信息。

---------------------------------------------------------------------------------------------------------------------------
异常
ServletException: BeanUtils.populate
解决方案
在用Struts上传文件时,遇到了javax.servlet.ServletException: BeanUtils.populate异常。
我的ActionServlet并没有用到BeanUtils这些工具类。后来仔细检查代码发现是在jsp文件里的form忘了加enctype=&quot;multipart/form-

data&quot; 了。所以写程序遇到错误或异常应该从多方面考虑问题存在的可能性,想到系统提示信息以外的东西。
----------------------------------------------------------------------------------------------------------------------------
1. 定义Action后, 如果指定了name, 那么必须要定义一个与它同名的FormBean才能进行form映射.

2. 如果定义Action后, 提交页面时出现"No input attribute for mapping path..." 错误, 则需要在其input属性中定义转向的页面.

3. 如果插入新的数据时出现"Batch update row count wrong:..." 错误, 则说明XXX.hbm.xml中指定的key的类型为原始类型(int,long),

因为这种类型会自动分配值, 而这个值往往会让系统认为已经存在该记录, 正确的方法是使用java.lang.Integer或java.lang.Long对象.

4. 如果插入数据时出现"argument type mismatch" 错误, 可能是你使用了Date等特殊对象, 因为struts不能自动从String型转换成Date型,

所以, 你需要在Action中手动把String型转换成Date型.

5. Hibernate中, Query的iterator()比list()方法快很多.

6. 如果出现 "equalsymbol expected" 错误, 说明你的strtus标签中包含另一个标签或者变量, 例如:
<html:select property="test"οnchange="<%=test%>"/>
或者
<html:hidden property="test" value="<bean:writename="t" property="p"/>"/>
这样的情况...
---------------------------------------------------------------------------------------------------------------------------
错误:

Exception in thread "main"org.hibernate.exception.SQLGrammarException: Could not execute JDBC batchupdate

原因与解决:

      因为HibernateTools(或者Eclipse本身的Database Explorer)生成*.hbn.xml工具中包含有catalog="***"(*表示数据库名称)这样的

属性,将该属性删除就可以了
---------------------------------------------------------------------------------------------------------------------------
错误:

org.hibernate.ObjectDeletedException:deleted object would be re-saved by cascade (remove deleted object fromassociations)


原因与解决:
方法1 删除Set方的cascade
方法2 解决关联关系后,再删除
方法3 在many-to-one方增加cascade 但值不能是none
最后一招:
检查一下hashCode equals是否使用了id作为唯一标示的选项了;我用uuid.hex时是没有问题的;但是用了native,就不行了,怎么办?删除啊


----------------------------------------------------------------------------------------------------------------------------
问题:

今天用Tomcat 5.5.12,发现原来很好用的系统不能用了,反复测试发现页面中不能包含 taglib,否则会出现以下提示:

HTTP Status 500 -type Exception report

Message

description The server encountered aninternal error () that prevented it from fulfilling this request.

exception

org.apache.jasper.JasperException:/index.jsp(1,1) Unable to read TLD "META-INF/tlds/struts-bean.tld"from JAR file

"file:*****/WEB-INF/lib/struts.jar":

原因:

更新了工程用的lib文件夹下的jar,发布时也发布了servlet.jar和jsp-api.jar。

解决:

把jsp-api.jar删除就解决这个问题了。

-----------------------------------------------------------------------------------------------------------------------------
错误: java.lang.NullPointerException
原因: 发现 dao 实例、 manage 实例等需要注入的东西没有被注入(俗称空指针异常)

解决:这个时候,你应该查看日志文件;默认是应用服务器的 log 文件,比如 Tomcat 就是 [Tomcat 安装目录 ]/logs ;你会发现提示你:

可能是:

org.springframework.beans.factory.BeanCreationException:Error creating bean with name 'sf' defined in ServletContext

resource [/WEB-INF/applicationContext.xml]:Initialization of bean failed; nested exception is

org.hibernate.HibernateException: could notconfigure from URL: file:src/hibernate.cfg.xml

org.hibernate.HibernateException: could notconfigure from URL: file:src/hibernate.cfg.xml

……………………….

Caused by: java.io.FileNotFoundException:src\hibernate.cfg.xml

可能是:

org.springframework.beans.factory.BeanCreationException:Error creating bean with name 'sessionFactory' defined in

ServletContext resource[/WEB-INF/applicationContext.xml]: Initialization of bean failed; nestedexception is

org.hibernate.MappingException: Resource:com/mcc/coupon/model/UserRole.hbm.xml not found

org.hibernate.MappingException: Resource:com/mcc/coupon/model/UserRole.hbm.xml not found

然后你就知道原因是因为配置文件的解析出了错误,这个通过 Web 页面是看不出来的。

更多的是持久化影射文件出的错误;导致了没有被解析;当然你需要的功能就无法使用了。
----------------------------------------------------------------------------------------------------------------------------
错误:

StandardWrapperValve[action]:Servlet.service() for servlet action threw exception
javax.servlet.jsp.JspException: Cannot retrieve mapping for action/settlementTypeManage


或者:

      typeStatus report

      messageServlet action is not available

      descriptionThe requested resource (Servlet action is not available) is not available.


原因: 同 上
----------------------------------------------------------------------------------------------------------------------------
错误

StandardWrapperValve[jsp]:Servlet.service() for servlet jsp threw exception

java.lang.ClassNotFoundException:org.apache.struts.taglib.bean.CookieTei

界面错误具体描述:
org.apache.jasper.JasperException: Failed to load or instantiate TagExtraInfoclass: org.apache.struts.taglib.bean.CookieTei


      原因与解决:

    <方案一>你的“html:”开头的标签没有放在一个<html:form>中

       <方案二>重新启动你的应用服务器,自动就没有这个问题了

 

Java异常处理语句块

Java中用异常处理机制来协助程序报告和处理发生的错误。当错误产生时,程序会抛出一个“异常”,正在运行的程序会被中断,运行事先编好的异常错误处理器(exception handler),即处理错误的一段代码。异常处理器可以尝试着从错误中恢复,若错误不可恢复,那么就温和的从程序中退出

 

 异常处理器一般包含以下三种语句:

Øtry 标识一个可能会抛出异常的语句块。

Øcatch与上面的try相关联,在里面有异常处理语句块,如果异常被抛出,那么就执行其中语句块。

Øfinally与上面try相关联,无论错误是否发生都将执行其中的语句块。

 

下面是异常处理器的一般形式:

          try {

                     statement(s)

               } catch (exceptiontypename){

                    statement(s)

               } finally {

                    statement(s)

               }

 

Java的四种选择结构

if(){}语句

switch{case……}语句

while(){}语句

do{}while()语句

 

多线程  途径 继承thread类或者实现runnable接口

Runnable接口非常简单,就定义了一个方法run(),继承Runnable并实现这个
方法就可以实现多线程了,但是这个run()方法不能自己调用,必须由系统来调用,否则就和别的方法没有什么区别了.
先给一个简单的例子:
public class MultiThread implements Runnable{
 public static void main(String[] args){
    for(int i=0;i<10;i++){
       new Thread(new MultiThread()).start();//correct
                //new Thread(new MultiThread()).run 1
  //new MultiThread().run()      2 
    }
 }
 public void run(){    
    System.out.println(Thread.currentThread().getName());
 }
}
运行后应该启动了10个新的线程,加上主线程一共11个线程,应该输出是Thread-1知道10.
这里要注意启动线程的方式是调用了Thread的start()方法,而不是run方法,如果
用注释里的1或者2输入都是10个main,因为这个时候run()方法还原了,和普通方法一样了.
我们也可以得出一个结论:所有的线程在运行时都是一个Thread实例,虽然可以不用继承Thread
实现多线程,但是最终还是Thread的一个实例.

 

字符串操作

字符串操作

1String

String字符串的值不可更改。

常用方法:

Ø  charAt(int  i):返回指定索引处的字符;

Ø  length():返回字符串的长度;

Ø  contains(CharSequence  c):判断字符串中是否包含指定的字符序列;

Ø  startsWith(String s):判断字符串是否以指定的前缀开始;

Ø  endsWith(String s):判断字符串是否以指定的后缀结束;

Ø  indexOf(char c):返回指定字符在字符串中第一次出现的索引;

Ø  lastIndexOf(char c):返回指定字符在字符串中最后一次出现的索引;

Ø  isEmpty():当且仅当字符串长度为0时,返回true;

Ø  replace(char old,char new):把字符串中的old字符替换为new字符,然后返回一个新字符串;

Ø  split(String s):根据指定的规则拆分字符串,返回字符串数组;

Ø  subString(int begin,int end):按照指定的索引截取字符串,从begin(包含)开始,到end(不包含)结束;

Ø  toLowerCase():把字符串的英文字母全部转为小写;

Ø  toUpperCase():把字符串的英文字母全部转为大写;

Ø  trim():清除字符串前后的空白字符;

Ø  valueOf():把指定类型的数据转为字符串类型;

Ø  toCharArray():把字符串转为字符数组;

 

2可变字符序列

StringBuffer和StringBuilder都是可变的字符序列,唯一的区别:StringBuffer是线程安全的,StringBuilder是线程不安全;

常用方法:

Ø  append():追加;

Ø  toString():把所有追加的内容以String类型返回;

 

构造方法

{引用360百科}

Ø  构造方法是一种特殊的方法,它是一个与类同名且没有返回值类型方法。对象的创建就是通过构造方法来完成,其功能主要是完成对象的初始化。当类实例化一个对象时会自动调用构造方法。构造方法和其他方法一样也可以重载。

https://baike.so.com/doc/1017212-1075815.html

 

BufferedReader用法

public classBufferdReader extends Reader
从字符输入流中读取文本,缓冲各个字符,从而提供字符、数组和行的高效读取。

通常,Reader 所作的每个读取请求都会导致对基础字符或字节流进行相应的读取请求。因此,建议用 BufferedReader 包装所有其 read() 操作可能开销很高的 Reader(如 FileReader 和 InputStreamReader)。例如,

BufferedReader in
     = new BufferedReader(newFileReader("foo.in"));
将缓冲指定文件的输入。如果没有缓冲,则每次调用 read() 或 readLine() 都会导致从文件中读取字节,并将其转换为字符后返回,而这是极其低效的。

可以对使用 DataInputStream 进行按原文输入的程序进行本地化,方法是用合适的 BufferedReader 替换每个 DataInputStream。

import java.io.InputStreamReader;
import java.io.BufferedReader;
public class BufferedReaderDemo
{
      public static void main(String[] args)throws java.io.IOException{
        BufferedReader br = newBufferedReader(new InputStreamReader(System.in));
        System.out.println("请输入一段文字,可包含空白:");
        String text = br.readLine();
        System.out.println("您输入的文字:"+text);
}
}

接口的定义

接口定义是在java程序中,其中的方法全是抽象的,就是只有方法没有执行体。
。接口提供一种途径,使类隐藏其处理的特定事物细节,仅对外公布它必须支持的属性。对于编程所涉及的,你可以修改类的实现,而不修改它的调用,因为属性本身没有改变,修改的仅仅是类的实现

 

内部类的定义

内部类(nested classes),面向对象程序设计中,可以在一个类的内部定义另一个类。嵌套类分为两种,即静态嵌套类和非静态嵌套类。静态嵌套类使用很少,最重要的是非静态嵌套类,也即是被称作为内部类(inner)。内部类是JAVA语言的主要附加部分。内部类几乎可以处于一个类内部任何位置,可以与实例变量处于同一级,或处于方法之内,甚至是一个表达式的一部分。。

定义

内部类是JAVA语言的主要附加部分。嵌套类从JDK1.1开始引入。其中inner类又可分为三种:

其一、在一个类(外部类)中直接定义的内部类;

其二、在一个方法(外部类的方法)中定义的内部类;

其三、匿名内部类。

表现形式

静态内部类

成员内部类

⒊局部内部类

⒋匿名内部类

优点

⒈ 内部类对象可以访问创建它的对象的实现,包括私有数据;

⒉ 内部类不为同一包的其他类所见,具有很好的封装性;

⒊ 使用内部类可以很方便的编写事件驱动程序;

⒋ 匿名内部类可以方便的定义运行时回调;

5.内部类可以方便的定义

访问类型

静态方法的内部类可以访问外部类的静态变量:静态变量

静态方法的内部类可以访问方法的final变量:2

静态方法的匿名内部类可以访问外部类的静态变量:静态变量

静态方法的匿名内部类可以访问方法的final变量:2

静态方法的内部类可以访问外部类的实例变量:实例变量

非静态方法的内部类可以访问外部类的静态变量:静态变量

非静态方法的内部类可以访问方法的final变量:2

非静态方法的匿名内部类可以访问外部类的实例变量:实例变量

非静态方法的匿名内部类可以访问外部类的静态变量:静态变量

非静态方法的匿名内部类可以访问方法的final变量:2

访问内容

我是静态内部类

我可以访问 外部类的类的静态成员

我是成员级内部类,非静态内部类

我可以访问外部类的实例变量静态变量和常量

同步与异步的区别

同步就是在一个主线程里,你要做三件事情,A做完了做B,B完了再做C,是顺序执行的; 

异步就是在一个主线程里,你开了三个线程来分别处理ABC这三件事,这三个子线程在代码调用的时候可能你是先调A再调B和C,但是在执行子线程的时候即使A线程没执行完,线程B和C也会往下执行,让我们看起来好像ABC三个线程是互不干扰的分别在执行。 

很多时候我们会用异步多线程来处理同一业务里的大量数据,好比有一千个订单要处理,如果你用一个线程顺序执行,你就要循环这批订单,一个个处理,消耗非常多时间;但是用多线程你就可以开十几二十个线程异步处理,让效率提高很多。 

另外,异步虽然我们看起来是很多个线程同时在跑,其实对同一CPU来说它在同一时间还是只能处理一个线程的,只是在一个线程里遇到有IO操作等等需要CPU等待的时候,就会切换到另一个线程去执行,加强了使CPU使用率,所以并不是什么时候都适合使用多线程的

Java数据类型及其取值范围

Java线程wait方法

wait 是Object 类的方法,对此对象调用wait 方法导致本线程放弃对象锁,进入等待此对象的等待锁定池,只有针对此对象发出notify 方法(或notifyAll)后本线程才进入对象锁定池准备获得对象锁进入运行状态。
  wait属于Object的成员方法,一旦一个对象调用了wait方法,必须要采用notify()和notifyAll()方法唤醒该进程;如果线程拥有某个或某些对象的同步锁,那么在调用了wait()后,这个线程就会释放它持有的所有同步资源,而不限于这个被调用了wait()方法的对象。wait()方法也同样会在wait的过程中有可能被其他对象调用interrupt()方法而产生

 

Java EE ,JavaSE,Java ME

1. Java SE(Java Platform,Standard Edition)。Java SE 以前称为 J2SE。它允许开发和部署在桌面、服务器、嵌入式环境和实时环境中使用的 Java 应用程序。Java SE 包含了支持 Java Web 服务开发的类,并为 Java Platform,Enterprise Edition(Java EE)提供基础。

2. Java EE(Java Platform,Enterprise Edition)。这个版本以前称为 J2EE。企业版本帮助开发和部署可移植、健壮、可伸缩且安全的服务器端 Java 应用程序。Java EE 是在 Java SE 的基础上构建的,它提供 Web 服务、组件模型、管理和通信 API,可以用来实现企业级的面向服务体系结构(service-orientedarchitecture,SOA)和 Web 2.0 应用程序。

3. Java ME(Java Platform,Micro Edition)。这个版本以前称为 J2ME。Java ME 为在移动设备和嵌入式设备(比如手机、PDA、电视机顶盒和打印机)上运行的应用程序提供一个健壮且灵活的环境。Java ME 包括灵活的用户界面、健壮的安全模型、许多内置的网络协议以及对可以动态下载的连网和离线应用程序的丰富支持。基于 Java ME 规范的应用程序只需编写一次,就可以用于许多设备,而且可以利用每个设备的本机功能。

说得更简单点

Java SE 是做电脑上运行的软件。

Java EE 是用来做网站的-(我们常见的JSP技术)

Java ME 是做手机软件的。

多态

多态性是指允许不同类的对象对同一消息作出响应。多态性包括参数化多态性和包含多态性。多态性语言具有灵活、抽象、行为共享、代码共享的优势,很好的解决了应用程序函数同名问题。
多态有两种表现形式:重载和覆盖
首先说重载(overload),是发生在同一类中。与什么父类子类、继承毫无关系。
标识一个函数除了函数名外,还有函数的参数(个数和类型)。也就是说,一个类中可以有两个或更多的函数,叫同一个名字而他们的参数不同。
他们之间毫无关系,是不同的函数,只是可能他们的功能类似,所以才命名一样,增加可读性,仅此而已!

再说覆盖(override),是发生在子类中!也就是说必须有继承的情况下才有覆盖发生。

我们知道继承一个类,也就有了父类了全部方法,如果你感到哪个方法不爽,功能要变,那就把那个函数在子类中重新实现一遍。
这样再调用这个方法的时候,就是执行子类中的过程了。父类中的函数就被覆盖了。(当然,覆盖的时候函数名和参数要和父类中完全一样,不然你的方法对父类中的方法就不起任何作用,因为两者是两个函数,毫不关系)

abstract抽象类

自动通过System类创建的三个静态的I/O对象

标准输入流对象:InputStream

标准输出流对象:OutputSream

标准错误流对象:ErrorStream

 

字符串

字符串分为两大类

一:字符串常量,使用String类的对象表示

二:字符串变量,使用StringBuffer类的对象表示

Thread线程


(1)java不支持多重继承,也就是说子类至多只能有一个父类
(2)子类继承了其父类中不是私有的成员变量和成员方法,作为自己的成员变量和方法
(3)子类中定义的成员变量和父类中定义的成员变量相同时,则父类中的成员变量不能被继承
(4)子类中定义的成员方法,并且这个成员方法的名字,返回类型,及参数个数和类型与父类的某个成员方法完全相同,则父类的成员方法不能被继承。

 

    线程的唤醒与阻塞

 1.sleep() 方法:sleep() 允许 指定以毫秒为单位的一段时间作为参数,它使得线程在指定的时间
内进入阻塞状态,不能得到CPU 时间,指定的时间一过,线程重新进入可执行状态。
  典型地,sleep() 被用在等待某个资源就绪的情形:测试发现条件不满足后,让线程阻塞一段时间后
重新测试,直到条件满足为止。
  2. suspend() 和 resume() 方法:两个方法配套使用,suspend()使得线程进入阻塞状态,并且不会
自动恢复,必须其对应的resume() 被调用,才能使得线程重新进入可执行状态。典型地,suspend() 和 
resume() 被用在等待另一个线程产生的结果的情形:测试发现结果还没有产生后,让线程阻塞,另一个
线程产生了结果后,调用 resume() 使其恢复。
  3. yield() 方法:yield() 使得线程放弃当前分得的 CPU 时间,但是不使线程阻塞,即线程仍处于
可执行状态,随时可能再次分得 CPU 时间。调用yield() 的效果等价于调度程序认为该线程已执行了足
够的时间从而转到另一个线程。
  4. wait() 和 notify() 方法:两个方法配套使用,wait() 使得线程进入阻塞状态,它有两种形式
,一种允许指定以毫秒为单位的一段时间作为参数,另一种没有参数,前者当对应的 notify() 被调用或
者超出指定时间时线程重新进入可执行状态,后者则必须对应的 notify() 被调用。
  初看起来它们与 suspend() 和 resume() 方法对没有什么分别,但是事实上它们是截然不同的。区
别的核心在于,前面叙述的所有方法,阻塞时都不会释放占用的锁(如果占用了的话),而这一对方法则
相反。

  上述的核心区别导致了一系列的细节上的区别。

  首先,前面叙述的所有方法都隶属于 Thread 类,但是这一对却直接隶属于 Object 类,也就是说,
所有对象都拥有这一对方法。初看起来这十分不可思议,但是实际上却是很自然的,因为这一对方法阻塞
时要释放占用的锁,而锁是任何对象都具有的,调用任意对象的 wait() 方法导致线程阻塞,并且该对象
上的锁被释放。而调用 任意对象的notify()方法则导致因调用该对象的 wait() 方法而阻塞的线程中随
机选择的一个解除阻塞(但要等到获得锁后才真正可执行)。

  其次,前面叙述的所有方法都可在任何位置调用,但是这一对方法却必须在 synchronized 方法或块
中调用,理由也很简单,只有在synchronized 方法或块中当前线程才占有锁,才有锁可以释放。同样的
道理,调用这一对方法的对象上的锁必须为当前线程所拥有,这样才有锁可以释放。因此,这一对方法调
用必须放置在这样的 synchronized 方法或块中,该方法或块的上锁对象就是调用这一对方法的对象。若
不满足这一条件,则程序虽然仍能编译,但在运行时会出现 IllegalMonitorStateException异常。

  wait() 和 notify() 方法的上述特性决定了它们经常和synchronized 方法或块一起使用,将它们和
操作系统的进程间通信机制作一个比较就会发现它们的相似性:synchronized方法或块提供了类似于操作
系统原语的功能,它们的执行不会受到多线程机制的干扰,而这一对方法则相当于 block 和wakeup 原语
(这一对方法均声明为 synchronized)。它们的结合使得我们可以实现操作系统上一系列精妙的进程间
通信的算法(如信号量算法),并用于解决各种复杂的线程间通信问题。

  关于 wait() 和 notify() 方法最后再说明两点:
  第一:调用 notify() 方法导致解除阻塞的线程是从因调用该对象的 wait() 方法而阻塞的线程中随
机选取的,我们无法预料哪一个线程将会被选择,所以编程时要特别小心,避免因这种不确定性而产生问
题。

  第二:除了 notify(),还有一个方法notifyAll() 也可起到类似作用,唯一的区别在于,调用 
notifyAll() 方法将把因调用该对象的 wait() 方法而阻塞的所有线程一次性全部解除阻塞。当然,只有
获得锁的那一个线程才能进入可执行状态。
  谈到阻塞,就不能不谈一谈死锁,略一分析就能发现,suspend() 方法和不指定超时期限的 wait() 
方法的调用都可能产生死锁。遗憾的是,Java 并不在语言级别上支持死锁的避免,我们在编程中必须小
心地避免死锁。

 

Java简介

 

 

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值