问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

关于学习java的问题

发布网友 发布时间:2022-04-08 02:09

我来回答

8个回答

懂视网 时间:2022-04-08 06:30

/** * JDBC 工具类,抽取公共方法 * * @author seawind * */ public class JDBCUtils { private static final String DRIVERCLASS; private static final String URL; private static final String USER; private static final String PWD; static { ResourceBundle bundle = ResourceBundle.getBundle("dbconfig"); DRIVERCLASS = bundle.getString("DRIVERCLASS"); URL = bundle.getString("URL"); USER = bundle.getString("USER"); PWD = bundle.getString("PWD"); } // 建立连接 public static Connection getConnection() throws Exception { loadDriver(); return DriverManager.getConnection(URL, USER, PWD); } // 装载驱动 private static void loadDriver() throws ClassNotFoundException { Class.forName(DRIVERCLASS); } // 释放资源 public static void release(ResultSet rs, Statement stmt, Connection conn) { if (rs != null) { try { rs.close(); } catch (SQLException e) { e.printStackTrace(); } rs = null; } release(stmt, conn); } public static void release(Statement stmt, Connection conn) { if (stmt != null) { try { stmt.close(); } catch (SQLException e) { e.printStackTrace(); } stmt = null; } if (conn != null) { try { conn.close(); } catch (SQLException e) { e.printStackTrace(); } conn = null; } } }

JDBC增删改查

package cn.itcast.jdbc;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

import org.junit.Test;

/**
 * 对users表增删改查
 * 
 * @author seawind
 * 
 */
public class JDBCCURD {
 // 查询
 @Test
 public void demo4() throws Exception {
 // 查询返回结果集
 Connection conn = null;
 Statement stmt = null;
 ResultSet rs = null;

 try {
  conn = JDBCUtils.getConnection();
  stmt = conn.createStatement();
  String sql = "select * from users";
  rs = stmt.executeQuery(sql);
  while (rs.next()) {
  System.out.println(rs.getString("name"));
  }
 } catch (SQLException e) {
  e.printStackTrace();
 } finally {
  JDBCUtils.release(rs, stmt, conn);
 }
 }

 // 删除users 中 bbb
 @Test
 public void demo3() throws Exception {
 Connection conn = null;
 Statement stmt = null;

 try {
  // 建立连接
  conn = JDBCUtils.getConnection();
  // 操作数据库
  stmt = conn.createStatement();
  String sql = "delete from users where name = ‘bbb‘";
  int row = stmt.executeUpdate(sql);
  System.out.println(row); // 如果row 为0 失败,不为0 成功
 } catch (SQLException e) {
  e.printStackTrace();
 } finally {
  JDBCUtils.release(stmt, conn);
 }
 }

 // 修改users表数据
 @Test
 public void demo2() throws Exception {
 Connection conn = null;
 Statement stmt = null;

 try {
  // 建立连接
  conn = JDBCUtils.getConnection();
  // 操作数据库
  stmt = conn.createStatement();
  String sql = "update users set email = ‘service@itcast.cn‘ where name=‘eee‘";
  int row = stmt.executeUpdate(sql);
  System.out.println(row); // 如果row 为0 失败,不为0 成功
 } catch (SQLException e) {
  e.printStackTrace();
 } finally {
  JDBCUtils.release(stmt, conn);
 }

 }

 // 向users表插入一条数据
 @Test
 public void demo1() throws Exception {
 Connection conn = null;
 Statement stmt = null;

 try {
  // 建立连接
  conn = JDBCUtils.getConnection();
  // 操作数据
  stmt = conn.createStatement();
  String sql = "insert into users values(5,‘eee‘,‘1234‘,‘eee@itcast.cn‘)";
  int row = stmt.executeUpdate(sql);
  System.out.println(row);// 插入成功 1 失败 0
 } catch (SQLException e) {
  e.printStackTrace();
 } finally {
  JDBCUtils.release(stmt, conn);
 }

 }
}

技术分享

JAVAEE模式之DAO模式

JavaEE软件体系结构---架构模式
客户端层 实现技术 DHTML(HTML+CSS+JavaScript) JavaApplication
web层 Servlet JSP
业务层 EJB(体积庞大使用复杂中小型软件不使用,只是使用JavaBean代替但是在大型软件还是需要使用的)
持久层(数据访问层) JDBC接口规范

服务器端层因为被分为三部分也被称为经典三层架构,三层模式,每一层都有着严格的分工,web层接收请求生成响应,业务层编写程序业务处理流程,持久层数据库的增删改查。
为了简化开发流程相对于每个层次在企业开发中都封装了对应的各层框架,SSH(Struts+Spring+Hibernate)

DAO模式 Data Acess Object
是数据持久层的设计模式,不同于23种设计模式,JavaEE设计模式是围绕着服务器三层结构设计的。
MVC设计模式与JavaEE经典三层架构并没有直接关系,是两套不同的划分体系。
web层的Servlet对应着MVC中的Controller,web层的JSP对应着View,业务层与持久层对应着Model
DAO模式封装了对于数据源的操作,数据源可能是文件,数据库等任意存储方式,负责管理与数据源的连接,负责数据的存取(CRUD)
通过DAO模式对底层数据源封装的实现,业务层操作数据层时不需要知道数据层底层的具体存储实现,直接通过对DAO封装对象进行操作来实现对数据层底层数据源的操作。
DAO模式的好处,业务层的开发不需要关注数据底层实现,简化了业务层的开发,对过对象操作完成数据层数据增删改查。
DAO常用对象
BussinessObject 代表数据的使用者(业务层程序)
DataAcessObject;抽象封装了对底层数据源的操作(数据层程序)
DataSource 数据源(数据库或文件)
TransferObject 表示数据的JavaBean
业务层对象BussinessObject通过将数据对象transferObject传递给数据层对象DataAcessObject完成对数据源对象DataSource的增删改查

DAO模式实例,用户user表的增删改查。
设计分析
DAO模式去设计程序时,就是对程序进行分层,对象封装。
这里分为两层,一是业务层,一是数据层
1,首先新建user类,封装数据的Javabean,即TransferObject对象。

public class User {
 // 类的属性 应该与数据库字段 一一对应
 private int id;
 private String name;
 private String pwd;
 private String email;

 public int getId() {
 return id;
 }

 public void setId(int id) {
 this.id = id;
 }

 public String getName() {
 return name;
 }

 public void setName(String name) {
 this.name = name;
 }

 public String getPwd() {
 return pwd;
 }

 public void setPwd(String pwd) {
 this.pwd = pwd;
 }

 public String getEmail() {
 return email;
 }

 public void setEmail(String email) {
 this.email = email;
 }

}

 


2,数据层,UserDAO类的建立,封装数据库的增删改查方法,方法参数为user对象,为了简化开发需要JDBCUtils类

public class UserDAO {
 public User login(User user) {
 // JDBC查询
 User existUser = null;
 Connection conn = null;
 PreparedStatement stmt = null;
 ResultSet rs = null;
 try {
  conn = JDBCUtils.getConnection();
  String sql = "select * from users where name = ? and pwd = ?"; // 数据库编译时
  stmt = conn.prepareStatement(sql); // 将sql 发送给数据库进行编译
  // 设置参数
  stmt.setString(1, user.getName()); // or -- 传入数据值,不会作为关键字 --防止注入
  stmt.setString(2, user.getPwd());

  // 因为之前 将sql 传递数据库
  rs = stmt.executeQuery();
  // 如果登陆成功 只有一条记录
  if (rs.next()) {
  existUser = new User();
  existUser.setId(rs.getInt("id"));
  existUser.setName(rs.getString("name"));
  existUser.setPwd(rs.getString("pwd"));
  existUser.setEmail(rs.getString("email"));
  }
 } catch (Exception e) {
  e.printStackTrace();
 }

 return existUser;
 }

 public User findById(int id) {
 User user = null;
 // 查询数据
 Connection conn = null;
 Statement stmt = null;
 ResultSet rs = null;

 try {
  conn = JDBCUtils.getConnection();
  stmt = conn.createStatement();
  String sql = "select * from users where id = " + id;
  rs = stmt.executeQuery(sql);
  // 结果集只有一条
  if (rs.next()) {
  // 结果集每行 一条记录 ----- User对象
  user = new User();
  user.setId(rs.getInt("id"));
  user.setName(rs.getString("name"));
  user.setPwd(rs.getString("pwd"));
  user.setEmail(rs.getString("email"));

  }
 } catch (Exception e) {
  e.printStackTrace();
 } finally {
  JDBCUtils.release(rs, stmt, conn);
 }

 return user;
 }

 public List<User> findAll() {
 List<User> users = new ArrayList<User>();
 // 查询数据
 Connection conn = null;
 Statement stmt = null;
 ResultSet rs = null;

 try {
  conn = JDBCUtils.getConnection();
  stmt = conn.createStatement();
  String sql = "select * from users";
  rs = stmt.executeQuery(sql);
  while (rs.next()) {
  // 结果集每行 一条记录 ----- User对象
  User user = new User();
  user.setId(rs.getInt("id"));
  user.setName(rs.getString("name"));
  user.setPwd(rs.getString("pwd"));
  user.setEmail(rs.getString("email"));

  users.add(user);
  }
 } catch (Exception e) {
  e.printStackTrace();
 } finally {
  JDBCUtils.release(rs, stmt, conn);
 }

 return users;
 }

 // 全字段修改
 public void update(User user) {
 Connection conn = null;
 Statement stmt = null;

 try {
  conn = JDBCUtils.getConnection();
  stmt = conn.createStatement();
  // 参数在传入user对象中
  // 在修改时,通过id修改该条记录所有字段
  String sql = "update users set name=‘" + user.getName()
   + "‘ ,pwd=‘" + user.getPwd() + "‘,email=‘"
   + user.getEmail() + "‘ where id = " + user.getId();
  stmt.executeUpdate(sql);
 } catch (Exception e) {
  e.printStackTrace();
 } finally {
  JDBCUtils.release(stmt, conn);
 }
 }

 public void delete(User user) {
 Connection conn = null;
 Statement stmt = null;

 try {
  conn = JDBCUtils.getConnection();
  stmt = conn.createStatement();
  // 参数在传入user对象中
  String sql = "delete from users where id = " + user.getId();
  stmt.executeUpdate(sql);
 } catch (Exception e) {
  e.printStackTrace();
 } finally {
  JDBCUtils.release(stmt, conn);
 }
 }

 // 封装了数据源 增删改查底层实现
 public void insert(User user) {
 // 将 user中数据 保存到数据库
 Connection conn = null;
 Statement stmt = null;

 try {
  conn = JDBCUtils.getConnection();
  stmt = conn.createStatement();
  // 参数在传入user对象中
  String sql = "insert into users values(" + user.getId() + ",‘"
   + user.getName() + "‘,‘" + user.getPwd() + "‘,‘"
   + user.getEmail() + "‘)";
  stmt.executeUpdate(sql);
 } catch (Exception e) {
  e.printStackTrace();
 } finally {
  JDBCUtils.release(stmt, conn);
 }
 }
}

 


3,业务层,封装对数据对象的操作,将数据对象传递给数据层响应方法。

 

public class UserService {
 /**
 * 根据用户名 和 密码查询其它信息
 * 
 * @param user
 * @return 如果返回null证明 用户名或者密码错误
 */
 public User login(User user) {
 // 查询 将 user对象传递 DAO
 UserDAO userDAO = new UserDAO();
 return userDAO.login(user);
 }

 @Test
 public void testFindById() {
 int id = 3;
 UserDAO userDAO = new UserDAO();
 User user = userDAO.findById(id);
 System.out.println(user.getName());
 }

 @Test
 public void testFindAll() {
 UserDAO userDAO = new UserDAO();
 List<User> users = userDAO.findAll();
 for (User user : users) {
  System.out.println(user.getName());
 }
 }

 @Test
 public void testUpdate() {
 User user = new User();
 user.setId(3);
 user.setName("大国");
 user.setPwd("123456");
 user.setEmail("daguo@itcast.cn");

 UserDAO userDAO = new UserDAO();
 userDAO.update(user);
 }

 @Test
 public void testDelete() {
 User user = new User();
 user.setId(10);

 UserDAO userDAO = new UserDAO();
 userDAO.delete(user);
 }

 @Test
 public void testInsert() {
 User user = new User();
 user.setId(10);
 user.setName("小王");
 user.setPwd("123");
 user.setEmail("xiaowang@itcast.cn");
 // 业务层将 对象 传递 数据层DAO 完成对数据表增删改查
 UserDAO userDAO = new UserDAO();
 userDAO.insert(user);
 }
}
/**
 * web层登陆
 * 
 * @author seawind
 * 
 */
public class LoginServlet extends HttpServlet {

 public void doGet(HttpServletRequest request, HttpServletResponse response)
  throws ServletException, IOException {
 // 获得form表单对象 封装JavaBean
 request.setCharacterEncoding("utf-8");
 String name = request.getParameter("name");
 String pwd = request.getParameter("pwd");

 User user = new User();
 user.setName(name);
 user.setPwd(pwd);

 // 传递 JavaBean 给 业务层
 UserService userService = new UserService();
 User existUser = userService.login(user);

 // 根据结果决定跳转页面
 if (existUser == null) {
  // 登陆失败
  request.setAttribute("msg", "用户名或者密码错误");
  request.getRequestDispatcher("/login.jsp").forward(request,
   response);
  return;
 } else {
  // 登陆成功
  request.getSession().setAttribute("existUser", existUser);
  request.getRequestDispatcher("/welcome.jsp").forward(request,
   response);
 }
 }

 public void doPost(HttpServletRequest request, HttpServletResponse response)
  throws ServletException, IOException {
 doGet(request, response);
 }

}

 

JDBC深入

标签:

热心网友 时间:2022-04-08 03:38

java分成J2ME(移动应用开发),J2SE(桌面应用开发),J2EE(Web企业级应用),所以java并不是单机版的,只是面向对象语言。建议如果学习java体系的话可以这样去学习:
*第一阶段:Java基础,包括java语法,面向对象特征,常见API,集合框架;
*第二阶段:java界面编程,包括AWT,事件机制,SWING,这个部分也可以跳过,用的时候再看都能来及;
*第三阶段:java API:输入输出,多线程,网络编程,反射注解等,java的精华部分;
*第四阶段:数据库SQL基础,包括增删改查操作以及多表查询;
*第五阶段:JDBC编程:包括JDBC原理,JDBC连接库,JDBC API,虽然现在Hibernate比JDBC要方便许多,但是JDBC技术仍然在使用,JDBC思想尤为重要;
*第六阶段:JDBC深入理解高级特性:包括数据库连接池,存储过程,触发器,CRM思想;
*第七阶段:HTML语言学习,包括HTML标签,表单标签以及CSS,这是Web应用开发的基础;
*第八阶段:JavaScript脚本语言,包括javaScript语法和对象,就这两个方面的内容;
*第九阶段:DOM编程,包括DOM原理,常用的DOM元素以及比较重要的DOM编程思想;
*第十阶段:Servlet开发,从此开始踏入java开发的重要一步,包括XML,Tomcat服务器的安装使用操作,HTTP协议简单理解,Servlet API等,这个是java web开发的基础。
*第十一阶段:JSP开发:JSP语法和标签,自定义标签,EL,JSTL库了解以及MVC三层架构的设计模式理念;
*第十二阶段:AJAX开发:AJAX原理,请求响应处理,AJAX开发库;
*第十三阶段:轻量级框架,三大框架之一Struts框架的学习,自此踏入java web开发的精华部分,包括Struts体系架构,各种组件,标签库和扩展性的学习;
*第十四阶段:Hibernate框架学习,三大框架之一,包括检索映射技术,多表查询技术,缓存技术以及性能方面的优化;
*第十五阶段:Spring框架的学习,三大框架之一,包括了IOC,AOP,DataSource,事务,SSH集成以及JPA集成;
*最后呢,还有些java的技术,包括EJB3.0等,可以选择学习,与三大轻量级框架相比,EJB就是当之无愧的重量级了。
但愿你java旅途愉快!

网上看视频其实是学习的最好的途径...

热心网友 时间:2022-04-08 05:13

Core Java2 AND Think in Java

热心网友 时间:2022-04-08 07:04

这么牛,你能把c语言和数据结构搞这么好,那学习Java不是小菜的吗,现在Java买的最火的Java编程思想第四版,我学习Java基础到j2ee搞通只用的半年时间,我没有规定每天学习多少时间,我是每天规定理解多少东西和应用多少东西,最主要的基础功非常的重要,基础打好的,做项目非常的容易了

热心网友 时间:2022-04-08 09:12

不知道你现在是在读书还是毕业了,
if 读书
时间比较多,你可以看一些入门的视频,从配置环境开始一直到到java高级使用,你可以学到基本的语法,oop的思想一点点,swing、awt就不要学了,毕业了没有太大用途,不过你可以通过这个学习点怎么使用java的api

书籍,推荐:core java吧, 入门还挺不错了, thingking in java 是经典,现在是4th,等你了解了点java再看吧

看你的时间安排知道你还是比较有毅力的,希望你能够坚持,学习编程最重要是敲代码,你多写,就有感觉了,也就有成就感,这是你继续坚持写代码的动力,
不要去想那么多,我该看什么书,怎么学,给你自己找借口,时间都浪费了,还不如写几个helloWorld, 多敲代码,心动不如行动。

希望你能尽快的找到你的学习方法,over。

热心网友 时间:2022-04-08 11:37

Java编程思想第2版

热心网友 时间:2022-04-08 14:18

Thinking in java

C语言是面向过程的

java是面向对象

你如果转变不了这种思想 以后会很麻烦的

最强大的2个分支一个JavaEE一个J2Me
一个是Web分布式系统一个是嵌入式开发

能多少时间学完 正的很难说
毕竟人都不一样的 不能一概而论

仔细学 20多天能搞懂(J2Se)

热心网友 时间:2022-04-08 17:16

初学java的推荐书籍
1、Head First Java
《Head First Java》这本书非常适合没有接触过编程的初学者,它将Java的编程知识和现实生活联系起来此书是根据学习理论所设计的,让你可以从学习程序语言的基础开始一直到包括线程、网络与分布式程序等项目。最重要的,你会学会如何像个面向对象开发者一样去思考。
2、《Java从入门到精通》(第3版)
本书从初学者角度出发,通过通俗易懂的语言、丰富多彩的实例,详细介绍了使用Java语言进行程序开发应该掌握的各方面技术。
3、 Java核心技术卷一
这本《Java核心技术》是程序员的优选指南。看这本书去学习知识,就需要你具备一定的基础知识。比如,对于Java的认识已经不局限于浅薄的概念。本书出版以来,深受广大读者的喜爱,它全面介绍了Java SE的基础知识,不但具有使用价值,而且易于阅读,易理解,它必成为想进军Java和基础薄弱同学的不二之选。
java入门较为简单,但学到深入的部分就会有一定的困难,以下是java学习过程中注意的地方。
1、需要循序渐进的学习,只有基础打得牢固,在后面进阶学习内容中才能理解其思想。
2、需要多练习,任何一个大牛都是敲出来的,看几遍不如多敲几遍,这样才会真正地发现问题。没有实践的理论知识只是空中楼阁。
3、java技术每年都有一定的更新,对应的就业要求也有一定地改变,所以在学习的过程中,一定要注意自己学习的内容符不符合行业现状。
4、有一条正确的学习路线,只有方向对了,才能够快速地进步。
希望能够帮到你!!!
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
桥本氏甲亢化验单说明什么 桥本氏甲亢??检验报告严重么 华为Y325-T00手机不小心设置英文版怎么办? 腾讯手游助手怎么双开 腾讯手游助手能双开吗 腾讯手游助手怎么双开-腾讯手游助手双开教程 审计定义的理解是什么 全国各地还有谁叫刘超啊 ? 滑冰滑冰场 彭水火车站到重庆北火车站有的少公里一 彭水到重庆坐火车要几个小时 355分可以上广西哪个大专? 2009年江苏高考355分能上什么学校? 打卡day1是什么意思 我是理科生,今年考了355,能上啥专业 利君的355复合益生菌在哪买啊 ? 它是不是骗人的?有没有效果啊???? 实习第一天打卡怎么发朋友圈? 车牌号码G355S怎么样? 梦见大海汹涌澎湃,海浪很高,汹涌的海浪带着大鱼撞击我的窗户。声音 多次梦到在海边海浪很大,如同海啸,也死了很多人, 奥克斯空调kpr35gwbpvk2,请问是几匹 (0311) 8316 2499是哪里电话? 奥克斯空调KF-26GW/VF+3a怎么样 电信交宽带费2499送手机,空调合适吗?每月资费是129,每月返五十多,交七十七,包括500分钟 奥克斯kf_70w是几匹? 奥克斯KF 聚乙烯醇2499和2488能在一起用吗 奥克斯空调kfr-32gw/bpsv-3是几匹的,我要的是1.5匹 爱玛电动车依旧换新2499购买Q312贵了吗 奥克斯(AUX)KF-26GW/SF-1空调 奥克斯 KF-26GW/FK01+3空调怎么样 北京理工的通信考研这么困难吗??求指导啊!!! 多说无益是什么意思 话多说无益 人不负足以人不负足以是什么意思 青岛理工大学355公共建筑设计原理是哪一本书 什么是多说无意 你对范冰冰的新片有何期待? 老公说多说无益,哎~~~是什么意思? #PS小白学习成长记#第一天打卡 郑州大学西亚斯国际学院文科355分能上高职高专不 多说无益下一句是什么? 上班第一天,如何快速恢复工作状态? 一家子虚伪,若要人不知除非己莫为,多说无益表达什么意思 多说无益的成语 金河田电源ATX-355WB对比技展300PA哪个好一些 考研:东南和浙大的土木哪个好?哪个更难考?请给出理由,二者考研分数线一般是多少 公道自在人心,多说无益。总会不攻自破的。 什么意思? 诺贝尔留下多少奖金至今仍在颁发诺贝尔奖? 一个陌生女人说多说无益是什么意思 那我要怎么回答她? 北京工业大学2010年美术成绩。。。。我是山东的考了355分但是山东42名...我报的动画。。我有希望吗? 爱莫大于心死多说无益是什么意思