今天只上半天课,原因嘛,也简单,田老师经常的一周6天的上课,觉得累了,所以这周的第六天
他也就给自己放了半天假……

----------------------------------------------
上午课程开始:
Hibernate的类的代理机制是如何实现的?这是一个值得考虑的问题,通过类的代理机制(具体怎么回事
还真是不清楚)

如果Servlet中要集成Hibernate,那么Hibernate的那些jar文件要放到lib里面后再去部署,然后刷新
,就可以在工程中看到了
配置文件放到什么位置呢?应该是类路径的根路径下面,也就是应该放到src下面,因为src在编译后
所有东西都会放到classes目录下面

<hibrenate-configuration>
 <session-factory>
  <property name="dialect">org.hibernate.dialect.MySQLDialect</property>
  <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
  <property name="connection.username">root</property>
  <property name="connection.password">root</property>
  <property name="connection.url">jdbc:mysql:///j2ee</property>
 </session-factory>
</hibernate-configuration>

建立实体类
package cn.itcast.vo;
public class User
{
 private int id ;
 private String username;
 private String password ;
 private int loginTimes ;
};
再将User.hbm.xml和User实体类放在一起。

<hibernate-mapping package="cn.itcast.vo" auto-import="true">
 <class name="User" table="users">
  <id name="id">
   <generator class="native"/>
  </id>
  <property name="username"/>
  <property name="password"/>
  <property name="loginTimes">
 </class>
</hibernate-mapping>

public void service(ServletRequest request,ServletResponse response) throws ServletException
{
 SessionFactory factory = new Configuration().addClass(User.class).configure().
        buildSessionFactory();
 Session session = factory.getCurrentSession();
 session.beginTransaction() ;
 Query q = session.createQuery("from User where username=:name and password=:pw");
 q.setString("name",username);
 q.setString("pw",password);
 User user = (User)q.uniqueResult();
 if(user!=null)
 {
  out.println("welcome");
  user.setLoginTimes(user.getLoginTimes()+1);
 }
 else
 {
  out.println("failure");
 }
 session.getTransaction().commit();
 out.close();
}
---------------------------------------------------------------------

关于ServletConfig:
//在Servlet类中的一开始定义私有成员ServletConfigure,名为config
System.out.println(config.getServletName());
//上面的语句和web.xml中的servlet元素中的servlet-name属性值是对应的!

web.xml中可以有多个Servlet标签注册,也有多个对应的servlet映射,每个servlet
只有一个servletConfigure
<servlet>
 <servlet-name>loginServlet</servlet-name>
 <servlet-class>cn.itcast.loginServlet</servlet-class>
 <init-param>
  <param-name>dreiver_class</param-name>
  <param-value>com.mysql.jdbc.Driver</param-value>
 </init-param>
 <init-param>
  <param-name>url</param-name>
  <param-value>jdbc:mysql:///j2ee?user=root&password=root</param-value></param-value>
 </init-param>
 <init-param>
  <param-name>username</param-name>
  <param-value>root</param-value>
 </init-param>
 <init-param>
  <param-name>password</param-name>
  <param-value>root</param-value>
 </init-param>
</servlet>
//Tomcat启动时会去读取web.xml,并实现ServletConfig这个接口,弄出一个实现类的实例config
//其实web.xml中的servlet元素中的所有属性内容都会在Servlet加载之前封装到ServletConfig对象
//中,然后在Servlet加载后再将config传入Servlet

在实际操作中下面的这些语句应该写在init方法中,如果写在service方法中的话,那么每一个线程来访问的时候
都要执行下面两句话,有点浪费了。
String driverClass = config.getInitParameter("driver_class");
String url = config.getInitParameter("url"); //这两句话取出web.xml中已经配置好的servlet元素中的对应信息
String dbname = config.getInitParameter("username");
String dbpassword = config.getInitParameter("password");

这样以后只要修改配置文件就可以了,不用修改类了!

ServletConfigure还有一个方法名叫getInitParameterNames,可以得到所有init-param标签中的param-name的
枚举集合Enumeration
Enumeration是一个很古老的接口,在JDK1.0里面就有了

Enumeration e = config.getinitParameterNames() ;
while(e.hasMoreElements())
{
 e.nextElement();
 String name = (String)e.nextElement();
 System.out.println(name);
}
-----------------------------------------
如果要做成泛型:
//强制让Enumeration中只能存放String类型!!
Enumeration<String> e = config.getinitParameterNames() ;
while(e.hasMoreElements())
{
 e.nextElement();
 String name = e.nextElement();//不再需要强制类型转换了!这里如果强制转换为其他类型的话会抛异常!
 System.out.println(name);
}

