JAVA 笔记no.3

1.JDBC访问数据库的流程(写出过程)

(1)注册驱动

//JDBC连接串

private static final String CONN_URL = "jdbc:mysql://localhost:3306/testdb?useUnicode=true&characterEncoding=utf-8&useSSL=false";

private static final String USERNAME = "root";

    private static final String PWD = "13585589602qxh";

Connection conn = null;

Class.forName("com.mysql.jdbc.Driver");  //在类路径中查找驱动入口点类

(2)建立连接(Connection)

conn = DriverManager.getConnection(CONN_URL,USERNAME,PWD);

(3)创建数据库操作对象(PreparedStatement)用于执行SQL语句

(4)执行SQL语句

(5)处理执行结果(ResultSet)

(6)释放资源

public static void releaseRes(Connection conn,PreparedStatement pstmt,ResultSet rset){

try {

if(rset!=null) rset.close();

if(pstmt!=null) pstmt.close();

if(conn!=null) conn.close();

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

2.说明连接池是什么及其作用

3.编程题(30分):写一个完整的网页(web工程),如添加操作

(网页到servlet到service到Dao到mysql;需要用到sql语句;JDBC的存盘,即保存数据;JSP表单验证)

(1)表单验证

<script type="text/javascript">

    function checkFrm(){

var frm = document.forms[0];

var stuno = frm.stuno.value;

if(stuno.length!=4){

alert("学生学号长度必须是4位字符!");

frm.stuno.select();

return false;

}

var stumark = frm.stumark.value;

if(isNaN(stumark)){

alert("学生成绩不是一个有效成绩!");

frm.stumark.select();

return false;

}

var mark = parseFloat(stumark);

if(mark<0 || mark>100){

alert("学生成绩必须在0-100之间!");

frm.stumark.select();

return false;

}

}

</script>

(2)JDBC存盘

private static final String ADD_STU = "insert into student values(?,?,?,?,?)";

public void regStu(Student stu) {

Connection conn = DBUtils.getConn();

PreparedStatement pstmt = null;

try {

pstmt = conn.prepareStatement(ADD_STU);

pstmt.setString(1, stu.getStuNo());

pstmt.setString(2, stu.getStuName());

pstmt.setString(3, stu.getStuSex());

pstmt.setDouble(4, stu.getStuMark());

//[a,b,c] -> a|b|c

StringBuffer sb = new StringBuffer();

for(String hobby:stu.getStuHobbies())

sb.append(hobby).append("|");

sb.deleteCharAt(sb.length()-1);

pstmt.setString(5, sb.toString());

pstmt.executeUpdate();

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

if(e.getMessage().contains("Duplicate entry"))

throw new SmsException("该学号["+stu.getStuNo()+"]已存在,注册失败!");

}finally{

DBUtils.releaseRes(conn, pstmt, null);

}

}

4.JSP转译生成的java类属于什么样的包

JSP转译后会生成一个同名的java文件、一个同名的class文件,位于D:\apache-tomcat-8.5.6\work\Catalina\localhost\sms\org\apache\jsp中。

5.JSP页面中JSP语法以什么为基础

以xml为基础。

6.说明JSP与servlet间的关系

JSP是变相的servlet。

(1)JSP页面调用servlet

①通过表单:<form action=”servlet 访问地址”>……</form>

②通过超链接:<a herf=”servlet 访问地址”(+?要传递的参数)>……</a>

(2)servlet跳转到JSP页面:

①转向:request.requestDispatcher(“load_student.jsp”).forword(request,response);

②重定向:response.sendRedicret(“load_student.jsp”);

(3)servlet调用另一个servlet

同(2)servlet跳转到JSP页面

(4)JSP跳转到另一个JSP:<jsp:forword page=”load_student.jsp”></jsp:forword>

7.说明servlet两种协作方式及其特点

(1)forword协作(转递请求):页面的路径是相对路径。只能跳转到本web应用中的页面上。跳转后浏览器地址栏不会变化。服务器在向客户端发送数据之前,是先将数据输出到缓冲区,然后将缓冲区中数据发送给客户端。

(2)include协作(包含响应内容):把另一个servlet处理过后的内容拿过来,包括自身的处理结果都会返回给浏览器。

8.说明过滤器、过滤器链

(1)过滤器:能够对servlet容器的请求和响应对象进行检查和修改。

(2)过滤器链:串联的几个过滤器加上资源(resource)形成一个过滤器链。

时间: 2024-11-06 16:03:15

JAVA 笔记no.3的相关文章

15.1-全栈Java笔记:Java事件模型是什么?事件控制的过程有哪几步??

应用前边两节上一章节的内容,大家可以完成一个简单的界面,但是没有任何的功能,界面完全是静态的,如果要实现具体功能的话,必须要学习事件模型. 事件模型简介及常见事件模型 对于采用了图形用户界面的程序来说,事件控制是非常重要的. 一个源(事件源)产生一个事件并把它(事件对象)送到一个或多个监听器那里,监听器只是简单地等待,直到它收到一个事件,一旦事件被接收,监听器将处理这些事件. 一个事件源必须注册监听器以便监听器可以接收关于一个特定事件的通知. 每种类型的事件都有其自己的注册方法,一般形式为: v

13.1-全栈Java笔记:打飞机游戏实战项目|AWT技术|MyGameFrame

简介和项目目标 通过游戏项目学习整个Java基础知识体系,我们做了精心的设计,让每一章知识都能获得应用. 比如:多线程用来实现动画效果.容器实现对于多发炮弹的存取和处理.常用类等等的应用. 寓教于乐,让大家迅速入门,更希望通过喜闻乐见的小游戏,让大家爱上编程,爱上"程序员". 老鸟建议 很多朋友会疑惑:"游戏项目,又不能拿到企业面试中,为什么要讲?" 这是一种太过于功利的想法.就像,我们说:"今天吃个馒头,又不是长高,为什么要吃呢?" 游戏项目的

Java笔记---部署 JavaWeb 项目到云服务器

一.前言 前面我们已经尝过了在云服务器上部署代码的甜头了,现在主菜就要上场了,那就是将我们的 JavaWeb 项目部署到云服务器上.兴奋吧?淡定淡定~ 二.项目部署 我们对于 Java Web 项目在本地机器(无论是 Windows 还是 Linux)上的部署已经了然于心了,那么对于在云服务器上部署 Java Web 项目又是如何操作的呢? 其实很简单,还是离不开 Web 项目部署的那三点: ① 基础的 JDK 环境 ② 一个 Web 服务器.如 Tomcat.JBoss ③ 一款数据库.如:m

JAVA 笔记 七

JAVA笔记七 this:就代表本类的对象,this代表它所在函数所属对象的引用简单说:那个对象在调用this所在的函数,this就代表那个对象静态:static 用法:是一个修饰符,用于修饰成员(成员变量,成员函数)当成员被静态修饰后,就多了一个调用方式,除了可以被对象调用外,还可以直接被类名调用.类名.静态成员static特点1.随着类的加载而加载2.优先于的对象存在3.被所有对象所共享4.可以直接被类名所调用实例变量和类变量的区别:1.存放位置. 类变量随着类的加载而存在与方法区中. 实例

JAVA笔记六

JAVA笔记总结六 把大象放入冰箱的几步: 面向对象的三个特征:封装,继承,多态 JAVA开发实际上就是找对象使用,没有对象就创建一个对象 找对象,建立对象,维护对象的关系 类和对象的关系:类是对现实生活中实物的描述: 对象就是这类事物,实实在在存在的个体 匿名对象:匿名对象可以作为参数进行传递也可以作为对象方法进行一次调用

java 笔记 String 和Stringbuffer

String 是一个类,而不是java中的基本数据类型. String s = "abc";  "abc"是一个对象,存放在常量池中.一旦被初始化就不能被更改了. s = "cde";  这里并没有改变字符串,而是使对象引用指向字符串cde: String s1 = new String("abc"); String s2 = "abc"; 这两者有什么不同,第一个有两个对象,一个是"abc&qu

14.5-全栈Java笔记:java.awt这些布局怎么写?|流式|边界|网格

布局管理器 读者会发现,如果使用坐标定位法(空布局),在一个比较复杂的界面上定位每个控件的坐标是一个非常麻烦的工作,而且在界面大小发生改变时,控件的绝对位置也不会随之发生改变.那么如果我们想让用户界面上的组件可以按照不同的方式进行排列怎么办?例如:可以依序水平排列,或者按网格方式进行排列等,其实每种排列方案都是指组件的一种"布局",要管理这些布局,就需要本节学习的布局管理器. 管理布局的类由java.awt包来提供,布局管理器是一组实现java.awt.LayoutManager接口的

14.4-全栈Java笔记: javax.swing常用控件有哪些?怎么用?

常用基本控件 javax.swing.JButton 在图形界面程序中,按钮可能是使用量最大的控件之一,javax.swing包中JButton类就是用来创建按钮的.如表1所示,为JButton常用的构造方法.  javax.swing.JLabel JLabel控件是最简单的Swing组件之一,用于在窗体上显示标签, JLabel既可以显示文本,也可以显示图像.如表3所示,为JLabel常用的构造方法. 注意: JLabel只能用于显示文本和图标信息,用户不能对其进行修改. javax.swi

13.3-全栈Java笔记:打飞机游戏实战项目|PaintThread|launchFrame

多线程和内部类实现动画效果 1)增加绘制窗口的线程类 前三个版本,我们步步为营,每个小版本都有功能的突破.但是,目前为止我们的窗口仍然是静态的,并没有像真正的游戏窗口那样"各种动.各种炫".本节我们结合多线程实现动画效果. 我们在MyGameFrame类中定义"重画窗口线程PaintThread类",为了方便使用MyGameFrame类的属性和方法,我们将PaintThread定义成内部类. [示例1]MyGameFrame类:增加PaintThread内部类 pu

4.6-全栈Java笔记:THIS关键字和STATIC关键字

this关键字 对象创建的过程和this的本质 构造方法是创建java对象的重要途径,通过new关键字调用构造器时,构造器也确实返回了该类的对象,但这个对象并不是完全由构造器负责创建的.创建一个对象分为如下四步: 1. 分配对象空间,并将对象成员变量初始化为0或空 2. 执行属性值的显示初始化 3. 执行构造方法 4. 返回对象的地址给相关的变量 this的本质就是"创建好的对象的地址"!  由于在构造方法调用前,对象已经创建.因此,在构造方法中也可以使用this代表"当前对