初级jsp程序员的小小愿望

a13106070 2010-10-21 10:50:45
呵呵 大家好
我刚接触jsp没几天 不懂得太多了 基础也很差 。。。 哪位有jsp增删改查源码 发我份 来研究下呗 最好有详细注释 。。。非常感谢
学习资料也好 非常感谢
...全文
171 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
yinongstudio 2010-10-23
  • 打赏
  • 举报
回复
http://code.google.com/p/simplejee/

这个里面有很多例子,从基本的jsp到jdbc到struts2,hibernate,spring,iBATIS,以及工作流等
jiangzongyaoao 2010-10-23
  • 打赏
  • 举报
回复
一般数据库访问可以用Db-utile这个开源项目,他封装了JDBC,比较好用,并且效率和JDBC相差无几。
forever_ai 2010-10-23
  • 打赏
  • 举报
回复
路过
支持一下
李嘉的博客 2010-10-22
  • 打赏
  • 举报
回复
package com.gs.flexBz.db;



import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;

import com.gs.flexBz.entity.Message;

public class BaseDao{
private static final String JDBC = "com.microsoft.sqlserver.jdbc.SQLServerDriver"; //数据库驱动
private static final String URL = "jdbc:sqlserver://localhost:1433;DataBaseName=flexBZ"; //数据库连接字符串
private static final String USER = "sa"; //用户名
private static final String PASSWORD = "cstp"; //密码
private Connection conn=null;
private PreparedStatement pstmt=null;
private ResultSet rs=null;
/**
* 得到数据库连接对象
* @return 返回conn
*/
public static Connection getCon(){
Connection con = null; //声明conn
try {
System.out.println("开始");
Class.forName(JDBC);
System.out.println("10&8="+(10&8));
con = DriverManager.getConnection(URL, USER, PASSWORD);
} catch (Exception e) {
System.out.println("数据库连接出错!");

}
return con;
}

/**
* 关闭数据库连接 释放资源
* @param con 连接
* @param st 执行器
* @param rs 结果集
*/
public static void closeConn(Connection con,Statement st,ResultSet rs) {
try {
if(rs!=null)
rs.close();
if(st!=null)
st.close();
if(con!=null)
con.close();
} catch (Exception e) {
System.out.println("释放数据库资源,关闭连接出错!");

}
}

/**
*
* @param sql
* @return 执行SQL语句,返回受影响的行数
*/
public int excutesql(String sql,Object[] params){
conn=null;
pstmt=null;
int count=0;
conn=getCon();
try {
pstmt=conn.prepareStatement(sql);
if(params!=null&¶ms.length!=0) //数组里没有要解释的字段 就不执行解释循环
for(int i=0;i<params.length;i++){
pstmt.setObject(i+1,params[i]); //PreparedStatement解释sql语句中的?来过滤关键字
}
count=pstmt.executeUpdate(); //执行sql语句
} catch (SQLException e) {
System.out.println("------basedao增删改出错------");

}finally{
closeConn(conn,pstmt,null);
}
return count; //受影响的行数
}

public ResultSet select(String sql,Object[] params){
conn=null;
pstmt=null;
rs=null;
conn=getCon();
try {
pstmt=conn.prepareStatement(sql);
if(params!=null&¶ms.length!=0) //数组里没有要解释的字段 就不执行解释循环
for(int i=0;i<params.length;i++){
pstmt.setObject(i+1,params[i]); //PreparedStatement解释sql语句中的?来过滤关键字
}
rs=pstmt.executeQuery(); //执行sql语句
} catch (SQLException e) {
System.out.println("------basedao增删改出错------");

}
return rs;
}

public List<Object> select(String sql,Object[] params,Class clazz){
Connection conn=null;
PreparedStatement pstmt=null;
ResultSet rs=null;
List<Object> datas = null;
conn=getCon();
try {
pstmt=conn.prepareStatement(sql);
if(params!=null&¶ms.length!=0)
for(int i=0;i<params.length;i++){
pstmt.setObject(i+1,params[i]);
}
rs=pstmt.executeQuery();
ResultSetMetaData rsmd=rs.getMetaData(); //结果集元数据
int count=rsmd.getColumnCount(); //获得结果集有多少列
String[] colNames=new String[count]; //保存列名的字符串数组
for(int i=0;i<count;i++){ //分别把结果集中的列取出来放到colNames数组中
colNames[i]=rsmd.getColumnLabel(i+1);
}
datas = new ArrayList<Object>(); //实例化
Object obj=null;
Method[] ms=clazz.getMethods(); //取出clazz字节码中所有的方法
while(rs.next()){
obj=clazz.newInstance(); //实例化clazz字节码
for(int i=0;i<colNames.length;i++){
String colName=colNames[i]; //获得每个列名
String MethodName="set"+colName; //组成set方法名字
for(Method m:ms){
if(MethodName.equals(m.getName())){
m.invoke(obj,rs.getObject(colName)); //调用set方法.把数据库中取出的值设置到对象中
}
}
}
datas.add(obj); //把对象加入list
}
} catch (SQLException e) {
System.out.println("---------查询数据出错----------");
throw new RuntimeException(e.getMessage(),e);
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}finally{
closeConn(conn,pstmt,rs);
}
return datas;
}

public static void main(String[] args) {
BaseDao bd=new BaseDao();
List<Object> list=bd.select("Select [E_id],[E_name],[Ms_content],[Ms_time] from [Message]",null,Message.class);
for(int i=0;i<list.size();i++){
Message news=(Message)list.get(i);
System.out.println(news.getMs_content());
}
}
}
这里是我自己做的一个.你看看懂不懂
zn85600301 2010-10-22
  • 打赏
  • 举报