ServletConfigure中还有一个getServletContext方法,这在后面说。
--------------------------------------------------
public abstract class GenericServlet implements Servlet
{
 private Servletconfig config ;

public void init(ServletConfig arg0) throws ServletException
 {
  config = arg0 ;
  init();
 }
 
 //实际继承的时候只要覆盖这个类就可以了!
 public void init()
 {
  
 }

public abstract void service(ServletRequest request,ServletResponse response) throws
    ServletException,IOException ;
 //其他的该实现的方法略!
}

--------------------------------
现在课程被打断了,张老师先来说一下一期班工作的事情,
一期班里面有一个家伙方正那里干了几天辞职了,后来又去了一个税后6500的工作
,干了一段时间又不去了……老是认为那里不重视什么技术,没有足够的编码工作来
给自己作,真是个不知足的家伙。

公司要的是兢兢业业的做事情的人,大公司的高层已经把产品作的十分成熟了,不要指望
进入公司去玩技术,而是拿人钱财,与人消灾,是具体的作好事情,和技术的关系不是太大。

真正玩技术的是那些清华、北大的顶级研发人员,和我们是没什么关系的。
---------------------------------------------
写一个java类,类型是native,然后编译成为class,然后命令行中用javah 名字
就可以得到.h的C++头文件了。

package org.itcast ;
public class TestNative
{
 public native void sayHello();

public static void main(String[] args)
 {
  System.loadLibrary("nativeCode");
  TestNative ts = new TestNative();
  ts.sayHello();
 }
}

现在打开Visual C++,添加一个新的cpp文件,这个cpp文件可以调用那个刚才java编译成的头文件。

将刚才运行后生成的.h头文件加入到这个C++工程的目录中来
这样就可以使用C++字符流在命令行中输出一段字符串了。

#inlcude <org_itcast_TestNative.h>

java可以通过动态链接库dll(dynamic linked library)来调用C++或是C的代码(注意
这些dll必须加入到系统的环境变量的path中)

刚才的那些东西是一期的一名台湾的学员用视频讲的。主要目的也很简单,就是某培训机构的理念
是要让自己的学员都能够尽量多的加入到视频录制的工作中,如果能有人帮忙整理书稿就更好,
张是希望……

我都有点语无伦次了,因为上午实在是太……混乱了,我一会儿会好好整理一下,今天上午感觉有点怪……
什么地方怪呢?……我也不是很清楚,就是觉得有点别扭,是不适应老张的这种方式,是自己有想法了?
是自己觉得现在的课程不够系统?是自己觉得现在的课程有时候太杂乱无章么?是现在自己太浮躁?
是现在好像有点不知道未来的路怎么走,这些东西怎么学了?

好像都有点,其实一直都有,不过是今天张老师带了一名一期学员莫名其妙的放了段那名学员录的教学视频
后,这些想法就全出来了,……自己都不知道是怎么回事,但是觉得不是什么好事,混乱总是不好的

---------------------------------------------

下午还是没有上课,但是我最近的情况实在是太混乱了,学习被动,好像是被牵着鼻子走。

得好好反省了……不想整理什么了,思绪太乱……

