java web 常用代码
java web 常用代码
1. Jdbc的六个编程步骤
1. 注册一个驱动
注册驱动程序有三种方式:
方式一:Class.forName(“oracle.jdbc.driver.OracleDriver”);
JAVA 规范中明确规定:所有的驱动程序必须在静态初始化代码块中将驱动注册到驱动程序管理器中。
方式二:Driver drv = new oracle.jdbc.driver.OracleDriver();
DriverManager.registerDriver(drv);
方式三:编译时在虚拟机中加载驱动
javac –Djdbc.drivers = oracle.jdbc.driver.OracleDriver xxx.java
java –D jdbc.drivers=驱动全名类名
使用系统属性名,加载驱动 -D 表示为系统属性赋值
附 : mysql 的 Driver 的全名 com.mysql.jdbc.Driver
SQLServer 的 Driver 的全名 com.microsoft.jdbc.sqlserver.SQLServerDriver
2. 取得一个连接
C onn = DriverManager.getConnection(jdbcURL,user N ame,password);
3. 获得一个Statement声明对象
Statement st = conn.createStatement();
PreparedStatement ps = conn.prepareStatement(sql);
CallableStatemetn cs = conn.prepareCall(sql);
4. 通过Statement对象执行Sql语句
sta.execute(String sql); 如果返回一个结果集则返回true,否则返回false。
sta.executeQuery(String sql);返回一个查询结果集。
sta.executeUpdate(String sql);返回值为 int 型,表示影响记录的条数。
将 sql 语句通过连接发送到数据库中执行,以实现对数据库的操作。
5. 若有结果集ResultSet则处理结果集
ResultSetMetaDate rsmd = rs.getMetaData();
int columnCount = rsmd.getColumnCount();
W hile(rs.next()){
for(int i = 1; i <= columnCount; i++)
{
if(i != 1) System.out.print(",");
String name = rsmd.getColumnName(i); //取得第i列的列名称 String value = rs.getString(i); //取得第i列的值
System.out.print(name + "=" + value);
}
}
6. 关闭资源
2. 第一个Jdbc程序
public class AccountDaoBad
{
public void select()
{
Connection con = null;
Statement st = null;
ResultSet rs = null;
try
{
Class.forName("oracle.jdbc.driver.OracleDriver");
/** static init block in OracleDriver*/
String jdbcURL = “jdbc:oracle:thin:@192.168.0.5:1521:tarena”;
con = DriverManager.getConnection(jdbcURL, "sd0703", "sd0703");
st = con.createStatement();
System.out.println(st.getFetchSize());
String sql = "select id,no,owner,pwd,cdate,balance from sd0703_account";
rs = st.executeQuery(sql);
while(rs.next())
{
System.out.print("id=" + rs.getInt(1));
System.out.print(",no=" + rs.getString(2));
System.out.print(",owner=" + rs.getString(3));
System.out.print(",pwd=" + rs.getString(4));
System.out.print(",cdate=" + rs.getDate(5));
System.out.println(",balance=" + rs.getDouble(6));
}
}catch(SQLException e)
{
e.printStackTrace();
throw new RuntimeException(e.getMessage());
}catch(ClassNotFoundException e)
{
e.printStackTrace();
throw new RuntimeException(e.getMessege());
}finally
{
try{ con.close();}catch(Exception e) {e.printStatckTrace();} }
}
3. 常用类
1. Connection, Statement, ResultSet,
4. 2.0新特性
(1)事务管理与图片的存储
public class ImageLibraryService
{
public void addImage(long id, String imageName, String path) throws SQLException
{
Connection con = null;
PreparedStatement ps = null;
ResultSet rs = null;
try
{
con = ConnectionFactory.getConnection();
con.setAutoCommit(false);
String sql = "insert into ImageLibrary(id, name, image)";
sql += " VALUES(?, ?, empty_blob())";
ps = con.prepareStatement(sql);
ps.setLong(1, id);
ps.setString(2, imageName);
ps.executeUpdate();
ps.close();
ps = con.prepareStatement("select image from ImageLibrary WHERE id = ? for update ");
ps.setLong(1, id);
rs = ps.executeQuery();
if (rs.next())
{
Blob image = rs.getBlob(1);
OutputStream out = image.setBinaryStream(0);
BufferedOutputStream bufferedOut = new BufferedOutputStream(out); BufferedInputStream bufferedIn = new BufferedInputStream(new FileInputStream(path));
int c;
while ((c = bufferedIn.read()) != -1)
{
bufferedOut.write(c);
}
bufferedIn.close();
bufferedOut.close();
}
https://www.360docs.net/doc/5713323715.html,mit();
} catch (Exception e)
{
e.printStackTrace();
try
{
con.rollback();
} catch (SQLException se) { }
throw new SQLException(e.getMessage());
} finally
{
JdbcUtil.close(rs, ps, con);
}
}
//以下代码没有进行细致的异常捕获
public void restoreImage(long id, String filename) throws Exception {
Connection con = ConnectionFactory.getConnection();
Statement st = con.createStatement();
String sql = "SELECT image From ImageLibrary Where id = " + id; ResultSet rs = st.executeQuery(sql);
while (rs.next())
{
Blob image = rs.getBlob("image");
BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(filename));
BufferedInputStream in = new
BufferedInputStream(image.getBinaryStream());
int c;
while ((c = in.read()) != -1) out.write(c);
in.close();
out.close();
}
}
}
(2)结果集游标的上下游动
con = ConnectionFactory.getConnection();
st = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_READ_ONLY);
String sql = "select id,no,owner,pwd,cdate,balance from sd0703_account";
rs = st.executeQuery(sql);
rs.afterLast(); //将光标移动到此 ResultSet 对象的末尾,正好位于最后一行之后。while(rs.previous())
{
System.out.print("id=" + rs.getInt(1));
System.out.print(",no=" + rs.getString(2));
System.out.print(",owner=" + rs.getString(3));
System.out.print(",pwd=" + rs.getString(4));
System.out.print(",cdate=" + rs.getDate(5));
System.out.println(",balance=" + rs.getDouble(6));
}
注:ResultSet静态常量字段(参见javax.sql.ResultSet)
ResultSet.TYPE_SCROLL_INSENSITIVE
该常量指示可滚动但通常不受 ResultSet 底层数据更改影响的 ResultSet 对象的类型。ResultSet.CONCUR_READ_ONLY
该常量指示不可以更新的 ResultSet 对象的并发模式。
Hibernate部分
1. 两种配置文件
Hibernate配置文件如下:
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"https://www.360docs.net/doc/5713323715.html,/hibernate-configuration-3.0.dtd">
-->
org.hibernate.cache.NoCacheProvider
在以上的配置文件中的内容包括以下部分:
(1)配置数据库连接的信息以及数据库使用的言
(2)运行中SQL语句的显示与格示
(3)是否使用缓存
(4)映射类配置文件
(5)若在META-INF的context.xml中配置数据源则使用:
maxActive="10" maxIdle="5" maxWait="-1" username="root" password="1234" driverClassName="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=gbk "/> 类映射文件Student.hbm.xml "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "https://www.360docs.net/doc/5713323715.html,/hibernate-mapping-3.0.dtd"> 2. Hibernate的编程步骤 具体可以分为以下七个步骤: 1.Configuration = new Configuration(); 2.SessionFactory sessionFactory = config.configure().buildSessionFactory(); 3.Session session = sessionFactory.openSession(); 4.Transaction trans = session.beginTrasation(); 5.S ession.save(),session.update(),session.createQuery(hql).executeUpdate()等 6.https://www.360docs.net/doc/5713323715.html,mit()或发生异常时执行trans.rollback() 7.session.close() 说明:其中第五步的session操作可以按以下两种方式进行: (1)先得到一个Query,再通过Query来执行相关操作,如query.list(), query.setString().executeUpdate() hql = "delete from Order where id = :id"; session.createQuery(hql).setInteger("id", 1).executeUpdate(); (2)直接操作session.save(),session.update(),session.delete(),session.get(). session.load(),session.saveOrUpdate() String hql = "update Employee e set e.salary = e.salary + 1000"; query.executeUpdate(hql); 3. 5种ID策略 下面以表一个用户名为例: 3. id_values current_id 10 说明:在数据库有一个单行单列(current_id)的表(id_values)用于存储一个高位值。4. users_sc_se 说明:仅适用于支持sequence的数据库,如:Oracle,DB2 5. users_sc_se 10 说明:(1)sequence的作用相当于使用hilo中表id_values中所存储的currentid, (2)适用于支持sequence的数据库,如:Oracle,DB2 4. 3种映射关系 1.一对一关联 1.1 共享主键 一个表使用的主键引用另一个表的主键,而不是自己产生的。也就是说一个表主键的产生要依赖另外一个表的主键。所以: 对表中记录而言,只有主表中有相应记录,其从表才可以有记录并使用主表的主键 对类对象而言只有被参照的对象存在了,才能创建参照对象 (1)建表 假设有汽车和引擎两个实体,它们存在着一对一的关系,我们可以通过共享主键来建立两者的关系。其DDL语名如下: (2)写对象关系映射文件car.hbm.xml和Engine.hbm.xml 汽车类的配置文件:Car.hbm.xml 引擎类的配置文件:E ngine.hbm.xml car foreign-key="fk_engine_car_pk"/> 说明:id产生器中指明了使用foreign方式产生,参数指出使用属性car的相关内容。 在 1.2 使用外键关联 (1)建表 (2) 写对象关系映射文件 汽车类的配置文件:Car.hbm.xml cascade="save-update"/> 注:其中property-ref="car"指定关联类Engine类的car属性与本类主键对应。如果没有指定,会使用对方关联类 Engine的主键关联。它是可选的。 C ascade=”save_update”指出删除不级联。 引擎类的配置文件:Engine.hbm.xml 本身属性car可以多对一。但时在表中使用了Unique限制,且在Car.hbm.xml中也使用了 2.一对多关联 使用订单(Order)与订单项(Item)作为模型来讨论。一个订单包含多个订单项。 单向关联:在单的一方不需要设置存放多方的集合属性。 双向关联:在单的一方需要有一个set属性来存储多的一方 (1)建表 (2)写对象关系映射文件 order_o2m_seq 注意:一定要加上inverse=”true”,来说明关联(那外键约束)只需一方来维护。当关联类Iitem改变时,不会调用Update来更新本类的主键。 建立关联时,只要在关联类中加入属性OrderId作为关联类表的外键,并以此来与本类关联。 item_m2o_seq 3.多对多关联 这时选择班级(TarenaClass)与课程(Course)的对应关系作为讲座多对多关系的模型,不同的班级开设不同的课程。 实质上多对多的关系就相当于两个一对多的关系。 (1)建表 (2) 写对象关系映射文件 说明: a.多对多有双向关联。 b. 多对多引用的是集合对象 c.需要用第三张表来维持多对多关系。 d.写配置文件的时候many-to-many标签要放在set标签内, 总是和本类的主键id对应 d. 同样也要加上inverse=”true”,在多对多关联时,如果一方改变,则会另一方 也会执行额外的操作来维护外键约束.应让一方来维护数据库的完整性即可。 Servlet部分 1. 第一个Servlet程序 package com.allanlxf.serv.basic; import javax.servlet.*; import java.io.*; public class TimeServlet implements Servlet { private ServletConfig config; public TimeServlet() { System.out.println("TimeServlet()"); } public void init(ServletConfig config) throws ServletException { this.config = config; System.out.println("init(" + config + ")"); } public void service(ServletRequest request, ServletResponse response) throws ServletException, IOException { System.out.println(this); System.out.println("service(" + request + "," + response + ")"); getServletConfig(); PrintWriter out = response.getWriter(); out.println(" out.println(new java.util.Date()); out.println(""); out.close(); } public void destroy() { System.out.println("destroy"); } public String getServletInfo() { return "time servlet by allan version 1.0"; } public ServletConfig getServletConfig() { return config; } } 2. 编写及布署Servlet类 (1)编写一个类继承自HttpServlet package com.allanlxf.serv.basic; import javax.servlet.*; import javax.servlet.http.*; import java.io.*; public class HttpTimeServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); PrintWriter out = response.getWriter(); out.println(""); out.println(" out.println("");
out.println("");
out.println("
");out.println("
Current Time is
");out.println("
");
out.println(new java.util.Date());
out.println("");
out.println("");
out.close();
}
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
doGet(request, response);
}
}
(2)在Tomcat中布署一个myFirst-app web应用
---Tomcat
---webapps
---myFirst-app
---WEB-INF
---classes
---web.xml
---shoppingCart
(3)配置Web.xml
xmlns:xsi="https://www.360docs.net/doc/5713323715.html,/2001/XMLSchema-instance" xsi:schemaLocation="https://www.360docs.net/doc/5713323715.html,/xml/ns/j2ee https://www.360docs.net/doc/5713323715.html,/xml/ns/j2ee/web-app_2_4.xsd" version="2.4">
3. 常用类介绍
(1)Filter类
public class CharacterEncodingFilter implements Filter
{
private FilterConfig config;
public void init(FilterConfig config) throws ServletException
{
this.config = config;
}
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException
{
String encoding = config.getInitParameter("encoding");
if(encoding == null)
{
encoding = "gbk";
}
request.setCharacterEncoding(encoding);
response.setCharacterEncoding(encoding);
chain.doFilter(request, response);
}
public void destroy()
{
}
}
Jsp部分
<%@page contentType="text/html;charset=gbk" %>
<%@taglib uri="https://www.360docs.net/doc/5713323715.html,/jsp/jstl/core" prefix="c"%>
<%@taglib uri="https://www.360docs.net/doc/5713323715.html,/jsp/jstl/functions" prefix="fn" %>
ref="stylesheet" type="text/css">
网页制作常用代码
Dreamweaver代码div+css Dreamweaver代码 基本结构标签: ,表示该文件为HTML文件
,包含文件的标题,使用的脚本,样式定义等,换行标志
,分段标志 ,采用黑体字 ,采用斜体字
,水平画线
属性是用来修饰标志的,属性放在开始标志内. 例:属性bgcolor="BLACK"表示背景色为黑色. 引用属性的例子:
表示页面背景色为黑色;dw网页制作基础代码
Dreamweaver 8 基础代码 HTML基本结构(每个网页都是在基本结构的基础上添加内容的) ---------网页文件开始标签
--------头部元素开始标签加粗:... 倾斜:... 滚动字幕: 滚动标签:marquee 最简表达: 滚动的属性: Direction--表示滚动的方向,值可以是left,right,up,down,默认为left Behavior--表示滚动的方式,值可以是scroll(连续滚动)slide(滑动一次)alternate(来回滚动)
网页设计试题及html代码
2.2.3 字型设置标记 功能:设置文字的风格,如黑体、斜体、带下划线等,这是一组标记,它们可以单独使用,也可以混合使用产生复合修饰效果。常用的标记有以下一些: … :文字以粗体显示。 … :文字显示为斜体。 … :显示下划线。 … :删除线。 … :使文字大小相对于前面的文字增大一级。 … :使文字大小相对于前面的文字减小一级。 … :使文字成为前一个字符的上标。 …:使文字成为前一个字符的下标。 :使文字显示为闪烁效果。 …:以等宽体显示西文字符。 …:输出引用方式的字体,通常是斜体。 …:强调文字,通常用斜体加黑体。 …:特别强调的文字,通常也是斜体加黑体。 注:有些标记的效果必须在动态环境下才能显示,例如
网页制作-常用JS代码汇集
把如下代码加入
区域中: 后退前进 返回 查看源码 禁止查看源码 刷新按钮一 刷新按钮二 回首页按钮 弹出警告框 状态栏信息 背景色变换 打开新窗口 窗口最小化