一、hibernated的HQL查询
1、基本变量参数
Configuration config=new Configuration().configure();
SessionFactory sessionFactory=config.buildSessionFactory();
Session session=sessionFactory.openSession();
Session.close;
2、基本查询
Query query=session.createQuery("from DbLoginiddata where nmNum<3");
return query.list();
3、返回唯一结果
Query query=session.createQuery("from DbLoginiddata where nmNum=3");
return (DbLoginiddata)query.uniqueResult();
4、改
Configuration config=new Configuration().configure();
SessionFactory sessionFactory=config.buildSessionFactory();
Session session=sessionFactory.openSession();
Transaction tx=session.beginTransaction();
Query query=session.createQuery("update DbLoginiddata set vcLoginId='GGwanglaowu' where nmNum=3");
query.executeUpdate();
tx.commit();
session.close();
5、删
Configuration config=new Configuration().configure();
SessionFactory sessionFactory=config.buildSessionFactory();
Session session=sessionFactory.openSession();
Transaction tx=session.beginTransaction();
Query query=session.createQuery("delete DbLoginiddata where nmNum=3");
query.executeUpdate();
tx.commit();
session.close();
6、返回多列
String hql="select vcLoginId,vcPassword from DbLoginiddata";
List list= dao.findByHql(hql);
int i=0;
for(Object o:list){
Object[] obj=(Object[]) list.get(i++);
System.out.print(obj[0]);
System.out.println(obj[1]);
}
二、hibernate错误之
1、ids for this class must be manually assigned before calling save()..
答:只需要把内容填完整就可以啦
2、java.lang.NoClassDefFoundError: org hibernate criterion Criterion
把所有的hibernate包全部导进去即可
三、hibernate默认值问题
1、Field 'id' doesn't have a default value问题解决方法
<generator class="assigned"/>
因为assigned是指主键是由人工分配的,而native则指主键值由库自动给出
四、hibernate数据表日期格式的插入
方法一:setDate(new Date(new java.util.Date().getTime()));
方法二:String strDate="2008-10-25";
SimpleDateFormat myFormatter = new SimpleDateFormat("yyyy-MM-dd");
java.util.Date date=myFormatter.parse(strDate);
store.setFacdate(new Date(date.getTime()));
五、hibernate无法自动提交事务
1、测试能通过,但数据库实际上并没有修改
答:需要在配置文件中加上这句,代表自动提交<property name="connection.autocommit">true</property>
六、发生问题:java.lang.NoClassDefFoundError: antlr/ANTLRException
解决方法:
原来是Hibernate3.0与2.0有所不同
增加了antlr-2.7.6.jar这个包,将这个包加上就OK了!
七、hibernate中文乱码
1、首先需要修改mysql数据库的配置文件my.ini,此文件放在mysql根目录下。在此文件下查找default-character-set属性,并将其值更改为utf8(注意:不是utf-8,也要注意大小写),这里需要将default-character-set属性全部属性的值修改为utf8。示例:
default-character-set = utf8
提示:default-character-set属性有两个,一个在[mysql]下面,另外一个在[mysqld]下面。
2、同时创建hibernate数据库时需要显示设置数据库的编码方式为utf8。示例:
create database daycode default charset=utf8;
3、做完这两步还是不行,需要修改hibernate的配置文件hibernate.cfg.xml,在配置文件配置hibernate.connection.url属性。示例:
<property name="hibernate.connection.url">
<![CDATA[jdbc:mysql://localhost:3306/daycode?useUnicode=true&characterEncoding=utf8]]>
</property>
注意:此字符串不能写为jdbc:mysql://localhost:3306/daycode?useUnicode=true&characterEncoding=utf8,不然会出现编译错误,错误提示为将&连接符改为;。
设置这些之后乱码问题就解决了。
八、JavaWeb: 报错信息The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path
下面是具体的解决方法:
1、右击web工程-》属性或Build Path-》Java Build Path->Libraries-> Add Libray...->Server Runtime -》Tomcat Server
2、切换到Java Build Path界面中的Orader and Export,选择Tomcat。
注意:
按以上方法操作时,若打开Server Runtime后一片空白,需要设置Apache服务器。设置方法为:window->Preferences->Server->Runtime Environment -> add --> 选择Apache的版本后点Next,再填入你apache服务器软件的安装(解压后)地址。
九、JSP MySQL 分页
1、标准头部分
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ page import="java.sql.*" %>
<html>
<body>
</body>
</html>
2、表格部分
<table width="800" border="1" align="center">
<tr>
<td>a</td>
<td>b</td>
</tr>
///以下是数据库连接
String driverName="com.mysql.jdbc.Driver"; //驱动程序名
String userName="root";//数据库用户名
String userPasswd="HI333512";//密码
String dbName="class";//数据库名
String tableName="S3";//表名
//连接字符串
String url="jdbc:mysql://localhost:3306/"+dbName+"?user="+userName+"&password="+userPasswd+"&useUnicode=true&characterEncoding=GB2312";
Class.forName(driverName).newInstance();//加载驱动程序
Connection conn=DriverManager.getConnection(url);
String sql="select * from S3";//创建执行语句
Statement stmt=conn.createStatement();
ResultSet rs=stmt.executeQuery(sql);
int intPageSize; //一页显示的记录数
int intRowCount; //记录的总数
int intPageCount; //总页数
int intPage; //待显示的页码
String strPage;
int i;
intPageSize=3; //设置一页显示的记录数
strPage=request.getParameter("page");//取得待显示的页码
if(strPage==null) //判断strPage是否等于null,如果是,显示第一页数据
{
intPage=1;
}else{
intPage=java.lang.Integer.parseInt(strPage); //将字符串转换为整型
}
if(intPage<1)
{
intPage=1;
}
rs.last();//获取记录总数
intRowCount=rs.getRow();
intPageCount=(intRowCount+intPageSize-1)/intPageSize; //计算机总页数
if(intPage>intPageCount)
intPage=intPageCount; //调整待显示的页码
if(intPageCount>0)
{
rs.absolute((intPage-1)*intPageSize+1); //将记录指针定位到待显示页的第一条记录上
}
//下面用于显示数据
i=0;
while(i<intPageSize && !rs.isAfterLast())
{
%>
<tr>
<td><%=rs.getString(1)%></td>
<td><%=rs.getString(2)%></td>
</tr>
<%
rs.next();
i++;
}
rs.close();//关闭连接、释放资源
stmt.close();
conn.close();
%>
<div align="center">
共<%=intRowCount%>个记录,分<%=intPageCount%>页显示,当前页是:第<%=intPage%>页
<%
for(int j=1;j<=intPageCount;j++)
{
out.print(" <a href='Jspfenye.jsp?page="+j+"'>"+j+"</a>");
}
%>
</div>
<%>
</table>
十、JSP
1、JSP的注释
(1)<!--内容-->,也可以用于HTML
(2)<%--something--%>
(3)采用和java语言同样的注释,包括// /* */
2、JSP的指令,格式 <%@page|include|......%>
(1)page
(2)include
(3)taglib
page属性
*languaug,目前只有java
*extends,指定JSP生成的servlet继承的父类
*import,导入包
*session,指定JSP是否使用session对象
*buffer,指定缓冲大小,默认8K
*autoFlush,缓冲溢出时是否强制输出
*isThreadSafe,
*info,可以使用servlet.getServletInfo()得到信息
*ErrorPage,指定错误处理页面
*isErrorPage,能否进行异常处理
*contentType,指定MIME,默认是text/html,charset=ISO-8859-1
*pageEncoding,页面编码格式
*isELIgnored,是否支持EL表达式
page属性除了import外,所有属性只能指定一个值,page指令与书写位置无关
include指令
用于在JSP中插入一个包含文本或者代码的文件,被插入文件发生变化,则JSP应当重新编译
taglib指令
用于引用标签库并设置标签库的前缀
属性有两个
(1)uri
(2)prefix
3、JSP脚本元素
分为三种:(1)JSP声明语句
(2)JSP表达式
(3)JSP Scriptlets
JSP声明语句<%! int a;%>
JSP表达式 <%=a%>
JSP SCriptlet java代码段 <% String a="hello";%>
4、JSP动作元素
共有7个,分别是<jsp:include>
<jsp:forward>
<jsp:param>
<jsp:plugin>
<jsp:useBean>
<jsp:setProperty>
<jsp:getProperty>
<jsp:include> 仅当JSP运行的时候才会载人文件,与@page include file的区别在于,jsp:include的动态的,一旦文件变化,jsp页面也会立即变化
语法:<jsp:include page="hello.txt"></jsp:include>
<jsp:forward> 页面重定向,不是转发,转发不会引起客户端二次请求
语法:<jsp:forward page="转向页面的URL"></jsp:forward>
<jsp:param> 提供参数
语法:<jsp:param name="参数名字"> value="参数值">
与<jsp:include>联用
与<jsp:forward>联用
<jsp:plugin> 将服务器的JavaBean或者applet下载到客户端执行
语法:<jsp:plugin type="bean|applet">
code="classfilename" 类名
codebase="classfileurl" 类所在目录
[name=""] 指定bean或者applet名字
[archuive=""] 预加载类列表
[align="bottom|top|left|right|middle"] 对齐方式
[height=""] 高度
[width=""] 宽度
[hspace=""] 显示时,距屏幕左右距离
[vspace=""] 显示时,距屏幕上下距离
[jreversion=""] jre版本
[nspluginurl=""] 指定远景浏览器能够下载的jre
[iepluginurl=""] 指定IE浏览器能够下载的jre
[jsp:params]
[jsp:fallback] 当不能正常启动时,提供的错误信息
<jsp:useBean> 语法<jsp:useBean id="" class="" scope="page|request|session|application"/>
其中,page:当前页面有效
request:本次请求有效
session:本次session内有效
application:本应用内一直有效
<jsp:setProperty> 语法:<jsp:setProperty name="" property="" value=""/>
<jsp:getProperty> 语法:<jsp:getProperty name="" property="">
十一、jsp或者servlet中文参数乱码解决方案
如下即可:
String name=request.getParameter("user");
name=new String(name.getBytes("ISO-8859-1"));
如不行,则
name=new String(name.getBytes("ISO-8859-1"),"utf-8");
十二、jsp获取复选框的方法
Enumeration paramNames = request.getParameterNames();
获取复选框元素
while(paramNames.hasMoreElements()) {
String paramName = (String)paramNames.nextElement();
//System.out.println(paramName);
int i=Integer.parseInt(paramName);
//String paramValue = request.getHeader(paramName);
// s.deleteMail(i);
s.deleteReceiveBoxMail(i);
}
十三、jsp连接MySQL
1、新建web项目
2、导入jdbc库文件到lib文件夹下,不建议导入到tomcat的lib文件夹下
3、新建jsp文件
(1)<%@ page import="java.sql.*"%>
(2)//驱动程序名
String driverName="com.mysql.jdbc.Driver";
//数据库用户名
String userName="root";
//密码
String userPasswd="HI333512";
//数据库名
String dbName="student";
//表名
String tableName="stu";
(3)//联结字符串
String url="jdbc:mysql://localhost/"+dbName+"?user="+userName+"&password="+userPasswd;
Class.forName("com.mysql.jdbc.Driver").newInstance();
Connection connection=DriverManager.getConnection(url);//连接成功
Statement statement = connection.createStatement();
(4)查询语句
String sql="SELECT * FROM "+tableName;
ResultSet rs = statement.executeQuery(sql);
//获得数据结果集合
ResultSetMetaData rmeta = rs.getMetaData();
//确定数据集的列数,亦字段数
int numColumns=rmeta.getColumnCount();
// 输出每一个数据值
out.print("num");
out.print("|");
out.print("name");
out.print("<br>");
while(rs.next()) {
out.print(rs.getString(1)+" ");
out.print("|");
out.print(rs.getString(2));
out.print("<br>");
}
out.print("<br>");
out.print("数据库操作成功,恭喜你");
(5)关闭数据库
rs.close();//关闭查询结果
statement.close(); //关闭查询
connection.close();//关闭连接
十四、jsp连接sql server 2008
1、新建web项目
2、导入jdbc库文件到lib文件夹下,不建议导入到tomcat的lib文件夹下
3、新建jsp文件
(1)<%@ page import="java.sql.*"%>
(2)Connection conn;
Statement stmt;
ResultSet rs;
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
String url = "jdbc:sqlserver://localhost:1433;DatabaseName=SC;";
String sql="select* from SC";
conn = DriverManager.getConnection(url, "sa","HI333512");
stmt=conn.createStatement();
rs=stmt.executeQuery(sql);
while(rs.next())
{
String id=rs.getString(1);
String name=rs.getString(2);
String age=rs.getString(3);
out.print("id:"+id+"\tname:"+name+"\tage:"+age);
out.print("<br>");
}
if(rs!=null){rs.close();rs=null;}
if(stmt!=null){stmt.close();stmt=null;}
if(conn!=null){conn.close();conn=null;}
十五、MyEclipse下测试用例的步骤
1、项目属性-java build path-add library-JUnit
2、需要测试的包,右击,new-JUnit test case
3、运行,run as JUNIT test
十六、servlet学习笔记
1、生命周期
初始化--init--service|doGet|doPost--destroy
2、建立及运行配置
新建java文件,java类必须继承HttpServlet类,如果不是HTTP协议,
需要继承GenericServlet类,这两个类都是继承javax.servlet.Servlet接口
假设类名为A,则需要在WEB-INF目录下新建web.xml文件
文件格式如下
<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
version="3.1"
metadata-complete="true">
<servlet>
<servlet-name>HW</servlet-name><!-- 名字可以随意取 -->
<servlet-class>包名.A</servlet-class><!-- A是类名 -->
</servlet>
<servlet-mapping><!-- 映射 -->
<servlet-name>HW</servlet-name><!-- 名字必须与上面相同 -->
<url-pattern>/A</url-pattern><!-- 路径是相对路径,名字虽然可以随意 -->
</servlet-mapping>
</web-app>
十七、SpringMVC错误
1、Property 'name' not found on type java.lang.String
标签属性值“xx” ,不能写成" xx"
十八、SpringMVC大致流程
1、导入jar包,这个不说了
2、配置两个文件
(1)web.xml
(2)springservlet.xml,这个名字无所谓,与xml中对应的即可
3、在HTML中定义好各种变量参数,假设是登陆则
<form action="hello1.htm?id=12" method="post">
NAME::
<input name="myid" type="text"/>
<input type="submit" value="ok"/>
</form>
4、后台得到参数,
@RequestMapping(value = "/hello1.htm")//表示解析地址为hello1.htm
public String hello(HttpServletRequest request,int id,Map<String,Object> map){
System.out.println("hello1 action:"+id);
map.put("name", "huangjiFFFe");
map.put("string",new Date(2013,12,31).toLocaleString());
String myid=request.getParameter("myid");
System.out.print("myid="+myid);
return "hello";///表示返回到一个叫hello的页面
}
5、hello页面的显示
直接输出参数<body>
This is my hello page. <br>
name:${name } <br>//一定要与上面的参数名字对应
value:${string} <br>//
</body>
十九、处理MySQL不能正确处理中文的解决方法
1、在my.ini中修改全部字集为gbk;
2、客户端输入show full columns from TABLE;查看具体是那些表栏目需要改
3、alter table TABLE change `AAA` `AAA` varchar(100) character set gbk;