12月19日——培训第26天相关推荐

  1. 贪婪洞窟2服务器维护,12月19日贪婪洞窟2停服维护公告 贪婪洞窟2更新了什么

    原标题:12月19日贪婪洞窟2停服维护公告 贪婪洞窟2更新了什么 斗玩网(douwan.com)报道:12月19日贪婪洞窟2发布维护公告,此次停服维护主要针对游戏中出现的bug以及优化游戏,一起来看看 ...

  2. 12月19日绝地求生服务器维护公告,绝地求生12月19日更新到几点 绝地求生正式服更新维护公告...

    绝地求生 12 月 19 日周三正式服将会进行更新维护,那么绝地求生会更新到几点能进游戏呢,下面我们来看下吃鸡本周的更新维护公告. [正式服维护公告] 我们将在北京时间 12 月 19 日(星期三)0 ...

  3. 国服和平精英服务器维护,和平精英辅助免费使用绝地求生12月19日正式服维护公告 今天维护要多久...

    绝地求生今天早上将对正式服进行停机维护,主要是更新PC1.0版本第24轮的内容,大部分内容之前在测试服已经上过一段时间,本次更新会有追加内容,一起来了解一下吧. [绝地求生最新维护公告] 1.维护开始 ...

  4. 年轻人不讲武德?12月19日来3306π深圳站学点真本事

    转眼到了2020年的尾声,3306π也将移步深圳站,深圳站作为3306π的传统年会站,本次分享阵容依然强大,有MySQL官方.金融银行.一线互联网.一线云厂商等等.小编也给大家提取了本次大会的关键词: ...

  5. 革命将至,科技突围——2018爱分析·中国汽车科技高峰论坛将于12月19日举办

    导读 现场发布:中国汽车科技创新趋势报告.中国汽车科技领域创新企业50强榜单.中国汽车科技领域投资机构10强榜,并举行颁奖仪式. 来源丨爱分析 数据猿官网 | www.datayuan.cn 今日头条 ...

  6. 神武2手游服务器维护时间表,神武手游12月19日更新内容维护时间

    神武手游最新官方消息,游戏将在今日上午8点30分进行维护,那么游戏具体维护更新多长时间?更新了什么新内容呢?下面一起来看看官方资讯吧! 神武手游12月19日更新维护时间: 游戏将在8点30分进行维护更 ...

  7. 攻沙服务器维护,12月19日服务器合服公告

    尊敬的各位中州勇士: "传奇世界"首款官方正版3D手游大作<传奇世界3D>不删档测试火爆进行中!感谢大家一直以来对<传奇世界3D>的喜爱和支持! 为了活跃游 ...

  8. 12月19日 OpenCV 实战基础学习笔记——特征匹配

    文章目录 前言 一.特征匹配 1.Brute-force 蛮力匹配 2.1 对 1 匹配 3.k 对最佳匹配 二.答题卡识别 前言 本文为12月19日 OpenCV 实战基础学习笔记--特征匹配,分为 ...

  9. 12月19日绝地求生服务器维护公告,绝地求生12月19日更新到几点能玩 绝地求生正式服更新维护公告...

    绝地求生 12 月 19 日周三正式服将会进行更新维护,那么绝地求生会更新到几点能进游戏呢,下面我们来看下吃鸡本周的更新维护公告. [绝地求生官方维护公告] [正式服维护公告] 我们将在北京时间 12 ...

最新文章

  1. 【建站系列教程】2、数据源
  2. 转 AIX7.2+11.2.0.4RAC实施
  3. 即时通讯 TCP UDP
  4. 用STM32做个东京奥运奖牌榜
  5. python读取和存入json文件
  6. 电脑怎么结束进程_小协漫谈 | 聊聊电脑卡顿那些事
  7. MyBatis复习(三):MyBatis核心对象SqlSessionFactory和SqlSession
  8. weblogic服务器连接池配置细节
  9. Python将字符串转为字典最佳实践
  10. 镭神激光雷达对于Autoware的适配
  11. 激情转型 三大战役重塑AMD
  12. jpress连接不上mysql_win10+jdk+mysql+tomcat+jpress环境搭建与部署
  13. 利用 MATLAB 和 DCRAW 处理数码相机 RAW 文件的完整流程
  14. 网工常用网络命令合集✨(建议收藏)
  15. 真的!这么写参数校验 (Validator) 就不会被劝退了。。。
  16. [软考]项目管理之十二大项目管理输入输出、工具技术、作用及内容总结
  17. 抖音直播带货数据复盘怎么做?如何复盘提高直播间转化率?
  18. Jest 里配置 babelrc,支持import导入
  19. centos7 KVM网桥桥接、网卡绑定
  20. 【那些年,我们一起追的女孩】第六章

热门文章

  1. 华为oj-名字的漂亮度
  2. Mybatis-plus的主键策略
  3. rainbow彩虹色
  4. 01【微服务爱情故事之李雷和韩梅梅】SpringBoot基础
  5. grad can be implicitly created only for scalar outputs
  6. python 分割字串_在Python中分割,连结和连结字串
  7. 追求完美,《劲歌热舞》修正版发布!
  8. 20年前的切尔诺贝利
  9. 磁盘开篇:扒开机械硬盘坚硬的外衣
  10. 计算机图形常用数学之向量运算 向量的模 向量的点乘内积 向量的叉乘外积 向量的模向量的加减法 向量归一化