回复
开源网上 应该有
个人建议 先把基本理论看懂了 然后CRUD 一个一个照例子写 最后自己写
多单步看看执行的顺序流程
a13106070 2010-10-22
  • 打赏
  • 举报
回复
常感谢上边的两位大哥 发我的多代码 呵呵。。。。 还有注释的
qunhao 2010-10-22
  • 打赏
  • 举报
回复
操作数据库数据使用PreparedStatement接口

三个常用的执行SQL命令的方法
(1)ResultSet executeQuery()
可以执行SQL查询语句,并将查询结果封装到结果集中返回
(2)int executeUpdate()
可以执行增、删、改的SQL语句,返回操作后的受影响行数
(3)boolean execute()
这是一个最为一般的执行方法,可以执行任意SQL语句,然后获得一个布尔值,表示是否返回ResultSet



package news.test;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;

public class Sample
{
public static void main(String[] args)
{
try
{
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
}
catch(ClassNotFoundException e)
{
System.out.println("驱动类没有找到!");
}
Connection con=null;
try
{
con=DriverManager.getConnection("jdbc:sqlserver://localhost:1433;databaseName=news","sa","sa");
}
catch (SQLException e)
{
System.out.println("数据库连接失败:"+e.getMessage());
}
System.out.println("连接数据库成功!");
String sql="insert into FirstLevelTitle values(?,?,?,?)";
try
{
PreparedStatement ps=con.prepareStatement(sql);
ps.setString(1, "666");
ps.setString(2, "测试添加");
ps.setString(3, "qunhao");
ps.setString(4, "");
if(ps.executeUpdate()==1)
System.out.println("添加成功");
else
System.out.println("添加失败");
}
catch (Exception e)
{
e.printStackTrace();
}

}
}
内容概要:本文详细阐述了工业母机技术领域中“高级结构设计工程师”这一岗位的全方位任职要求与职业发展路径,涵盖职位对标、目标企业、学历与证书要求、年龄范围、管理半径、晋升关键点、必备工作经验年限以及薪资待遇区间。重点突出该岗位对高端数控机床核心结构(如床身、主轴箱、导轨等)设计能力的要求,强调有限元分析、精度控制、热变形补偿、振动抑制等核心技术能力,并明确指出需具备项目主导经验、团队管理能力和跨部门协作经验。同时,根据不同企业类型和发展阶段,给出了清晰的年薪划分标准,体现了市场对该岗位的技术深度与综合能力的高度认可。; 适合人群:具备5年以上工业母机或高端机床结构设计经验,致力于向高级工程师、技术专家或管理岗位发展的结构设计从业者;或希望转型进入高端装备制造业的精密机械研发人员。; 使用场景及目标:①用于求职者精准定位职业发展方向,评估自身与高级岗位之间的能力差距;②辅助企业制定人才招聘标准与薪酬体系;③指导技术人员规划技能提升路径,聚焦核心技术积累与项目经验沉淀。; 阅读建议:建议结合个人职业发展阶段对照文中各项指标进行自我诊断,重点关注“晋升关键点”与“必备年限”部分,有针对性地补齐技术短板、积累主导项目经验,并注重专利成果与团队管理能力的培养,以全面提升竞争力。
内容概要:本文研究基于静态约束法的主动配电网电动汽车接入容量评估方法,并提供了Matlab代码实现。通过构建配电网的静态约束模型,综合考虑电压偏差、线路容量、变压器负载率等关键运行约束条件,系统评估在保障电网安全稳定运行前提下,配电网能够容纳的最大电动汽车充电负荷容量。研究聚焦于高比例电动汽车接入背景下配电网承载能力的量化分析,旨在为新型负荷环境下的电网规划、充电设施布局及电网升级改造提供科学的决策支持与技术手段,提升电力系统对交通电气化的适应性与韧性。; 适合人群:电气工程、电力系统及其自动化等相关专业的研究人员、研究生及从事电网规划、运行与管理工作的工程技术人员。; 使用场景及目标:①用于量化分析大规模电动汽车充电行为对配电网电压、线路负载等运行指标的影响;②评估现有配电网基础设施在电动汽车接入场景下的承载裕度与薄弱环节;③为充电站选址定容、有序充电策略制定以及电网扩容改造提供数据支撑和决策依据; 阅读建议:建议结合Matlab代码与电力系统分析基础知识同步学习,重点关注约束条件的数学建模过程、求解算法的实现逻辑与仿真结果的工程意义解读,可通过修改典型配电网参数和电动汽车接入场景进行扩展性研究与验证。
源码下载地址: https://pan.quark.cn/s/a92ed831069e ### Jmeter工具对验证码的处理方法 #### 一、引言 随着互联网应用安全性的不断提升,验证码已成为网站登录流程中的关键环节。然而,对于性能测试工程师而言,如何高效利用JMeter工具处理登录过程中的验证码构成了一项挑战。本文将系统性地阐述在JMeter中配置和处理验证码的方法,旨在帮助读者熟练掌握这一技能。 #### 二、JMeter中处理验证码的方法与步骤 ##### 1. 创建线程组 在JMeter中构建一个线程组,该线程组将作为执行测试的起始点。在此线程组内,需要添加各类采样器、监听器及其他必要组件,以模拟用户的登录行为。 ##### 2. 新建获取验证码的HTTP请求 在已创建的线程组中,添加一个HTTP请求采样器来模拟用户获取验证码的操作。特别需要注意的是,若目标网站的验证码以图片形式呈现,必须配置正确的HTTP请求以获取该图片。 ##### 3. 配置后置处理器解析验证码 由于通过HTTP请求无法直接获取验证码的值,因此需要增设一个后置处理器实现这一功能。推荐采用BeanShell Post Processor,这是一种高度灵活的脚本编写方式,能够充分满足解析验证码的需求。具体的代码实现可参考以下链接:[http://blog.csdn.net/xreztento/article/details/48682923](http://blog.csdn.net/xreztento/article/details/48682923)。 在BeanShell Post Processor中,需编写一段代码来解析获取到的验证码图片,并将其保存至JMeter的用户自...

67,535

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