- 浏览: 1927168 次
- 性别:
- 来自: 南京
文章分类
最新评论
-
cht的大摩托:
学习
IBM WebSphere Performance Tool / ISA / jca457.jar / ha456.jar / ga439.jar -
leeking888:
有没有linux 64位的相关librfccm.so等包啊?
web test LoadRunner SAP / java / Java Vuser / web_set_max_html_param_len -
paladin1988:
非常不错,多谢了。。
appServer IBM WebSphere / WAS 7 / 8.5 / was commerce -
hzxlb910:
写了这么多
net TCP/IP / TIME_WAIT / tcpip / iperf / cain -
acwyg:
ed2k://|file|LoadRunner.V8.1.is ...
web test performance tools / linux performance tools / windows performance tools
http://guoqinhua1986-126-com.iteye.com/blog/231244
********************解决乱码问题(格式化)***********
//格式化---转换为GBK
public String fs(String str) {
try {
byte[] st = str.getBytes();
str = new String(st, "GBK");
} catch (UnsupportedEncodingException ex) {
ex.printStackTrace();
} // new java.util.Date(); -->java.sql.Date()
return str.trim();
}
//格式化---转换为ISO-8859-1
public String fg(String str) {
try {
byte[] st = str.getBytes("ISO-8859-1");
str = new String(st);
} catch (Exception ex) {
ex.pr
********************jsp+javascript打造级连菜单***********
<%@ page import="java.util.Date,yava.fileapp.*,java.sql.*;"
contentType="text/html;charset=GB2312" pageEncoding="GB2312"
%>
<style>
.f9{ font-size:9pt; }
.bgc{ background-color:#AECAF9; color: #0033FF }
.buttons{font-family:Arial; font-size:13px; font-weight:bold;
background-color:#6796E4; color:white; border-top: solid 2px #AACAFB;
border-bottom: solid 1px #4E7DC1;
border-left: solid 1px #AECAF9;
border-right: solid 1px #5679BD;
padding:1px;
margin:0px;}
</style>
<SCRIPT LANGUAGE="JavaScript">
<!--
function rv()
{
var val="";
for(i=0;i<combo_box.list2.length;i++){
val+=","+combo_box.list2[i].value;
}
if(val.charAt(0)==","){
val=val.substr(1,val.length);
}
opener.form1.frecname.value=val;
self.close();
}
//-->
</SCRIPT>
<body leftmargin="0" topmargin="0" marginwidth="0" marginheight="0">
<jsp:useBean id="user" scope="session" class="yava.fileapp.UserBean" />
<%
CDataSource ds=new CDataSource(); //数据联结Bean实例
java.sql.Connection conn=ds.getConnection();
java.sql.Statement stmt=null;
java.sql.ResultSet rs=null;
CDataCheck dc=new CDataCheck();
%>
<%
String sqlu="SELECT t1.fno, t1.fname, t2.fname AS fdept FROM tuser
t1 LEFT OUTER JOIN TDept t2 ON t1.fdept = t2.fno order by t2.fname";
stmt=conn.createStatement();
rs=stmt.executeQuery(sqlu);
%>
<script language="Javascript">
arr = new Array();
<% int temp=0;
while(rs.next())
{
%>
arr[<%=temp%>]=new Array("<%=rs.getString("fname")%>","<%=rs.getString("fdept")%>");
<%
temp = temp + 1;
}
%>
temp=<%=temp%>;
function ChangeLocation(id){
document.combo_box.city.length=0; //初始化第2级菜单的长度,下标从0开始
var i = 0;
document.combo_box.city.options[0]=new Option("-------","");
for(i=0;i<temp;i++){
if(arr[i][1]==id){//如果相等,证明在第2级里面有输入第1级组织的子集,arr[总数目][部门]
document.combo_box.city.options[document.combo_box.city.length] = new Option(arr[i][0], arr[i][0]);
}
}
}
</script>
<form name="combo_box">
<table border="0" cellspacing="0" cellpadding="0" height="210" width="59">
<tr height="24">
<td bgcolor="#336699" class="buttons" align=center><font color=#ffffff>部门选择</font></td>
<td bgcolor="#336699" class="buttons" align=center><font color=#ffffff>人名选择</font></td>
<td bgcolor="#336699" class="buttons" align=center nowrap><font color=#ffffff>添加/移除</font></td>
<td bgcolor="#336699" class="buttons" align=center><font color=#ffffff>最终人</font></td>
</tr>
<tr>
<td>
<select multiple id=prov name="prov"
onchange="ChangeLocation(combo_box.prov.options[combo_box.prov.selectedIndex].text);"
style="width:150;height:200" class="bgc">
<option value="0">请选择部门 ---></option>
<%
String sqld="SELECT * FROM tdept";
stmt=conn.createStatement();
rs=stmt.executeQuery(sqld);
while(rs.next())
{
%>
<option name="<%=rs.getString("fno")%>"><%=rs.getString("fname")%></option>
<%
}
%>
</select>
</td>
<td>
<select multiple id=city style="width:150;height:200" class="bgc">
</select>
</td>
<td nowrap align="center" class="bgc">
<input type="button" onClick="move(this.form.list2,this.form.city)" value="<<" class="buttons">
<input type="button" onClick="move(this.form.city,this.form.list2)" value=">>" class="buttons">
</td>
<td>
<select multiple size="10" name="list2" style="width:150;height:200" class="bgc">
</select>
</td>
</tr>
<tr class="bgc">
<td colspan="4" align="center"><input type="button"
name="button1" class="buttons" value="选好了!"
onclick="rv();"></td>
</tr>
</table>
</form>
<script language="JavaScript">
//人名移动
function move(fbox, tbox) {
var arrFbox = new Array();
var arrTbox = new Array();
var arrLookup = new Array();
var i;
for (i = 0; i < tbox.options.length; i++) {
arrLookup[tbox.options[i].text] = tbox.options[i].value;
arrTbox[i] = tbox.options[i].text;
}
var fLength = 0;
var tLength = arrTbox.length;
for(i = 0; i < fbox.options.length; i++) {
arrLookup[fbox.options[i].text] = fbox.options[i].value;
if (fbox.options[i].selected && fbox.options[i].value != "") {
arrTbox[tLength] = fbox.options[i].text;
tLength++;
}
else {
arrFbox[fLength] = fbox.options[i].text;
fLength++;
}
}
arrFbox.sort();
arrTbox.sort();
fbox.length = 0;
tbox.length = 0;
var c;
for(c = 0; c < arrFbox.length; c++) {
var no = new Option();
no.value = arrLookup[arrFbox[c]];
no.text = arrFbox[c];
fbox[c] = no;
}
for(c = 0; c < arrTbox.length; c++) {
var no = new Option();
no.value = arrLookup[arrTbox[c]];
no.text = arrTbox[c];
tbox[c] = no;
}
}
</script>
</body>
********************jsp实现图形验证码***********
调用方法
<img src="http://...../getImg">
原理,在servlet中随机生成一个4位数字1000-9999
然后把这数字写入session
输出一个图片,上面写有这四个数字
在服务器端根据用户输入的数字和
session中的值比较。
package com.schoolwx.util;
import java.io.*;
import java.util.*;
import com.sun.image.codec.jpeg.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.awt.*;
import java.awt.image.*;
/**
* Title: getImg.java
* Description: 这个class主要实现随机生成一个4位数的验证码,并写入session,
* Copyright: Copyright (c) 2003
* Company: 蓝星软件
* @author falcon
* @version 1.1
*/
public class getImg extends HttpServlet {
private Font mFont=new Font("宋体", Font.PLAIN,12);//设置字体
//处理post
public void doPost(HttpServletRequest request,HttpServletResponse response)
throws ServletException,IOException {
doGet(request,response);
}
public void doGet(HttpServletRequest request,HttpServletResponse response)
throws ServletException,IOException {
//取得一个1000-9999的随机数
String s="";
int intCount=0;
intCount=(new Random()).nextInt(9999);//
if(intCount<1000)intCount+=1000;
s=intCount+"";
//对session付值。
HttpSession session=request.getSession (true);
session.setAttribute("getImg",s);
response.setContentType("image/gif");
ServletOutputStream out=response.getOutputStream();
BufferedImage image=new BufferedImage(35,14,BufferedImage.TYPE_INT_RGB);
Graphics gra=image.getGraphics();
//设置背景色
gra.setColor(Color.yellow);
gra.fillRect(1,1,33,12);
//设置字体色
gra.setColor(Color.black);
gra.setFont(mFont);
//输出数字
char c;
for(int i=0;i<4;i++) {
c=s.charAt(i);
gra.drawString(c+"",i*7+4,11); //7为宽度,11为上下高度位置
}
JPEGImageEncoder encoder=JPEGCodec.createJPEGEncoder(out);
encoder.encode(image);
out.close();
}
}
********************JSP调用报表示例***********
<%@ page language="java" pageEncoding="GBK"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path;
request.setCharacterEncoding( "GBK" );
%>
<%@taglib uri="/WEB-INF/runqianReport4.tld" prefix="report" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>帶分頁的報表</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<link href="<%=basePath%>/styles/css1.css" rel="stylesheet" type="text/css">
<%
String hong="hong=select * from ukehu where yid =""+request.getParameter("name")+""";
%>
</head>
<body>
<center>
<report:html name="report1" reportFileName="红参数.raq"
srcType="file"
params="<%=hong%>"
scale="1"
width="-1"
funcBarLocation="bottom"
separator=" "
needSaveAsExcel="yes"
needSaveAsPdf="yes"
needSaveAsWord="yes"
needPrint="yes"
printLabel="<input name="print_btn" type="button" class="btn001" value="print">"
savePrintSetup="yes"
printedRaq="红参数.raq"
excelLabel="<input name="exportExcel_btn" type="button" class="btn001" value="To Excel">"
pdfLabel="<input name="exportPdf_btn" type="button" class="btn001" value="To PDF">"
wordLabel="<input name="exportWrod_btn" type="button" class="btn001" value="To Word">"
saveAsName="userlist"
needScroll="no"
needPageMark="yes"
firstPageLabel="<input name="firstPage_btn" type="button" class="btn001" value="第一页 ">"
prevPageLabel="<input name="prevPage_btn" type="button" class="btn001" value="上一页">"
nextPageLabel="<input name="nextPage_btn" type="button" class="btn001" value="下一页">"
lastPageLabel="<input name="lastPage_btn" type="button" class="btn001" value="尾页">"
displayNoLinkPageMark="yes"
/>
</center>
</body>
</html>
********************JSP分页***********
一 前提
希望最新的纪录在开头给你的表建立查询:
表:mytable
查询:create or replace view as mytable_view from mytable order by id desc 其中,最好使用序列号create sequence mytable_sequence 来自动增加你的纪录id号
二 源程序
<%String sConn="你的连接"
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection conn=DriverManager.getConnection(sConn,"你的用户名","密码");
Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
Statement stmtcount=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
ResultSet rs=stmt.executeQuery("select * from mytable_view");
String sqlcount="select count(*) from mytable_view";
ResultSet rscount=stmtcount.executeQuery(sqlcount);
int pageSize=你的每页显示纪录数;
int rowCount=0; //总的记录数
while (rscount
int pageCount; //总的页数
int currPage; //当前页数
String strPage;
strPage=request.getParameter("page");
if (strPage==null){
currPage=1;
}
else{
currPage=Integer.parseInt(strPage);
if (currPage<1) currPage=1;
}
pageCount=(rowCount+pageSize-1)/pageSize;
if (currPage>pageCount) currPage=pageCount;
int thepage=(currPage-1)*pageSize;
int n=0;
rs.absolute(thepage+1);
while (n<(pageSize)&&!rs
%>
<%rs.close();
rscount.close();
stmt.close();
stmtcount.close();
conn.close();
%>
//下面是 第几页等
<form name="sinfo" method="post"
action="sbinfo_index.jsp?condition=<%=condition%>&type=<%=type%>"
onSubmit="return testform(this)">
第<%=currPage%>页 共<%=pageCount%>页 共<%=rowCount%>条
<%if(currPage>1){%><a
href="sbinfo_index.jsp?condition=<%=condition%>&type=&
lt;%=type%>">首页</a><%}%>
<%if(currPage>1){%><a
href="sbinfo_index.jsp?page=<%=currPage-1%>&condition=&
lt;%=condition%>&type=<%=type%>">上一页</a><%}%&
gt;
<%if(currPage<pageCount){%><a
href="sbinfo_index.jsp?page=<%=currPage+1%>&condition=&
lt;%=condition%>&type=<%=type%>">下一页</a><%}%&
gt;
<%if(pageCount>1){%><a
href="sbinfo_index.jsp?page=<%=pageCount%>&condition=&
lt;%=condition%>&type=<%=type%>">尾页</a><%}%>
跳到<input type="text" name="page" size="4" style="font-size:9px">页
<input type="submit" name="submit" size="4" value="GO" style="font-size:9px">
</form>
********************JSP中表单数据存储的一种通用方法***********
摘 要
本文以Oracle数据库为例,介绍了在采用JSP技术开发WEB应用时一种简便通用的表单数据存储处理方法,以减轻开发工作量,同时提供了主要的程序代码。
引言
J2EE(Java 2 Enterprise
Edition)技术已广泛应用在Web应用开发中,其中的JavaBean、Servlet技术为开发者提供了更为清晰的开发环境,使用JSP技术表现
页面,使用Servlet技术完成大量的业务处理,使用Bean来存储数据及一些业务处理。在WEB应用中,业务数据存储到数据库中的处理工作经常很繁
重,其中一种主要的形式就是表单数据存储到数据库,整个应用处理过程牵涉到大量的这种数据存储操作,对每个表单都要单独编写相应的数据存储程序,花费了开
发人员大量的时间和精力。采用什么方法来减轻表单数据存储的开发工作量是值得研究的问题。
两种常见的表单数据存储处理方法
1、对每一表单都编写相应的程序代码
在JSP页面或JavaBean或Servlet中,使用request.
getparameter()函数逐一提取表单提交的数据,或编写相应的JavaBean,使用setProperty方法将数据自动取到
JavaBean中,然后生成SQL语句(insert,update,delete),最后执行executeupdate()函数完成数据表存储。
2、对每一数据表自动生成一个JavaBean程序代码
数据库系统必须支持用户能够读取表结构,并识别关键字段。利用面向对象快速开发工具,如PowerBuilder、Delphi等,自行开发
一个java代码自动生成程序。在该程序中读取数据库表的结构:字段名、数据类型、数据长度,自动生成一个JavaBean代码。在该代码中定义与表中字
段对应的同名变量,建立所有变量的setValue和getValue方法,建立insert、update、delete函数分别处理insert、
update、delete的SQL语句生成和执行。
在表单提交的数据处理页面中,编写如下代码,将表单数据存储到JavaBean中:
<jsp:useBean id="table" class="table1_bean" />
<jsp:setProperty name="table" property="*" />
(注:table1_bean为上述自动生成的对应某一个表的JavaBean)
然后调用table1_bean中insert、update、delete函数完成数据表存储,并返回执行结果。如:
<%boolean success =table.insert(); %>
第一种方法简单直观,但对每一表单都需要编写相应的数据处理程序。对稍微大一点的应用,表单数量可能很多,开发工作量很大,开发工作效率低。表结构变动如增加、减少字段时,需修改相应的数据处理程序。
第二种方法相对第一种简便得多,每一数据表的数据处理由对应的JavaBean实现,JavaBean自动生成,不需编写,表结构变动时只需
重新生成新的JavaBean,经java编译后覆盖原java类即可。但该方法需要开发JavaBean自动生成程序,表结构变动时JavaBean需
要重新生成和编译。
介绍一种简便通用的方法实现表单数据存储
在WEB应用开发中,很多表单在经过前台浏览器端简单的数据校验后,提交后台服务器,服务器对数据不用作任何处理直接将数据存储到一个数据表
中。对这种情况,我们可以只编写一个程序,对这些表单统一处理,将数据存储到相应的一个数据表中。该方法同样要求数据库系统支持表结构读取和关键字段识
别。我们采用JSP技术编写该程序,程序文件取名为DbdataStore.jsp。
1、调用格式
在网页中表单的Action调用方法如下:
<Form Name=Frm1 Method=Post Action="DBdataStore.jsp? tablename=table1&OperType=…">
table1为数据将要存储的数据库表的表名,OperType操作类型分为三种:insert,update,delete。
表单中的<input type=text name=…>,<textarea name=…><select
name=…>等中的name值应与数据表的字段名相同,DBdataStore.jsp中逐一提取表单提交的对应字段名的数据值,若表单中未定义输入,
得到的值为空值,则对该字段不作处理。
2、以oracle为例的视图定义
1) 建立表各列数据类型视图
CREATE OR REPLACE VIEW v_dbstru AS SELECT table_name,column_name,data_type,data_length,data_precision,data_scale,column_id
FROM all_tab_columns WHERE owner="user1";//user1为数据表的属主。
2) 建立表的关键列视图
CREATE OR REPLACE VIEW v_pkey_column AS
SELECT b.table_name,b.column_name,b.position
FROM all_constraints a,all_cons_columns b
WHERE a.owner=b.owner AND a.constraint_name=b.constraint_name AND a.owner="user1" AND a.constraint_type="P";
3、主要程序代码
1) 程序初始化
String tablename=request.getParameter("tablename");//提取表名
String OperType=request.getParameter("OperType");//提取操作类型
String sFieldValue="";//存放表单提交的字段数据值
String fieldname="",Datatype="" //存放字段名,字段数据类型
int iFieldvalue=0;
String updateSql="",whereSql=" where ",insSql1="",insSql2="",opSql="",strSql ="";
ResultSet rs1=null,rs2=null;
insSql1="insert into "+tablename+" (";
insSql2="values(";
2)生成sql语句关键字段部分
生成insert语句关键字段部分,如:insert into table1(id 和 values(100));
只使用关键字段生成update,delete语句where部分,如:where id=100;
在操作类型为update时,网页form表单中不对关键字段的数据进行修改。
rs1=Stmt.executeQuery("SELECT column_name FROM v_pkey_column WHERE table_name=""+tablename+""");//取关键字段字段名
while(rs1.next()){
fieldname=rs1.getString("column_name");
rs2=Stmt.executeQuery("SELECT data_type FROM v_dbstru WHERE
table_name=""+tablename+"" AND
column_name=""+fieldname+""");//取关键字段数据类型
if(rs2.next()){
Datatype=rs2.getString("data_type");
sFieldValue=request.getParameter(fieldname.toLowerCase());
//生成insert语句关键字段部分
if(OperType.equals("insert")){
insSql1+=fieldname+",";
if((sFieldValue==null) ){
//表单未提交关键字段数据值时,本文只按数字型处理,数据值按下一流水号计算。
rs2= Stmt. executeQuery("SELECT max("+fieldname+")+1 FROM
"+tablename);rs2.
next();iFieldvalue=rs2.getInt(1);insSql2+=Integer.toString(iFieldvalue)+",";
}else if(Datatype.equals("DATE")){
insSql2+= "To_Date("" + sFieldValue + "","YYYY-MM-DD"),";
}else if(Datatype.equals("VARCHAR2") || Datatype.equals("CHAR")){
insSql2+=""" + sFieldValue+"",";}
else /*NUMBER,FLOAT */ insSql2+=sFieldValue+",";}
//生成update,delete语句where部分:where fieldname=... AND
if(OperType.equals("update") || OperType.equals("delete")){
if(Datatype.equals("DATE")){
whereSql+=fieldname+"=To_Date("" + sFieldValue + "","YYYY-MM-DD") AND ";
}else if(Datatype.equals("VARCHAR2") || Datatype.equals("CHAR")){
whereSql+=fieldname+"="" + sFieldValue+"" AND ";}
else /*NUMBER,FLOAT */ whereSql+=fieldname+"="+ sFieldValue+" AND ";}
}
}
whereSql=whereSql.substring(0,whereSql.length()-4);
3)非关键字段部分sql语句生成
update语句,如:update table1 set column1=value1,… where id=100
insert语句,如:insert into table1(id,column1,…)values(100,value1,…)
updateSql="update "+tablename+" set ";
strSql="SELECT
column_name,data_type,data_length,data_precision,data_scale FROM
v_dbstru a "+"where table_name=""+tablename+"" AND a.column_name not
in (SELECT b.column_name FROM v_pkey_column b where
b.table_name=a.table_name)";
rs1=Stmt.executeQuery(strSql);//取非关键字段字段名和数据类型
while(rs1.next()){
fieldname=rs1.getString("column_name");Datatype=rs1.getString("data_type");
sFieldValue=request.getParameter(fieldname.toLowerCase());//若表单未提交该字段
的值,则忽略该字段的处理
if((sFieldValue!=null)){
//生成insert语句=insSql1+insSql2 即insert into tablename(… 和 values(…
if(OperType.equals("insert")){ insSql1+=fieldname+",";
if(Datatype.equals("DATE")){
insSql2+= "To_Date("" + sFieldValue + "","YYYY-MM-DD"),";
} else if(Datatype.equals("VARCHAR2") || Datatype.equals("CHAR")){
insSql2+=""" + sFieldValue+"",";}else /*NUMBER,FLOAT*/ insSql2+= sFieldValue+",";}
//生成update语句=updateSql+whereSql 即update tablename set ... where fieldname=... if(OperType.equals("update")){
if(Datatype.equals("DATE")){
updateSql+=fieldname+"=To_Date("" + sFieldValue + "","YYYY-MM-DD"),";
}else if(Datatype.equals("VARCHAR2") || Datatype.equals("CHAR")){
updateSql+=fieldname+"="" + sFieldValue,1}+"",";}else /*NUMBER,FLOAT*/ updateSql+=fieldname+"="+sFieldValue+",";} ))
rs1.close();
4)生成完整的sql语句并执行
if(OperType.equals("insert"))
opSql=insSql1.substring(0,insSql1.length()-1)+")"+insSql2.substring(0,insSql2.length()-1)+")";
if(OperType.equals("update"))
opSql=updateSql.substring(0,updateSql.length()-1)+" "+whereSql;if(OperType.equals("delete"))
opSql="delete FROM "+tablename+" "+whereSql;
//已生成完整的sql语句opSql
try{sqlnrows=Stmt.executeUpdate(opSql);}
catch(SQLException e){out.println("SQLException:"+opSql);}
4、特点
该方法对所有这种直接存储的表单都统一使用本程序,具有通用性,不必对每个表单或每个数据表独立开发相应程序,开发工作量非常少,调用也非常
简便。同时,在表结构变动时,不用修改DBdataStore.jsp程序。本程序也可改写为Servelet,调用格式为<Form
Name=Frm1 Method=Post
Action="DBdataStoreServelet?tablename=table1&OperType=…">。
结束语
在Web应用中,如果表单数据在提交后,还需要服务器后台作进一步的数据校验或处理,则需要采用第二种方法。但很多情况是用户在表单中输入或
修改数据,在前台浏览器端使用javascript对数据进行简单校验或处理,然后提交,在后台服务器端不作任何处理,直接将表单提交的数据存储到数据库
的一个表中。这时候采用第三种方法非常简便,可以大大减轻开发人员的工作量
end
发表评论
-
JAVA EE BigData Apache Storm / Spark / Samza / apache storm / Flink
2016-11-23 16:38 1139sd http://storm.apache.org/ ... -
JAVA EE Code Quality / Sonar / findbugs / checkstyle / cobertura(coverage) / PMD
2016-11-11 10:53 1270s http://sonar.oschina.net/ ... -
JAVA EE Apache Zookeeper / Google Chubby
2016-11-08 00:00 2365s http://zookeeper.apache.or ... -
framework apache commons
2009-12-14 15:24 1607http://commons.apache.org/ ... -
framework Schedule Quartz
2009-10-13 10:53 4296quartz http://www.opensymp ... -
Java EE search_lucene xapian
2009-09-03 00:43 2409搜索引擎产品 http://www.bing.com ... -
Java EE VM Montior JMX / Hyperic HQ / OpenNMS /
2009-08-24 16:54 3449Monitoring and Managemen ... -
framework ldap
2009-08-17 12:29 1247http://www.oschina.net/project/ ... -
JAVA EE robot_ItSucks
2009-08-15 15:19 1495http://open-open.com/open223668 ... -
JAVA EE Projects_apacheFoundation
2009-07-29 09:47 1352Apache Software Foundation Di ... -
framework freemarker / velocity
2009-03-26 21:16 2517CMS 静态化参考 JAVA静态化,如何生成html ... -
JAVA_EE EJB
2009-03-25 22:02 1418E:\lindows\workspace\ejb>tre ... -
JAVA EE JSP 2.1
2009-03-07 00:22 2255JSP 2.1对JSP2.0的改动 http://mar ... -
JAVA EE JSP_JNDI
2009-02-24 12:24 1707dsfdsa http://lindows.iteye.c ... -
JAVA EE JSP_EL
2009-02-21 17:28 1565http://www.javapassion.com/j2 ... -
framework JasperReport
2008-12-06 17:16 1401JasperReport报表设计总结 ... -
framework osworkflow / jbpm
2008-12-01 20:58 3682osworkflow http://gr ... -
JAVA EE JSP_Servlet
2008-11-01 16:25 1779Servlet API htt ... -
framework junit
2008-10-29 15:30 1936http://www.appperfect.com/ A ... -
JAVA EE Projects_sourceforge
2008-10-13 14:30 4663http://www.sourceforge.net/ ...
相关推荐
Java中的垃圾回收(Garbage Collection)机制自动管理内存,无需程序员手动释放不再使用的对象。JVM定期检测不可达的对象,并将其占用的内存回收,以供后续使用,从而避免了内存泄漏和过度分配的问题。 #### 远程调用...
### Java EE面试题总结 #### 一、Hibernate工作原理及为何使用 - **工作原理**: 1. **读取并解析配置文件**:在应用程序启动时,Hibernate会读取`hibernate.cfg.xml`配置文件,该文件定义了连接数据库的信息(如...
2. **入門ガイド** (Beginner's Guide):适合初学者阅读,提供Java EE基础教程,涵盖了基本的Web组件、Servlet、JSP、EJB等核心概念,以及如何在Java EE环境中搭建和部署应用程序的基础知识。 3. **インストールガ...
Java SE(标准版)、Java EE(企业版)和Web API是Java编程领域的三大核心部分,它们各自扮演着不同的角色,并且在软件开发中占据着重要地位。这些API文档是开发者们进行程序设计、编码和调试时的重要参考资料。 **...
文档提及了Java相关的众多技术点和关键词,包括但不限于Java SE(Standard Edition)、Java EE(Enterprise Edition)、JDBC、JSP/Servlet、EJB、Struts、Hibernate、Spring、AJAX、IO、Collection、List、Set、Map...
本课程大纲涵盖了 Java 语言的核心语法、面向对象编程、数据结构、网络编程、数据库编程、Web 开发、Java EE 架构等方面的知识点。 Java 核心语法 * JDK 配置和 Eclipse 开发工具使用 * 变量、数据类型、表达式、...
Java集合框架(Collection API)是Java SE中的一个核心部分,它提供了对对象集合的高效管理。集合框架包括List、Set、Map及其各种实现,例如ArrayList、LinkedList、Vector、HashSet、TreeSet、HashMap和TreeMap等。...
- **JDK 1.2 (1998年)**:此版本中引入了Java虚拟机(JVM)的内存管理机制,特别是自动垃圾回收(Garbage Collection),大大减轻了程序员在内存管理方面的负担。 - **JDK 1.4 (2002年)**:加强了Java的安全性,通过...
集合框架是Java SE的一个重要部分,包括了Collection和Map两大体系,包含List、Set、Map以及相关实现类,如ArrayList、HashSet和HashMap。迭代器(Iterator)和比较器(Comparator)是管理集合中元素的基础工具。...
3. **Java EE(Enterprise Edition)企业级类库**:扩展了Java SE的功能,提供如Servlet、JSP(JavaServer Pages)、EJB(Enterprise JavaBeans)、JMS(Java Message Service)等,用于构建分布式企业级应用。...
Java EE是企业级Java应用的标准,包含Servlet、JSP、EJB等技术。Spring框架是Java EE开发中的常用工具,提供依赖注入(DI)、面向切面编程(AOP)等功能,简化了企业级应用的开发。 本课件中的Java程序设计语言...
16. **Java EE(企业版)**:Java EE提供了一整套企业级应用开发的框架和服务,如Servlet、JSP、EJB等,用于构建分布式、事务处理和安全的Web应用。 17. **Java SE(标准版)**:Java SE是Java的基础版本,包含了...
19. **Java EE(Enterprise Edition)**:Java EE是企业级应用开发的平台,包括Servlet、JSP、EJB、JPA等技术,用于构建分布式、多层的Web应用。 20. **Spring框架**:Spring是一个广泛使用的Java EE框架,提供了...
Java EE中的重要技术包括Servlet、JSP(JavaServer Pages)、EJB(Enterprise JavaBeans)、JPA(Java Persistence API)、JSF(JavaServer Faces)、CDI(Contexts and Dependency Injection)等。这些技术涉及到...
Java分为三个主要的标准:Java SE(Standard Edition)、Java EE(Enterprise Edition)、Java ME(Micro Edition)。Java SE是最基础的标准,包含了Java的核心库和功能;Java EE则针对企业级应用,提供了更为复杂的...
此外,Java还支持Swing和JavaFX等图形用户界面(GUI)开发,以及Java EE(企业版)的服务器端开发,如Servlet、JSP、EJB等技术,这些都是构建大型分布式系统的基石。 "JAVA+JDK实例开发宝典"可能涵盖了这些主题,并...
它不存在于J2SE(Java 2 Standard Edition)或J2ME(Java 2 Micro Edition)中,而是在J2EE(Java 2 Enterprise Edition)中,因此正确答案是B.J2EE。 2. **JSP输出结果** 给定的JSP代码中,使用了for循环来输出...
7. Servlet:Servlet是Java EE(现在称为Jakarta EE)的一部分,它是服务器端的Java应用程序,用于接收和响应来自客户端的请求,通常与JSP配合使用。 8. 持久层技术:Hibernate和iBatis是两个流行的ORM(对象关系...
了解如何将Java应用与中间件如Tuxedo或CORBA集成,以及与Java EE平台的协同工作。 ### 12. XML处理与Web服务 熟悉XML处理API,如JAXP(Java API for XML Processing)、JDOM、DOM4J等,掌握Java与Web服务的交互技术...
9. **JVM与内存管理**:Java虚拟机(JVM)是Java程序的运行环境,负责垃圾回收(Garbage Collection),自动管理内存,避免了程序员手动释放内存的麻烦。 10. **Java EE与Web开发**:Java-EE(Enterprise Edition)...