java用servlet和富文本开实现添加新闻

java用servlet和富文本开实现添加新闻,第1张

首先要明白,JSP和Servlet都是位于服务器端,平时我们做开发,自己的机器充当了客户机和服务器的双重角色。在典型的MVC开发模式中,JSP充当了视图层,Servlet充当控制层,JavaBeen充当模型层。

每一个JSP页面一般都会对应一个Sevlet,(在web.xml中可以看到有关配置),JSP页面如果是以post方式发出请求给Servlet,就会调用Servlet中的doPost()方法,如果是以get方式发出请求,就会调用其doGet()方法,一般这两个方法只具体实现一个,可以在另一个方法调用有具体实现的那个方法。至于JSP页面是以get方式发出请求,还是以post方式发出请求,最简单的方式是看地址栏又没有像?name=xxxx&id=xxxx的键值对字符串,如果jsp网页中包含form表单,还可以看其method属性是get还是post,不过一般表单都是用post方式提交给后台Servlet。当请求传给Servlet时,同时也会把相关数据传过去,这样才可以在后台获取这些数据。一般使用request.getParameter()方法

由于Servlet是控制层,顾名思义,它当然可以控制请求的转发 *** 作。使用request.getRequestDispatcher("xxx,jsp").forward(request,response)

参考如下代码:

MS Access在测试阶段比较利于携带,Web开发初期我经常使用它。后期再移植到SQLServer或Oracle上。但最近在需要对数据库中插入图片文件时,发现了一个问题,即JDK自带的JDBC-ODBC不支持java.sql.Blob里的方法,经过查阅Java API和程序调试,我找到了个变通的方法,即:

1,在写入BLOB类型字段时,使用java.sql.PreparedStatement的setBinaryStream方法,

2,读出BLOB类型字段时,因为返回的是字节数组byte[]类型,可以把它转换成ByteArrayInputStream然后读出内容写到文件里去。

这样即使用JDK自带的JDBC-ODBC驱动, 也能自如的在数据库里读写上传下载的文件了,哈哈。

import java.sql.*

import java.io.*

//对BLOB字段先写入(要求被写入的文件存在),再读出来

//要求先建立一个item表,有三个字段,id(int),file_name(char),file_blob(blob)

//对Access, blob字段应该设置成为“OLE对象”类型

public class blobtest{

public static void main(String[] args){

Connection conn = null

try{

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver")

/*这里的数据库的url一定要写正确,这是关键,其中DBQ可以绝对路径,也可以是相对路径,为了体现数据存储路径的/独立性,你可以将数据库copy到不同的位试一下*/

String dbUrl = "jdbc:odbc:driver={Microsoft Access Driver (*.mdb)}DBQ=blob.mdb"

conn = DriverManager.getConnection(dbUrl,"","")

File file1=new File("fileToWrite.doc")

File file2=new File("fileRead.doc")

//BlobWriteForOracle( conn, file1)

//BlobReadForOracle( conn, file2)

BlobWriteForAccess( conn, file1)

BlobReadForAccess( conn, file2)

conn.close()

}catch(Exception ex){

System.err.println(ex.getMessage())

public static void BlobWriteForAccess( Connection conn, File file){

try{

conn.setAutoCommit(false)// 取消Connection对象的auto commit属性

String file_name=file.getName()

// get maxid ( to avoid insert id repeatly )

Statement stmt = conn.createStatement()

ResultSet rs = stmt.executeQuery("select max(id) from item")

rs.next()

int maxid = rs.getInt(1)

//maxid = (maxid==null)?0:maxid

int id = maxid+1

//System.out.println("write_id="+id)

PreparedStatement pstmt = conn.prepareStatement( "insert into item ( id, file_name, file_blob ) values ( " + id + ", ? , ? )" )

FileInputStream in = new FileInputStream(file )

int length = in.available()

pstmt.setString( 1, file_name )

pstmt.setBinaryStream( 2, in , in.available() )

System.out.println( "插入了 "+ pstmt.executeUpdate ()+ " 行数据, "

+ "id =" + id

+ ", 文件名是" + file.toString() +" , 共 "+ length +" bytes" )

conn.commit()

pstmt.close()

}catch(Exception ex){

ex.printStackTrace()

System.out.print("["+ex.getMessage()+"]")

try{

conn.rollback()

}catch(SQLException sqle){

System.err.println(sqle.getMessage())

}

}

public static void BlobReadForAccess( Connection conn, File file){

try{

conn.setAutoCommit(false)// 取消Connection对象的auto commit属性

String file_name=file.getName()

// get maxid ( to avoid insert id repeatly )

Statement stmt1 = conn.createStatement()

ResultSet rs1 = stmt1.executeQuery("select max(id) from item")

rs1.next()

int maxid = rs1.getInt(1)

//maxid = (maxid==null)?0:maxid

int id = maxid

//System.out.println("read_id="+id)

String sql="SELECT file_blob FROM item WHERE id=" + id + ""//

Statement stmt=conn.createStatement()

ResultSet rs=stmt.executeQuery(sql)

rs.next()

Object obj1 = rs.getObject("file_blob")// 得到BLOB对象

//System.out.println("type is :"+obj1.getClass().getName())

byte[] blob=(byte[])obj1

FileOutputStream out=new FileOutputStream(file)// 建立输出流

ByteArrayInputStream in=new ByteArrayInputStream(blob)// 建立输入流

int size=1024

byte[] buffer=new byte[size]// 建立缓冲区

int len

while((len=in.read(buffer)) != -1)

out.write(buffer,0,len)

in.close()

out.close()

conn.commit()

}catch(Exception ex){

ex.printStackTrace()

System.out.print("["+ex.getMessage()+"]")

try{

conn.rollback()

}catch(SQLException sqle){

System.err.println(sqle.getMessage())

}

把你的想法用dreamweaver先做成静态网页,看做的效果,新闻版块放在那里看着舒服即可

别的根据自己随意安排位置

至于超链接,也在dreamweaver链接好

最后就是编写java程序实现这些功能和链接

取代静态页面里事先做的链接即可


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11392654.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-15
下一篇 2023-05-15

发表评论

登录后才能评论

评论列表(0条)

保存