drp的笔记1
来源:互联网 发布:淘宝代销怎么上传宝贝 编辑:程序博客网 时间:2024/06/07 02:11
想应用,想重点,想细节,想易错点,想原理
第十五天
1. 文件的上传:
文件的上传一定要传到真实的路径之中(比如说硬盘)。但是可以用request.getsession.getServletContext().getRealPath("upload");
目标导向:
1.完成基本的上传的功能。
2.使用相对的路径完成上传的功能。
3.自动创建一个目录。
4.将文件的名称放到数据库里面。如果放文件读取不方便。
作业:1.用javascript限制图像的后缀名为jpg和gif。
2.上传的时候,有图片的预览的功能。
3.删除物料的时候将对应的图片也删除。
第十七天
1. 实现的功能:1.如何定义一个Dao的接口,如何写一个Dao接口的实现?如何抛出异常?
2.如何保证在同一个线程中,共用相同的connection?使用ThreadLocal的类。
3.使用青蛙编写简单的sql的语句。
4.如何向oracle添加时间数据:psts.setTimestamp(6,new Timestamp(flowCard.getRecorderDate().getTime()));
5.如何将时间格式转化为String的格式。String currentDate = new SimpleDateFormat("yyyyMMdd").format(new Date());
易错点:1.层与层之间应该互相不可以看见。
2.各自抛各自的异常。
3.取出来的是String可以转化为int类型。
知识点:1.事务的边界应该设置到业务逻辑层。
2.了解主从表的结构或者原理。(实际上就是一对多)
3.如果在一些金融的行业中,需要使用java.math 类 BigDecimal来处理,但是比较麻烦。
4.dao应该封装持久层的东西,并且是细粒度的,而service是业务逻辑层的东西,并且是封装粗粒度的,
5.ThreadLocal类的作用是在同一个线程中共享一个变量。还可以防止线程的安全问题。
开学第一天: 表的创建和导入
1. 知识点:1.关于树形结构如何抽取一张表出来? 使用id和pid和leaf的方法,pid是外键参照主键id。
2.两张表在什么情况下可以作为一张表去设计? 当一张表是另一张表的子集时。但要注意设一个字段来区分这两张表。
3.有下拉类表的时候,如何处理? 可以建一个数据字典。并且加一个字段来区分不同的下拉列表。
4.主键维护表的设计。表名称和值。这样的移植性更好。
5.一个班级对应多个学生是主从表的关系。
6.tools-check model通过此种方式可以检查错误的信息,然后database-generate database导出脚本。
易错点:1.生成的脚本如何去掉双引号? tools-model option - other object -code 变为大写就可以解决问题。
2.在生成的时候如何去掉约束? 在生成的时候去掉。
实际应用:1.如何为树形结构的表建立数据?使用id和pid和leaf的方法
2.有下拉类表的时候,如何处理?
3.插入的时候,如何让主键自增。
4.如何创建一个用户?
create user drp identified by drp; ---- 创建用户
create tablespace ts_drp datafile 'd:\drp\drp_data.dbf' size 100m;; ---创建一个表空间
alter user drp default tablespace ts_drp; -----将表空间分配给用户
grant create session , create table ,unlimited tablespace to drp;
conn drp/drp;
@d:\drp\create_drp.sql;
总结:要学会如何创建多张表,并且导入数据库中。
servlet和jsp
1. 知识点:1.servlet是单实例,多线程。
2.servlet的原理:
客户端通过http的请求将url发给tomcat,这时,tomcat先创建两个对象,然后通过配置文件找到那个servlet
new 一个单例出来,后来调用doPost和doGet的方法。最后通过response返回给客户端。
3. *******************一个完整的项目包含哪些东西? ***********************
(这是sun定义的)
项目名称/WEB-INF / lib
classes
web.xml
4. servlet只实例化一次,它是单例的,这样可以引发线程的安全问题。
5. 关于cookie不重要,但是它的概念非常重要。
添加一个cookie和在服务器端读取一个cookie
6. session是一个人一个session。浏览器关闭了就断了,但是对象还在内存里面。还有一个超时的问题。
易错点:1. 项目名称区分大小写。
2. tomcat不能正常启动,可能是因为没有配置JAVA_HOME。在系统变量中配置,如果想JAVA_HOME只在tomcat中使用,则可以
编辑启动文件,在第一行加入 : set JAVA_HOME = C:\JDK;
3. 如果要编译成class文件,需要将servlet-api.jar引入到系统变量中。
开学第三天
1. 开发一个项目常见的一些步骤:
1. 使用powerDesigner创建一些表,并且使用命令创建一个用户,分配表空间。最后导入到数据库中。
2. 建一个项目
3. 创建数据库的连接,同时注意要引入驱动包。
4. 创建tomcat的连接,并且发布。
5. 引入工具类。
2. myeclipse常用的快捷键:
Ctrl+1 快速修复(最经典的快捷键,就不用多说了)
Ctrl+D: 删除当前行
Ctrl+Alt+↓ 复制当前行到下一行(复制增加)
Ctrl+Alt+↑ 复制当前行到上一行(复制增加)
Alt+Shift+R 重命名
Alt+Shift+M 抽取方法
Alt+Shift+C 修改函数结构(比较实用,有N个函数调用了这个方法,修改一次搞定)
Ctrl+/ 注释,或者取消注释。
Alt+↓ 当前行和下面一行交互位置(特别实用,可以省去先剪切,再粘贴了)
tab 整体右移动
tab+shift 整体左移动
3. xml知识点(主要的作用是用于数据的交换):
1.它是可以扩展的标记语言。
2.dtd是规范标签的名字。
3.schema规定类型,标签的名称。
4.xsl主要是对xml进行装饰,让xml不同的风格显示!
实际应用:通过java程序来读取xml的配置文件 (注意:配置文件应该放在类加载器中)
1. xml:
<?xml version="1.0" encoding="UTF-8"?>
<config>
<db_info>
<driver_name>oracle.jdbc.driver.OracleDriver</driver_name>
<url>jdbc:oracle:thin:@127.0.0.1:1521:orcl</url>
<username>drp</username>
<password>drp</password>
</db_info>
</config>
读取的关键代码:
// 通过类加载器来加载这个xml文件,返回一个document的对象
document = new SAXReader().read(Thread.currentThread().getContextClassLoader().getResourceAsStream("db_info.xml"));
//获得这个对象中的元素
Element element1 = (Element) document.selectObject("/config/db_info/driver_name");
//通过元素的方法获得它的值
System.out.println(element1.getStringValue());
注意:要引入两个包,一个是DOM4J这个包,还有第三方的开发包。
4. 注意:1.向oracle数据库中插入时间的时候,应该使用Timestamp!!!!!!
2.静态页面改为动态页面注意要先加jsp的开头。
3.tomcat的端口被占用的问题:在进程中杀掉java的小的一个。
4.javascript验证的时候需要去掉两端的空格!!!!!!!!!!
5.onkeydown和onkeypress的区别:
onkeypress 这个事件在用户按下并放开任何字母数字键时发生。系统按钮(例如,箭头键和功能键)无法得到识别。
onkeydown 这个事件在用户按下任何键盘键(包括系统按钮,如箭头键和功能键)时发生。
区别:一个放开一个没有放开
还有一个区别:onkeydown 对于字母大小写不区分keyCode 而 onkeypress 区分
6.关于编码问题可以使用uedit
7.添加的时候乱码是request的时候,过来的问题。回去没有乱码,是response的问题。(根本是http请求)
实际应用: 使用javascript完成基本的验证,并且会使用正则表达式!!!!!
1.只能输入数字(但是与系统键无关)
function noNumbers(){
var keynum;
var keychar;
var re = /\d/;
if(window.event){
keynum = event.keyCode;
}else if(event.which){
keynum = event.which;
}
keychar = String.fromCharCode(keynum);
return re.test(keychar);
}
<input name="fiscalYear" type="text" class="text1" id="fiscalYear" size="10" maxlength="10" onkeypress="return noNumbers()">
开学第四天 ajax
1.ajax的介绍: ajax与java没有关系,可以在很多语言中使用。A指的是异步 jax 指的是 javascript和xml(哥笑了,其实与xml没有关系,只是当时xml流行而已)
2.
*************************************************** ajax的原理 ***********************************************************
ajax相当于浏览器的一个插件,浏览器只需要告诉ajax引擎用什么方式提交,去找谁,是同步还是异步。然后自己做自己的事情,不需要等待。ajax引擎send之后
去做事情了,而浏览器可以通过xmlHttp.responseText回调它的数据。
3.同步和异步的关系?
同步是需要等待它做完之后才能做别的事情,而异步无须等待。
4.一个重要的对象XMLHttpRequest
5.
实际应用: 使用ajax进行无刷新验证
var xmlHttp;
function createXMLHttpRequest(){
if(window.XMLHttpRequest){
xmlHttp = new XMLHttpRequest();
}else if(window.ActiveXObject){
xmlHttp = new ActionXObject("Microsoft.XMLHTTP");
}
}
function firstAjax(field){
if(trim(field.value).length!=0){
createXMLHttpRequest();
var url = "test3.jsp?userId=" + field.value+"×tamp="+new Date().getTime(); (使用get的方式提交)
xmlHttp.open("GET", url,true);
xmlHttp.onreadystatechange = function(){
if(xmlHttp.readyState == 4){
if(xmlHttp.status == 200){
document.getElementById("spanUserId").innerHTML = "<font color= 'red' size='+0'>"+xmlHttp.responseText+"</font>";
}else{
alert("请求错误!"+xmlHttp.status);
}
}
};
xmlHttp.send(null);
}else{
document.getElementById("spanUserId").innerHTML ="";
}
}
注意: 1. 当为空字符的时候,应该将对象的html设为没有。
2. 署名函数的使用
3. ***为了防止缓存捣乱的问题: 在url地址的后面加一个时间圈。
4. 线程不安全,所以应该一个请求,一个xmlHttpRequest。
6.推荐一本电子书: ajax.pdf
1.实际应用:
1.oracle分页查询的实现。
2.使用pageModel对查询的数据进行二次的封装。
3.关于显示的时候,有可能为空的问题。
作业遇到的问题:
1. 日期是字符串,一个字符串如何装化成日期存到一个对象中?
2. 两个字符串如何比较日期的大小?
用户的增删改查和分页pagemodel的封装
1. 彻底理解: window.self.location = "useradd.jsp"; (Location 对象是由 JavaScript runtime engine 自动创建的,包含有关当前 URL 的信息)
这里的location已经包含了当前的url,所以从同一级进行跳转。
2. 实际应用:
1. 使用pagemodel彻底的封装。
2. 完成分页的功能。
3. 使用三目运算符解决在页面上展示为空的问题。就是将null转化成""
4. 关于泛型的封装: 是为了提前发现错误,可以用T这个标识来代替。
作业:将查询的按钮变灰。
5. 完成checkbox的全部选中的功能。
6. 删除时步骤:
判断是否有选中的checkbox?给出是否真正删的提示?真的删除。
7. js中如何跳转?
window.self.location = "user_modify.html?userId="+selectFlag[index].value;
开学第五天
1. 知识点:
1.readonly和disabled的区别
<input name="userId" type="text" class="text1" id="userId" size="10" maxlength="10" disabled="disabled">
readonly表示只读,不能修改
<input name="userId" type="text" class="text1" id="userId" size="10" maxlength="10" readonly="true">
2. 一进来,它会自动加载这个函数。
<body class="body1" onload="init()"></body>
function init(){
document.getElementById("userName").focus();
}
3. filter的原理: 实际上就是拦截request和response的一个servlet、
实际应用:使用filter来设置字符集。******************************************************************************
import java.io.IOException;
import javax.servlet.*;
public class SetCharacterEncodingFilter implements Filter {
private String encoding ="";
public void destroy() {}
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse,
FilterChain filterChain) throws IOException, ServletException {
servletRequest.setCharacterEncoding(encoding);
filterChain.doFilter(servletRequest, servletResponse);
}
public void init(FilterConfig filterConfig) throws ServletException {
this.encoding = filterConfig.getInitParameter("encoding");
}
}
web.xml的配置:
<filter>
<filter-name>SetCharacterEncodingFilter</filter-name>
<filter-class>com.huxin.drp.util.SetCharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>utf-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>SetCharacterEncodingFilter </filter-name>
<url-pattern>*.jsp</url-pattern>
</filter-mapping>
常见三种的匹配 :
eg。*.jsp ,/sysmgr/* , /*
注意:filter只对post的请求起作用!!!!!!!!!!!!!!!!!!!!!!!!!!!!
用户登录和sql的注入问题。
password: ' or '1' = '1
- drp的笔记1
- 【DRP】笔记之CSS
- DRP的由来
- DRP
- drp
- DRP
- DRP
- DRP
- DRP之PowerDesigner的使用
- 【DRP】EL表达式的应用
- 【DRP】笔记之JavaScript内置对象
- DRP:分销链上的精灵
- DRP项目(一)----需求的重要性
- DRP项目:知识,我们的成长记录
- DRP总结之数据库的悲观锁
- DRP中用到的几个filter
- DRP中用到的JavaScript验证
- DRP过后,感受知识间的通性
- 1002
- 数据结构 学习笔记之:关于顺序栈中给结构体类型指针分配内存时,使用malloc和不使用malloc的疑惑之解惑!
- 1005
- 飞凌OK6410之触摸屏的学习
- 多寄存器寻址指令ldmia/ldmib和ARM存储器访问指令——多寄存器存取
- drp的笔记1
- 1006
- myeclipse 配置svn插件
- Codeforces Round #168 (Div. 1) 完全
- c#总结
- 1007(最大子串和)
- 通过遍历所有的窗口来获取访问记录(实现网页监控)
- 1008
- 1009