jsp课后总结

时间:2024.3.19

第一章

第一节:

1> jsp概念和特点(理解)

2>MyEclipse工具使用,创建项目,配置tomcat,JDK,发布项目(掌握)

访问路径:http://(ip地址):7070/浏览器的访问路径/*.jsp

访问本地服务器的两种特殊方式:localhost 127.0.0.1

第二节:

1> JSP页面组成元素(掌握)

静态内容:HTML静态文本 js css

指令元素: 以“<%@ ” 开始,以“%> ” 结束。比如:<%@ include file = " Filename" %>

脚本元素:

(1)表达式:<%= .表达式.. %>

(2)scriptlet:<% ...任何的java代码.. %>

(3)声明:<%! ..声明常量或函数... %>

动作元素: 以“<jsp: 动作名 ” 开始,以“</jsp:动作名> ” 结束 比如:<jsp:include page=" Filename" />

2>JSP页面运行环境

设置环境变量(注意变量值之间用“;”隔开) (掌握)

JAVA_HOME CLASSPATH PATH TOMCAT_HOME

tomcat的目录结构(理解)

tomcat的主要配置文件

1)server.xml:全局配置文件,它提供组件的初始配置,并且描述了的结构和含义,使得能通过实例化组件完成启动以及自身构建。(掌握tomcat端口修改)

2)web.xml—Web应用程序通过该文件来描述其部署信息,以便tomcat服务器能够知道如何部署该应用程序 (了解)

3)tomcat-users.xml—该文件可以对用户进行管理(了解)

设置WEB服务目录

(1)直接将项目放在tomcat的webapps目录下

访问路径:http://localhost(ip):7070/项目名/*.jsp

(2)将项目放在硬盘其他任何位置,通过配置tomcat的server.xml文件,访问相应的项目

在server.xml文件的</Host>前添加:

<Context path="/浏览器的访问路径" docBase="磁盘的实际位置(如E:/myjsp)" debug="0" reloadable="true" />

【注意】修改了server.xml配置文件,需要重启tomcat服务器 web应用程序的目录结构: (掌握)

第三节

1> JSP执行过程(掌握)

如果是第一次访问JSP页面时过程如下:

(1)客户端发出Request (请求)到tomcat服务器,将请求转发给JSP 容器

(2)JSP Container 将JSP 转译成Servlet 的源代码(即java类)

(3)将产生的Servlet 的源代码经过编译后生成class文件,并加载到内存执行;

(4)把结果Response (响应)至客户端

如果是以后访问jsp那就直接调用内存中的jsp实例,把结果Response (响应)至客户端

2>JSP与Servlet关系(理解)

(1) jsp与servlet对应关系

(2)JSP是以SERVLET为基础

(3)如果是第一次访问.jsp文件被服务器翻译成一个对应的servlet类

第二章

第一节:JSP脚本元素(first文件夹)

jsp中插入java代码段的三种方式:(掌握)

1>表达式: <%= .表达式.. %>

【注意3点】

(1)”<%=“是一个完整的符号,符号中间不可有空格

(2) 不可以插入语句,不能在表达式后添加;号

(3)表达式必须能求值

2>scriptlet:<% ...任何的java代码.. %>

(1)类型:java允许的任何类型

(2)作用范围:局部变量,刷新后,数字不变,反复声明

(3)多个客户操作是否相互影响:不会影响到其它客户

3>声明:<%! ..声明常量或函数... %>

(1)类型:java允许的任何类型

(2)作用范围:全局变量,刷新后,数字逐步增加,并没有反复声明,只声明了一次。

(3)多个客户操作是否相互影响:会影响到其它客户

全局变量线程同步问题(理解)

第二节 jsp指令元素 (second文件夹)

1>Page指令 (理解)

用来定义整个JSP页面的一些属性和这些属性的值。属性值总是用单引号或双引号括起来。

Page指令格式

(1)用一个page指令指定多个属性的值

(2)用多个page指定为每个属性指定值

【注意】只有import属性可以设置多个值,其他属性只能指定一个值,import设置多个值时,用逗号分隔

page指令示例 pageDemo.jsp

errorPage属性示例 errorPageDemo.jsp error.jsp

2>include指令 (掌握)

用于在运行时将 HTML文件或 JSP页面嵌入到另一个 JSP页面

(1)include指令格式

<%@ include file = ”文件名” %>

(2)include指令包含,即静态包含的特点:

1,先包含后处理,生成一个servlet类

即当前jsp页面和插入的文件合并成一个新的jsp页面,然后jsp引擎再将这个新的jsp页面转译成java文件

2,生成一个class文件

3,不能传参

4,同一个request对象

includeDemo1.jsp include1.jsp

include指令,静态包含示例 分别说明了静态包含特点 3>taglib指令 (理解) 可以让JSP页面使用标签 <%@ taglib uri = ”标签库表述符文件” prefix = ”前缀名” %>

JSTL标签示例 taglibDemo.jsp

第三节 jsp动作元素

1>param动作

<jsp:param name=“名字” value=“指定param的值”/>

param标签与jsp:include、jsp:forward、jsp:plugin标签一起使用。 2>include动作 (掌握)

(1)include动作格式

<jsp:include page=“文件的URL”/>

<jsp:include page =“文件的URL”>

param子标记

</jsp:include>

(2)include动作包含,即动态包含的特点:

1,先处理后包含,生成多个servlet类

即能自动区分包含的文件是静态文件还是动态文件.

执行时,如果被包含的页面是静态的,则直接将内容包含进来,但是不处理

如果被包含的页面是动态的,则先执行,再把结果包含进来显示 2,生成多个class文件

3,能传参数

4,不同一个request对象,可以取得包含它的页面的参数,并且添加了自己的参数

includeDemo2.jsp include2.jsp include2.txt

include动作,动态包含示例 分别说明了动态包含特点

******乘法和除法计算器,课下练习,下节课讲 ******

3>forward动作 (掌握)

(1)forward动作格式

(2)forward作用实现页面跳转

可以用两种方法实现页面的转发,分别是forward和redirect 但是二者有区别:

1.forward是服务器内部转发,而redirect是通过客户端进行转发

2.如果用forward进行转发的话,客户端的url地址不会改变,但是如果用redirect的话,则url地址会改变

3.如果用forward进行转发,转发页面和被转发页面处于一个request请求内,而redirect不是。

forwardDemo.jsp forwardDemoTo.jsp示例,说明服务器转发和客户端转发区别

4>plugin动作 (了解)

5>useBean动作 (后面讲)

第三章

第一节 JSP内置对象 (掌握)

1>JSP内置对象概述

JSP隐式对象是WEB容器加载的一组类的实例,它不同于一般的JAVA对象那样用“NEW”去获取实例,而是可以直接在JSP页面使用的对象。

【注意】在JSP页面的JAVA程序片和表达式部分使用 声明部分不能用

2>JSP内置对象分类

(1)和输入输出相关:request、response、out

(2)和作用域通信相关:session、application、pageContext

(3)和servlet相关:page、config

(4)和错误相关:exception

3>JSP四种属性的保存范围 (JSP执行时,可以向容器中保存的对象的保存范围)

(1)设置属性和取得属性方法

setAttribute("参数名","参数值");

getAttribute("参数名");

(2)四种范围

page范围:只能在当前页面取得数据

示例: pageContextDemo1.jsp pageContext1.jsp

request范围:

示例: requestDemo1.jsp request1.jsp request11.jsp session范围:

示例: sessionDemo1.jsp session1.jsp session11.jsp application范围:

示例: applicationDemo1.jsp application1.jsp

第二节 request对象

1>功能一 接收客户端请求参数 中文乱码处理, get和post提交方式区别

(1)接收客户端请求参数 (传参方式:form表单数据,param标记数据,url请求重定向参数)

String var=request.getParameter("属性名"); //获取单值的表单元素内容

String var[]=request.getParameterValues("属性名"); //获取多值的表单元素内容

(2)中文乱码处理两种方式:

方式一: 将信息用ISO-8859-1重新编码,把编码放到字节数组中,最后把字节数组再转换成字符串

写成两行代码:

byte b[]=username.getBytes("ISO-8859-1");

username=new String(b,"UTF-8");

写成一行代码: username=new String(username.getBytes("ISO-8859-1"),"UTF-8"); 方式二:调用request对象方法设置统一字符编码 request.setCharacterEncoding("UTF-8");

【注意】:方式二只对post有效,放在getParameter之前才有效

(3)get和post提交方式区别

<1>GET提交的数据会在地址栏中显示出来 POST提交,地址栏不会改变

<2>Get传输的数据有大小限制,不同的浏览器对URL的长度的限制是不同的。如果传递大数据,则无法使用 POST提交没有长度要求

<3>Get安全性低,Post安全性高

示例:requestDemo1.jsp request1.jsp

(4)获取客户端请求参数名 (了解)

Enumeration enu=request.getParameterNames();//获取请求参数名集合 示例:requestDemo4.jsp request4.jsp

2>功能二 保存request范围的属性值(掌握 见第一节)

3>功能三 请求转发(服务器内部转发 功能同forward)(掌握)

request.getRequestDispatcher("转向的页面url").forward(request,response);

【注意】:这里的URL可以为相对路径,如果URL开始为“/”,则认为它是相对于当前WEB应用程序的根目录。

示例:requestDemo2.jsp request2.jsp

4>request常用方法 (了解)

示例:requestDemo3.jsp

第三节 response对象 out对象

response对象功能

1>功能一 设置响应头信息

(1)方式一:调用response对象方法

response.setHeader("refresh",1); //设置本页面每秒刷新一次

reponse.setHeader("refresh","5;url=转到页面的url");//5秒后刷新到要转到的页面

(2)方式二:meta标签

<meta http-equiv="refresh" content="1">

<meta http-equiv="refresh" content="5;url=转到页面的url">

示例:responseDemo1.jsp response1.jsp

2>功能二 请求重定向,即客户端跳转

response.sendRedirect("转到页面的url");

response.sendRedirect("转到页面的url *.jsp?参数名1=参数值1&参数名2=参数值2"); //地址重写传参

回顾:请求转发和请求重定向区别,即服务器端跳转和客户端跳转区别。

示例:responseDemo2.jsp response2.jsp

3>功能三 设置contentType类型

response.setContentType("application/msword;charset=GB2312");

空指针异常处理方式

(1)方式一:str不为空时,再执行

(2)方式二:str为空时,赋默认值

(3)方式三:代码修改,用字符串调用equals,字符串本身是一个匿名对象,所以永远是一个实例化对象.即使str为空,也没关系

示例:responseDemo3.jsp

out对象功能

1>输出信息到页面

out.print(输出的内容)可以输出各种数据类型 (常用)

out.Write(输出的内容)只能输出和字符相关的东西

示例:outDemo.jsp

第四节 sesion对象 cookie

1>什么是会话,保存会话数据的两种技术

会话概念:用户开一个浏览器,点击多个超链接,访问服务器多个web资源,然后关闭浏览器,整个过程称之为一个会话。

保存会话数据的两种技术:session cookie

2>session对象的主要功能保存用户信息

(1) 获取sessionID session长度;判断是不是一个新的session

session.getId() isNew()

(2) 保存session范围属性(掌握 见第一节)

用户登录站点中增加session,保存用户信息,防止用户非法登录系统 login.jsp --登录界面

loginControl.jsp --验证界面

welcome.jsp --欢迎界面

logout.jsp --注销界面

(3) 设置session有效时间

session.setMaxInactiveInterval(保存时间);

【注意】:这里的时间单位为s 默认在WEB.XML中配置30分钟

3>cookie对象 类:javax.servlet.http.Cookie

(1) cookie创建,增加

创建Cookie:Cookie cookie=new Cookie("cookie名","cookie值"); 添加cookie到客户端:response.addCookie("cookie名");

示例 cookieDemo1.jsp

(2) cookie获取服务器端获取

Cookie:Cookie [] cks=request.getCookies();

【注意】实际上客户端的cookie是通过http协议头信息发送到服务器端上的 示例 cookieDemo2.jsp

用户登录站点中增加cookie,保存用户信息,两周内自动登录

cookie文件夹下

login.jsp --登录界面

loginControl.jsp --验证界面

welcome.jsp --欢迎界面

logout.jsp --注销界面

cookie文件存放路径:C:\Users\Administrator\AppData\Roaming\Microsoft\Windows\Cookies

工具,隐藏受保护的文件系统前面的勾去掉,就能看到cookie文件夹了。

4>session 和 cookie区别

session和cookie都可以用于跨页面保存数据,区别如下:

(1)存放位置 session服务器端;cookie客户端

(2)安全性 session安全性高;cookie安全性低

(3)网络传输量 session保存在服务器端不需要传输;cookie通过网络在服务器端和客户端传输

(4)生命周期 session间隔的(19分钟访问,生命周期重新开始)另外关机会造成session生命周期结束;cookie累计的,关机对cookie生命周期无影响

第五节 application pageContext page config

1>application对象的主要功能保存公共信息

(1)功能一:设置application范围属性 (掌握 见第一节)

(2)功能二:获取工作目录的真实路径(掌握)

application.getRealPath("/")

getServletContext().getRealPath("/")

示例:applicationDemo.jsp

2>pageContext对象主要功能保存page范围值

(1)功能一:设置page范围属性 (掌握 见第一节)

(2)功能二:通过pageContext可以获取其他的隐式对象(了解)

示例:pageContextDemo.jsp

3>page对象 (了解)

4>config对象读取初始化配置参数

web.xml中配置servlet参数

示例:configDemo.jsp web.xml

5>exception对象,处理异常 (了解)

示例:exceptionDemo1.jsp exceptionDemo2.jsp

第四章

第一节 javaBean特点,编写,调用方式

1>javaBean概念特点

javaBean是一种特殊的java类(实体类)

特点: 1.类必须是具体的公共的: public class ...

2.具有无参的构造方法

3.类中属性私有,提供公有的get/set方法

2>如何编写javaBean

(1)编写javabean必须满足上面特点

补充:java命名规范

包命名:全部字母小写

类命名:单词的首字母大写

属性名称:第一个单词的首字母小写,之后每个单词的首字母大写:userName

方法命名:与属性名相同:public void setUserName()

常量命名:全部单词大写:public String DBDRIVER="INSPUR"

构造方法特点:

名称与类名相同

不含返回值,不能在方法中用return语句返回一个值

构造方法只能用new运算符调用

set/get方法命名规则:

属性首字母大写,在属性名称前面加上set/get

对于boolean类型成员变量,允许用is代替get

示例:com.inspur.bean Student.java

3>javabean调用 (1)调用方式一:与其他类一样,通过new关键字创建对象 示例:studentBeanDemo1.jsp (2)调用方式二:使用动作标记<jsp:useBean>来加载bean <jsp:useBean>动作: 作用:在指定的作用域内创建javaBean类的对象 特点:先在指定作用域内查找对象,找到直接返回,否则创建新的对象 <jsp:useBean id="实例化对象名称(唯一)" class="包.类" scope="(对象的

作用域即使用范围)page|request|session|application" />

<jsp:setProperty>动作

作用:设置javaBean对象的属性:

<jsp:setProperty name="对象名(和useBean的id相对应)" property="属性名(和javaBean的某个属性名一致)" value="属性值" />

<jsp:getProperty>动作

作用:获取javaBean对象的属性

<jsp:getProperry name="对象名" property="属性名" />

示例:studentBeanDemo2.jsp

第二节

1><jsp:setProperty>动作三种形式:

作用:设置javaBean对象的属性:

(1)用具体的值给javaBean的属性设置值:通过设置setProperty动作value属性 <jsp:setProperty name="对象名(和useBean的id相对应)" property="属性名(和javaBean的某个属性名一致)" value="属性值" />

【注意】用表达式赋值时,传值类型要与bean中属性类型一致

(2)用参数给javaBean的属性设置值:通过设置setProperty动作设置param属性 <jsp:setProperty name="对象名(和useBean的id相对应)" property="属性名(和javaBean的某个属性名一致)" param="参数名" />

(3)属性值自动匹配,用*号自动给javaBean的所有属性赋值

【注意】属性名和参数名要一致

<jsp:setProperty name="对象名" property="*" />

<!-- setProperty 方式一:用具体的值给javabean属性设置值 value="属性值" 表达式的值的类型要与bean中类型一致,并且要写在引号中-->

<jsp:setProperty name="studentBean" property="userName" value="zhangsan"/>

<jsp:setProperty name="studentBean" property="password" value='<%=request.getParameter("password") %>' />

<jsp:setProperty name="studentBean" property="age" value='<%=Integer.parseInt(request.getParameter("age")) %>' />

<jsp:setProperty name="studentBean" property="flag" value="true" />

<!-- setProperty 方式二:用参数给javabean属性设置值 param="参数名"--> <jsp:setProperty name="studentBean" property="userName" param="userName"/>

<jsp:setProperty name="studentBean" property="password" param="password"/>

<jsp:setProperty name="studentBean" property="age" param="age"/> <jsp:setProperty name="studentBean" property="flag" param="flag"/>

<!-- setProperty 方式三:属性值自动匹配 property="*" -->

<jsp:setProperty name="studentBean" property="*"/>

2>javabean四种作用范围

page范围:属性只保存在当前页面,如果跳转到其他页面,则需要重新实例化。 request范围:属性只保存在服务器跳转中;

session范围:属性保存在一次会话中,可以使用任何方式连接到其他页面,则此对象只实例化一次

application范围:属性公有,此对象在整个服务器上只实例化一次。因为application会占用资源,尽量少用

示例:com.inspur.bean Student.java

login.jsp loginControl.jsp welcome.jsp

第五章

第一节 EL表达式简介,作用,获取数据

1>EL简介: expression language,表达式语言

语法:${表达式 }

2>EL表达式作用

获取数据 执行运算 利用el的隐式对象,获取web开发常用的对象 调用java方法

(1) el获取四个范围的数据

获取四个作用域page、request、session、application中的数据:

${pageScope|requestScope|sessionScope|applicationScope.属性名}

${对象名.属性名}

示例: elDataDemo1.jsp

(2)el获取复杂对象的数据,javabean, 数组,list,map

形式:${..Scope.对象名.属性名}或 ${..Scope.对象名["属性名"]}

示例: elDataDemo2.jsp

.和[]区别:

能用点的地方都可以使用[]代替,[]支持特殊字符写法,点不可以

(1)数字不能用.点

(2)特殊字殊不能用点

第二节 EL表达式作用

1>el 执行运算(算术运算,关系运算,逻辑运算,空运算)

算术运算符 5个; 关系运算符 6个;逻辑运算符 3个; 空运算,判断是否为空 empty

【注意】在EL运算中没有字符串运算,运算时将内容转换为数字

示例: elDemo1.jsp

2>el获得web开发常用对象

EL表达式语言中定义了11个隐含对象,使用这些隐含对象可以很方便地获取web开发中的一些常见对象,并读取这些对象的数据。

(1) pageContext 对应于JSP页面中的pageContext对象(了解)

示例:elPageContextDemo.jsp

(2)el表达式中获取page、request、session、application四个作用域数据的对象: (掌握)

pageScope requestScope sessionScope applicationScope

分别获取page域, request域, session域, application域

示例: elDataDemo1.jsp 见第一节

(3)param: 获取单值的表单参数(掌握)

(4)paramValues 获取多值的表单参数 (掌握)

示例: elParamDemo.jsp elParam.jsp

(5)header 获取请求头部信息(了解)

(6)headerValues 获取请求头部信息,存放在字符串数组中(了解)

(7)cookie 获取cookie数据 (掌握)

测试cookie时,例${cookie.key}取的是cookie对象,如访问cookie的名称和值,须${cookie.key.name}或${cookie.key.value}

示例: elCookieDemo.jsp

(8)initParam 获取web应用初始化参数

【注意】获取的参数为全局的初始化参数 配置初始化参数:WEB-INF/web.xml

<context-param>

<param-name>username</param-name>

<param-value>zhangsan</param-value>

</context-param>

示例: elInitParamDemo.jsp

3>EL调用JAVA方法

(1)使用el函数库(sun公司提供的针对字符串处理的函数,放在JSTL开发包) 使用步骤:

1)导入jstl开发包

方法一:项目名点右键-->选择MyEclipse-->Add JSTL Libraries...选项

方法二:新建项目时,选择JSTL Support 添加JSTL开发包

2)jsp文件导入标签描述文件

<%@taglib uri="/jsp/jstl/functions" prefix="fn"%>

示例: elFnDemo.jsp

(2)自定义函数 (了解)

EL表达式语法允许开发人员开发自定义函数,以调用Java类的方法。 步骤:

1)编写静态方法 (编写计算年龄方法 com.inspur.el Utils.java )

2)编写tld标签描述文件,在文件中注册成为EL函数 (WEB-INF/utils.tld)

3)在页面内容引用自定义EL函数 格式:${prefix:method(params)}

示例: elMyUtilDemo.jsp Utils.java utils.tld

第六章

第一节 JDBC简介,编程步骤

1>jdbc的概述 (理解)

JDBC 全称:(Java DataBase Connectivity) Java数据库连接,它是SUN公司为了简化、统一对数据库的操作,定义了一套Java操作数据库的规范,称之为JDBC。

2>如何开发JDBC (掌握)

(1)使用sun 提供官方 JDBC接口 API

官方API位于JDK两个包里面

java.sql 和 javax.sql (javax 是 java 扩展包)

(2)导入相应JDBC的数据库实现(即数据库驱动)

jdbc驱动:是由不同的数据库厂商提供的

驱动本质是JDBC接口的实现类

3>JDBC编程步骤 (掌握)

(1)加载数据库驱动

Class.forName("包名+驱动类名");

Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");

(2)建立与数据库连接

Connection

conn=DriverManager.getConnection("jdbc:sqlserver://localhost:1433;DatabaseName=inspur","sa","test123!");

(3)操作数据库

1)创建statement对象

Statement stmt = conn.createStatement();

2)通过statement向数据库发sql语句

ResultSet rs = stmt.executeQuery(sql);

3)遍历结果集

while(rs.next()){ //有数据,循环遍历

System.out.println("userid="+rs.getInt(1)+"

username="+rs.getString(2));

}

(4)释放资源

rs.close();

stmt.close();

conn.close();

【注意】释放资源的顺序和开资源的顺序正好是相反的

示例: jdbcUserDemo1.jsp jdbcUserDemo2.jsp

第二节:JDBC常用API

1>DriverManager

(1)DriverManager作用:管理驱动和获取数据库连接

DriverManager.getConnection(url, user, password);

【注意】DriverManager可以管理多个驱动,每个驱动通过URL标识 另外在开发中不要用registerDriver,用class.forName来加载驱动。

(2)URL 包括:协议、子协议、服务器ip、服务器端口、数据库 (掌握) 常见url写法

Oracle ---- jdbc:oracle:thin:@localhost:1521:inspuruptec

SQLServer---jdbc:sqlserver://localhost:1433;DatabaseName=inspuruptec 2>Connection作用:表示一个数据库的连接

功能一: 获得发送sql语句的对象 (掌握)

createStatement() 返回 Statement ----- 传输普通sql 编译执行

prepareStatement(sql) 返回 PreparedStatement ----- 传输预编译SQL语句,提交性能 解决SQL注入问题

prepareCall(sql) 返回 CallableStatement------- 调用存储过程(数据库内部程序) 功能二: 管理数据库事务

3>Statement 可以将sql 语句发送到数据库

功能一 执行单句SQL (掌握)

executeUpdate(String sql) 返回 int 受影响行数 : 执行 insert 、update、delete executeQuery(String sql) 返回 ResultSet 结果集 : 执行 select

execute(String sql) 返回 boolean : 可以执行任何sql 语句

【注意】execute方法:sql执行结果如果ResultSet 返回 true, 如果不是ResultSet 返回 false

示例: statementDemo1.jsp

功能二 支持批处理,连续执行多条SQL (了解)

4>ResultSet 结果集 (掌握)

通过 rs.next 遍历结果集

while(rs.next()){

// 根据 下标或者列名 获得每列数据

数据库类型 与 java类型对应关系

int rs.getInt()

varchar rs.getString()

bigint rs.getLong()

double rs.getDouble

date rs.getDate()

time rs.getTime()

timestamp rs.getTimeStamp()

...

ResultSet 高级特性 --- 滚动结果集 (了解)

5>编写DBConnection工具类 (掌握)

com.inspur.jdbc.DBConnection.java //简化JDBC编程,提供重用代码的公共方法。

dbconfig.properties //数据库连接信息配置文件 为了程序可以连接任何数据库,将连接关键信息 写入配置文件

测试DBConnection工具类 通过JUnit工具编写测试用例

com.inspur.testcast.DBTest.java

第三节:JDBC常用API

1>prepareStatement接口 (掌握)

优点: (1)sql语句经过预处理,运行速度快

(2)可以有效防止SQL注入,安全性更高

实现步骤:

(1)创建数据库连接:conn=DBConnection.getConnection();

(2)编写sql,参数用?占位

(3)通过connection获得预编译Statement对象 PreparedStatement pstmt = conn.prepareStatement(sql); // 已经将sql 发送给数据库进行编译

(4)设置sql语句中? 对应值

pstmt.setXXXX(占位符编号,参数名);

(5) 执行sql

ResultSet rs=pstmt.executeQuery();

int count=pstmt.executeUpdate();

【注意】对于 PreparedStatement 或 CallableStatement,方法 executeUpdate() executeQuery()不能带参数

即一定不要传入sql ,因为使用预编译,sql已经在数据库编译

(6)判断结果:

功能一 执行单句SQL 与statement接口区别,对象创建,设置参数方法,参数类型,防止SQL注入

示例:

com.inspur.testcase.PstmtTest testPstmtAdd --测试PreparedStatement增加操作

com.inspur.testcase.PstmtTest testPstmtUpdate --测试PreparedStatement修改操作

com.inspur.testcase.PstmtTest testPstmtDelete --测试PreparedStatement删除操作

com.inspur.testcase.PstmtTest testPstmtQuery -- 测试PreparedStatement查询操作

功能二 支持批处理,连续执行多条SQL (了解)

2>prepareStatement防止SQL注入 (掌握)

方案一:通过用户名查询密码,与输入密码进行比较

方案二:用PreparedStatement实例 取代statement对象

另外:可以通过输入用户名和密码不允许包括特殊字符,防止SQL注入 用户登录系统验证 以及防止SQL注入

login.jsp

loginControl.jsp //通过statement向数据库发送SQL语句

loginControl1.jsp //方案一,防止SQL注入

loginControl2.jsp //方案二,防止SQL注入

loginControl3.jsp //方案一+方案二,防止SQL注入

logout.jsp

welcome.jsp

3>CallableStatement接口 (理解)

调用存储过程,调用语法格式,设置参数方法,参数类型,注册输出参数方法 示例: com.inspur.testcase.ProcTest testProcDemo1 -- 测试带in,out参的存储过程调用

【注意】对于 PreparedStatement 或 CallableStatement,方法 executeUpdate() executeQuery()不能带参数

4>ResultSetMetaData接口 结果集元数据 (了解)

5>使用JDBC进行批处理 两种方式的优缺点: (了解)

6>事务 JDBC中使用事务 控制事务的方法 (理解)

示例: com.inspur.testcase.TransactionTest demo1

第四节: tomcat数据源配置,封装工具类 (掌握)

配置tomcat数据源连接池

com.inspur.testcase.TomcatDataSource

WebRoot/META-INF/context.xml

tomcatDataSource.jsp

封装tomcat数据源连接池

com.inspur.jdbc.DBConnPool

第五节:JDBC开发用户管理系统

登录页面-->首页(管理用户,增加,查询用户,退出系统)

管理用户-->修改用户信息,删除用户信息

用户登录管理完善 界面美化 增加,删除,修改,查询

第七章

第一节 jstl简介

1>在jsp中使用JSTL标签步骤:

(1)在项目中导入JSTL的jar包

(2)在jsp页面中使用taglib导入标签库:<%@ taglib uri="/jsp/jstl/core" prefix="c" %>

2>表达式标签out,set,remove,catch

out标签 输出四个范围内属性值,提供默认值,对特殊内容进行转义

格式:<c:out value="输出的内容" default="默认值" escapeXml="是否忽略特殊字符" />

示例: out.jsp

set标签 给JSP四个范围定义的属性赋值, 给四个范围内已经存在对象属性赋值 格式:

给变量赋值:<c:set value="值" var="变量名" scope="变量存放的范围"/>

给对象属性赋值:<c:set value="值" target="对象名" property="属性名" />

示例: set.jsp

remove标签 删除四个范围内属性值,没有指定范围的话,则依次从page、request、session、application中查找并删除。

格式:<c:remove var="变量名" scope="变量存放的范围"/>

示例: remove.jsp

catch标签 取代传统try - catch代码块 --- 进行异常捕获

格式:<c:catch>可能发生异常的代码</c:catch>

示例: catch.jsp

第二节 流程控制标签,迭代标签,URL标签

1>流程控制标签

if 标签:取代传统if 条件判断

<c:if test="条件" var="存放结果的变量" scope="变量存放的范围" >

本体内容(java代码段、标签、纯文字)

</c:if>

示例:if.jsp

choose when otherwise标签 : 编写if--else if -- else if --- else 结构 --- 编译switch-case 结构

<c:choose>

<c:when test="判断条件">本体内容</c:when>

<c:when test="判断条件">本体内容</c:when>

....

<c:otherwise>内容</c:otherwise> </c:choose>

示例: choose.jsp

2>迭代标签

forEach标签:取代for(变量:集合) {} --- 变量数组、遍历list、遍历map 求1到100和

<c:forEach var="每次取出的变量" items="集合类或数组等对象">

本体内容

</c:forEach>

示例: foreach.jsp

forTokens 标签:按照制定分隔符,切割字符串,进行循环打印

<c:forTokens var="每次取出的变量" items="遍历的对象" delims="分隔符" > 本体内容

</c:forTokens>

示例: fortoken.jsp

3>URL操作

param标签:访问url时进行数据传递。结合import/rediret/url 三个标签一起使用 import标签:导入目标资源页面代码,导入到当前页面 功能类似<jsp:include>动态包含,区别:import标签可以包含其他项目中的文件

<c:import url="包含的页面url" context="/项目名"/>

示例: import.jsp

url标签: 完成URL重写 * 结合param进行url get方式中文编码

<c:url value="页面的url" context="/项目名" var="存放产生的url" scope="var的范围" />

示例: url.jsp

redirect 标签 : 实现请求重定向,作用和response.sendRedirect("url");一样 <c:redirect url="重定向的页面url" context="/项目名" />

示例: redirect.jsp

***** 重点 c:set c:if c:forEach

第八章

第一节: servlet简介,servlet编写步骤,servlet运行原理

1>什么是servlet (掌握)

Servlet是一个Java应用程序,运行在服务器端,用来处理客户端请求并作出响应的程序。

2>servlet实现方式 (掌握)

(1)实现servlet接口

需要实现init,sevice,destroy,getServletConfig,getServletInfo方法。

(2)继承GenericServlet类,需要重写service方法。

(3)继承HttpServlet类,需要重写doGet, doPost方法,这是目前用的最多的一种方法。 3>servlet编写步骤 (掌握)

(1)编写一个类,继承HttpServlet类,重写doGet, doPost方法

(2)在web工程中web.xml 配置文件中对Servlet进行注册

<servlet>

<servlet-name>servlet名字</servlet-name> <servlet-class>完整包路径+类名</servlet-class> <init-param> <param-name>参数名</param-name> <param-value>参数值</param-value> </init-param> </servlet> <servlet-mapping>

<servlet-name>servlet名字(和上面一致)</servlet-name>

<url-pattern>/虚拟访问路径</url-pattern>

</servlet-mapping>

示例: ServletDemo1.java web.xml配置servlet

4>servlet运行原理 (掌握)

5>servlet接收表单参数

示例:input.jsp InputServlet.java web.xml配置servlet

第二节:servlet生命周期 servlet自动加载

1>servlet生命周期 (掌握)

(1)初始化 服务器加载servlet对象时,执行init()方法进行初始化

默认init()方法只在第一次访问servlet时调用,并且只调用一次

(2)处理请求 初始化完毕,服务器调用service()方法响应客户的请求

每一次请求,都会调用service方法处理用户请求

(3)销毁 服务器调用destroy()方法销毁servlet对象

在服务器关闭或重启的时候调用destroy方法,销毁servlet

示例1:实现servlet接口

ServletDemo2.java

示例2:继承HttpServlet类

LifeCycleServlet.java

1) init方法作用:servlet对象初始化

【注意】父类GerericServlet中带参数初始化方法默认调用无参初始化方法。

如果子类重写了带参init(ServletConfig config) 方法,则不会自动调用无参init()方法。

2) service方法作用:解析客户端发来的HTTP请求为何种方式,根据请求方式,调用相应的doXXX方法。

doXX方法格式:

public void doXXX(HttpServletRequest request, HttpServletResponse response)

{

//方法主体

}

【注意】如果子类重写了service方法,则失去原来的作用。通常在servlet类中,只重写doGet、doPost方法,处理请求即可。

2>servlet自动加载 (掌握)

web.xml中配置<load-on-startup>0</load-on-startup>

3>Servlet虚拟映射路径三种配置方式 (了解)

(1)完全路径匹配 : 以/开始 例如:/demo1、/demo2、/aa/index.html ----- 不存在通配符*

(2)目录匹配 : 以/开始 使用通配符* 例如:/*、/aa/*、/bb/cc/* * 某个目录下所有资源

(3)扩展名匹配:不能以/开始 使用通配符 例如:*.do 、*.action ----- /*.do、/aa/*.action 错误的

课下练习:用户登录网站

Login.java LoginControl.java Welcome.java

第九章

第一节 ServletConfig ServletContext接口API com.inspur.servlet 包下

1> ServletConfig读取servlet初始化参数

(1)web.xml配置servlet初始化参数

<servlet>

<init-param>

<param-name>参数名</param-name>

<param-value>参数值</param-value>

</init-param>

</servlet>

(2)获取值方法

init(ServletConfig config);

config.getInitParameter("参数名");

getServletConfig().getInitParameter("参数名")

示例: ServletConfigDemo1.java

2> ServletContex应用

(1)应用一:读取WEB应用初始化参数,全局数据

1)web.xml配置ServletContext全局初始化参数

<context-param>

<param-name>参数名</param-name> <param-value>参数值</param-value> </context-param>

2)获取值方法

getServletContext().getInitParameter("参数名称");

示例: ServletContextDemo1.java

思考:ServletContext 与 ServletConfig 提供初始化参数不同 ??

(2)应用二:通过ServletContext对象实现数据共享 --统计站点访问次数 相当于application范围的属性

向ServletContext保存数据 setAttribute() ------- 相当于map.put

取得ServletContext中数据 getAttribute ---- map.get 这里取出数据是 Object 需要强制类型转换

示例:ServletContextCountDemo1.java

ServletContextCountDemo2.java

(3)应用三:利用ServletContext对象读取资源文件 --!!!!!!!!在web 工程读取文件必须使用绝对磁盘路径

示例:ServletContextDemo3.java

!!!!!!!!在web 工程读取文件必须使用绝对磁盘路径 D:\work\myclipse\work20120713\day5\1.txt

1.txt在工程根目录,不在WebRoot 中 --- 只有WebRoot 会被发布 ----

1.txt 不存在无法读取

4.txt 在src目录 --- src中所有java文件编译.class 保存WEB-INF/classes --- src中所有配置文件 会自动复制WEB-INF/classes --- 可以读取

file = getServletContext().getRealPath("/2.txt"); ---- 将网站根目录下2.txt 文件路径 转换为绝对磁盘路径

file = getServletContext().getRealPath("/WEB-INF/3.txt"); ---- 将网站根目录下WEB-INF目录下 3.txt 转换绝对磁盘路径

file = getServletContext().getRealPath("/WEB-INF/classes/4.txt"); ---- 获得网站根目录下WEB-INF下classes 下4.txt 绝对磁盘路径

如果读取文件 在WEB-INF/classes下

file = Demo9Servlet.class.getResource("/4.txt").getFile(); // 这里 / 代表classpath根目录

思考: ServletContext 与 ServletConfig 的联系和区别???

第二节 HttpServletRequest接口API com.inspur.request 包下 (request对象功能见

第三章第二节 request对象)

1>接收客户端请求参数 中文乱码处理, get和post提交方式区别 (掌握)

(1)接收客户端请求参数 (传参方式几种方式?form表单数据,param标记数据,url请求重定向参数)

String var=request.getParameter("属性名"); //获取单值的表单元素内容

String var[]=request.getParameterValues("属性名"); //获取多值的表单元素内容

非空校验

不合法 if (name == null || name.trim().length() == 0) name为null 获得 name为"" 不合法

合法 if(name!=null && name.trim().length() >0 )

(2)中文乱码处理两种方式:

乱码原因:客户端编码字符集与服务器tomcat解码字符集不一样 ---- 出现乱码

解决:

request.setCharacterEncoding 对请求体解码字符集设置 --- 处理post乱码问题

* setCharacterEncoding 必须位于 getParameter 之前

处理get乱码

1)、配置 conf/server.xml --- URLEncoding

<Connector port="80" ... URIEncoding="utf-8"/>

2) 手动转码

// iso 进行 url 编码

username = URLEncoder.encode(username, "ISO-8859-1");

// utf-8 解码

username = URLDecoder.decode(username, "utf-8");

简化 username = new String(username.getBytes("ISO-8859-1"),"utf-8");

* 结论:post处理乱码简单,get处理乱码复杂 ---- 尽量使用post提交方式 少用get

(3)get和post提交方式区别

<1>GET提交的数据会在地址栏中显示出来 POST提交,地址栏不会改变

<2>Get传输的数据有大小限制,不同的浏览器对URL的长度的限制是不同的。如果传递大数据,则无法使用 POST提交没有长度要求

<3>Get安全性低,Post安全性高

(4)获取客户端请求参数名 (了解)

Enumeration enu=request.getParameterNames();//获取请求参数名集合 getParameterMap--Map<String,String[ ]> key :name value: 多值

示例: WebRoot/request/login.jsp welcome.jsp

com.inspur.request LoginServlet.java

2>请求转发 在服务器内部通过request传递数据 (服务器内部转发 功能同forward)(掌握)

request范围设置值:request.setAttribute("参数名","参数值");

request范围取值:request.getAtrribute("参数名");

request.getRequestDispatcher("转向的页面url").forward(request,response);

【注意】:这里的URL可以为相对路径,如果URL开始为“/”,则认为它是相对于当前WEB应用程序的根目录。

示例: WebRoot/request/login.jsp welcome.jsp

com.inspur.request LoginServlet.java

3>request常用方法 客户请求信息获得(客户机,请求方式、请求资源路径) (了解) request.getRequestURL();//获取完整的请求路径:http://...

request.getRequestURI();//获取相对路径:/项目名/请求资源名

request.getContextPath();//获取项目名 /项目名

request.getMethod(); //获取http请求方式:默认get

request.getRemoteAddr();//获取客户端IP地址

示例:com.inspur.request RequestServletDemo1.java

4>获得头信息数据 (了解)

第十章

第一节: filter简介,filter实现,filter生命周期

1>filter简介

* Filter 对目标资源拦截,拦截HTTP请求和HTTP响应

* Filter 拦截本质上拦截url访问

2>filter实现 编写步骤

(1)编写类 实现Filter 接口 重写 init doFilter destroy 方法

(2)在web.xml中 注册过滤器,配置Filter拦截哪个web资源

<filter>

<filter-name>filter名</filter-name>

<filter-class>完整包路径+类名</filter-class>

</filter>

<filter-mapping>

<filter-name>filter名(和上面一致)</filter-name>

<url-pattern>/要拦截的web资源名称</url-pattern>

</filter-mapping>

3>filter生命周期 编写第一个filter 过滤hello.jsp

(1)初始化 在启动服务器时,Filter对象被创建,执行过滤器init 方法 init(FilterConfig) 方法

FilteConfig 作用和ServletConfig 类似---- 为过滤器提供初始化参数 *String getInitParameter(String name) 获得初始化信息

*public ServletContext getServletContext() 获得ServletContext对象 保存全局数据、读取web资源文件

(2)拦截请求 配置拦截后,访问hello.jsp --- 过滤器中doFilter方法获得执行

每请求一次,doFilter 过滤一次

* 没有配置过滤器之前,直接访问hello.jsp,当配置过滤器后,过滤器先于hello.jsp执行 ----- 此时FilterDemo1和hello.jsp组成 请求调用链FilterChain

* 拦截目标资源后,如果想目标资源执行: chain.doFilter ;如果不执行chain.doFilter 目标资源不会得到执行

doFilter(ServletRequest, ServletResponse, FilterChain )

WEB服务器每次在调用web资源之前,都会先调用一下filter的doFilter方法,

在doFilter方法内编写代码可达到如下目的:

1)调用目标资源之前,让一段代码执行

2)是否调用目标资源(即是否让用户访问web资源)

web服务器在调用doFilter方法时,会传递一个filterChain对象进来,filterChain对象是filter接口中最重要的一个对象,

它也提供了一个doFilter方法,开发人员可以根据需求决定是否调用此方法,

调用该方法,则web服务器就会调用web资源的service方法,即web资源就会被访问,否则web资源不会被访问。

3)调用目标资源之后,让一段代码执行

(3)销毁 服务器调用destroy()方法销毁filter对象

destroy方法和Servlet的destroy 一样,在正常关闭服务器情况下执行

示例:WebRoot/first/hello.jsp

com.inspur.filter FilterDemo1.java

4>配置filter-mapping

(1)对同一web资源配置多个过滤器

当配置多个Filter 拦截hello.jsp 组成新的请求调用链 FilterDemo1 --- FilterDemo2 --- hello.jsp

* 过滤器链会根据mapping 的顺序组成 <filter-mapping> 顺序调用过滤器执行

(2)一个过滤器可以用来过滤多个web 资源

(3)关于url-pattern 写法和Servlet相同 有三种 完全匹配、目录匹配、扩展名匹配

* 在filter-mapping中存在 <servlet-name> 过滤Servlet时,可以通过url 和 name两种配置方式

<url-pattern>/hello</url-pattern>

<servlet-name>HelloServlet</servlet-name>

(4)<dispatcher> 标签及意义

配置在什么情况下、在什么调用方式下拦截目标资源

WebRoot/first/forward.jsp

WebRoot/first/hello.jsp

request,forward、include、error 四种方式,服务器调用资源方式 * 默认dispatcher值是request (请求时调用)

request ---- 在请求时过滤

forward ---- 在转发时过滤

include ---- 在包含时过滤

error --- 在错误页面跳转时过滤

如果想让过滤器执行,必须满足过滤方式 !!!! 如果forward、include 、error跳转时执行过滤 必须配置 dispatcher

示例:com.inspur.filter FilterDemo2.java

com.inspur.servlet HelloServlet.java

第二节: filter案例

用户登录网站

com.inspur.servlet LoginServlet.java

WebRoot/second/login.jsp welcome.jsp

1>案例一:关于编码集统一处理 解决中文乱码的过滤器

功能描述:编写 login.jsp 提供输入姓名表单,在Servlet获得表单数据,将数据打印页面上

分析:过滤器在目标资源之前执行 ,过滤器拦截多个目标资源,多个目标资源相同代码,抽取过滤器中 ----- 经常写代码放入过滤器

示例:com.inspur.filter EncodingFilter.java

2>案例二:验证用户是否合法登录,防止非法访问页面 过滤器链实例,双重验证 示例:com.inspur.filter IdentifyFilter.java

3>案例三:控制用户权限的过滤器 过滤用户的IP地址以进行访问控制

示例:com.inspur.filter IPFilter.java --固定IP进行访问控制 --读取配置文件中的IP地址进行访问控制

4>案例四:禁用缓存过滤器

分析:在web开发中,存在很多动态web资源,经常需要更新,为了保证客户端第一时间获得更新后结果,禁止动态web资源缓存

禁止缓存三个头信息

示例:com.inspur.filter NoCacheFilter.java

扩展案例:自动登陆过滤器 (了解)

com.inspur.demo AutoLoginFilter.java AutoLoginServlet.java

com.inspur.utils CookieUtils.java

com.inspur.utils DBConnPool.java

WebRoot/demo/login.jsp

WebRoot/demo/welcome.jsp

WebRoot/demo/inspur_ora.sql

功能:第一次登陆时,勾选自动登陆,关闭浏览器,再次打开,系统会自动进行用户已经登陆状态

AutoLoginFilter 在什么情况下需要自动登陆 ??

1、当前用户必须未登陆

2、存在自动登陆cookie信息

* 自动登陆过滤器,过滤页面一定不包括登陆和注册 页面

自动登陆案例问题:

1、 如果用户名中文怎么办?

insert into user values(1,'小红','123','user');

解决方案:保存cookie时进行手动编码 URL编码

生成cookie 时 new Cookie(URLEncoder.encode(用户名,"utf-8")); ------ AutoLoginServlet

读取cookie时, 对用户进行解码 URLDecoder.decode(用户名,"utf-8"); ---- AutoLoginFilter

2、 中文名和密码安全问题

* cookie 是一个文本类型文件,内容非常容易泄露

实际开发中数据库中密码和cookie中密码 都应该 加密后保存 ---- 单向加密算法 MD5

第十一章

第一节: JavaEE体系结构,如何编写DAO模式

1>JavaEE 体系结构 (了解)

Sun公司在JavaEE规范中定义了一套体系结构。

分成四层:客户端层,web层,业务层,数据持久层

其中: web层,业务层,数据持久层 都属于服务器 经典三层结构,或者叫三层模式

三层架构和MVC关系:

servlet 是C JSP 是V 业务层和数据层是M

2>DAO 模式

(1)JavaEE 设计模式 目的是解决 javaee 软件开发中的常见问题,和传统23种经典设计模式 不同的(工厂,单例等)

* DAO 模式就是 JavaEE(数据层)设计模式

DAO是一种JavaEE设计模式,位于数据层。

DAO封装了数据源增删改查操作,以简单接口API暴露业务层,业务层通过对象方式间接操作数据源。

(2)DAO(Data Access Object) 数据访问对象模式:

功能一 封装数据源CURD,提供简单API个业务层,

功能二 业务层可以通过对Java对象操作,间接操作数据源

(3) DAO模式中的对象 (掌握)

Business Object 代表数据的使用者

DataAccessObject 抽象并封装了对底层数据源的操作

DataSource 数据源

TransferObject 表示数据的Java Bean

3> 编写DAO步骤: (掌握)

(1)编写DataSource 数据源 见 第六章 JSP中使用数据库 第四节: tomcat数据源配置,封装工具类

示例:com.inspur.db DBConnPool.java

WebRoot/META-INF/context.xml

(2)编写 TransferObject --- 传输对象、也叫做值对象

User类用来存储user表中数据 四个属性,生成setter getter方法 * User类成员变量 和 users表字段一一对应

* VO对象 用来给业务层和数据层进行数据交互

示例: com.inspur.vo User.java

(3)编写DAO 程序 DataAccessObject

这是数据层DAO对象,功能:提供对数据源增删改查

* 提供操作数据源方法,方法参数和返回值 大多是TO对象

封装对数据源实现,让业务层对数据源不可见的(隐藏业务实现) 在企业中分工更加明确。

示例: com.inspur.dao UserDao.java

(4)编写Service 业务层对象 Business Object

模拟三层中的业务层。

* 业务层对象,提供数据对象给DAO 或者 从DAO查询数据对象

* DAO程序完成对数据源增删改查封装,业务层将对象传递数据层进行增删改查,接收DAO返回结果也是对象或者对象集合 ---- 简化业务层编程

* 业务层可以通过对象,操作数据源

示例: com.inspur.service UserService.java

4>测试DAO封装的增删改查方法:

WebRoot/testService.jsp

第二节:JSP模式发展过程 model1/model2

1>开发模式一 : JSP + JavaBean

* 适合开发业务逻辑不特别复杂的web应用

* JSP 负责javabean调度,负责页面显示

* JavaBean 封装数据,编写数据处理逻辑代码

优点:实现页面显示和业务逻辑处理分离

缺点:1.需要在jsp页面处理界面转向、调用javabeans代码(jsp页面嵌入大量java代码)

2.业务逻辑复杂时,jsp界面编写复杂,维护比较困难。 2>开发模式一 JSP+ JavaBean 综合案例计算器

1、浏览器直接和JSP进行通信

2、JSP获得客户端数据后,传递数据给JavaBean,由JavaBean来完成数据处理

3、JavaBean会将数据处理结果返回JSP,JSP根据JavaBean处理结果生成HTML页面,返回客户端

示例: com.inspur.model1.bean Calculator.java

WebRoot/model1/calculator.jsp

1、实现加减乘除

2、对form数据进行有效性校验 --- JavaScript

1) 在form 中添加 onsubmit="return checkForm();"

2) 编写函数

<script type="text/javascript">

function checkForm(){ ... } </script> 3) 通过isNaN 判断输入的是不是数字 3、除数不能为0 4、重大精度问题 --- java.math.BigDecimal * 除法 除不尽循环 ---- 精确 --- 保留位数

第三节:JSP模式发展过程 模式一优点,缺点 , 模式二优点,缺点

1>MVC设计模式

(1) MVC设计思想(架构设计模式)

按功能把对象划分为三个部分 , Model 模型 View 视图 Controller 控制器 目的: 耦合程度降至最低。

MVC是一种通过3个不同部分构造一个软件或组件的理想办法:

模型(Model):封装了最核心的功能,用于存储数据以及处理用户请求的业务逻辑。

视图(View):系统和用户交互的界面,向控制器提交所需数据,显示模型中的数据。

控制器(Controller):扮演调度者的角色,即控制器根据视图提出的请求判断将请求和数据交给那个模型处理,处理后的有关结果交给哪个视图更新显示。

(2) 在JSP技术中,“视图”,“模型”和“控制器” 的具体实现

模型(Model):一个或多个JavaBean对象,用于存储数据和处理数据;

视图(View):一个或多个JSP页面,为模型提供数据显示,JSP页面主要使用 HTML标记和JavaBean标记来显示数据;

控制器(Controller):一个或多个Servlet对象,根据视图提交的请求进行控制,生成JavaBean实例输出给JSP页面。

2>开发模式二 : JSP + JavaBean + Servlet

*V : JSP 负责页面显示

*M: JavaBean 封装数据、处理数据

*C: Servlet 负责JSP和JavaBean调度控制

----------- 现在互联网中大多使用该结构开发网站(满足MVC设计思想) 优点:按功能将对象进行分割,降低对象间的耦合程度,便于代码维护。 3>JSP 开发模式二:JSP + JavaBean + Servlet 综合案例: 用户登录注册

JSP 负责页面显示 JavaBean 数据封装和处理 Servlet 负责何时调用JavaBean 封装数据、处理数据,调用JSP显示页面

1、客户端请求 提交给Servlet

2、Servlet 将数据封装到JavaBean对象

3、Servlet 调用JavaBean对数据进行处理

4、JavaBean 将数据处理结果 返回Servlet

5、Servlet根据处理结果,选择传递数据给哪个JSP 显示

6、客户端响应 由JSP生成

com.inspur.model2.model User.java

com.inspur.model2.model UserModel.java

com.inspur.model2.servlet LoginServlet.java com.inspur.model2.servlet AddUserServlet.java WebRoot/model2/login.jsp WebRoot/model2/index.jsp WebRoot/model2/adduser.jsp WebRoot/model2/success.jsp WebRoot/model2/error.jsp

各章内容第二次总结

第一章 jsp简介

jsp概念和特点

安装配置JSP运行环境 配置文件修改:server.xml 端口号修改,虚拟目录配置 web应用程序的目录结构:

JSP页面的执行过程,即运行原理

第二章 jsp页面的各种构成元素

JSP 脚本元素的组成, jsp中插入java代码段的三种方式?

Jsp页面的指令有哪些?每个指令常用属性及作用?

Jsp页面的动作标记有哪些,作用是什么?静态包含和动态包含的区别是什么?

第三章 jsp内置对象

JSP四种属性的保存范围 page,request,session,application

Jsp隐式对象有哪些?掌握常用隐式对象(request,response,session,application)的作用、常用方法等?

第四章 javaBean

什么是javaBean 会用jsp+javaBean编程

jsp提供的三个动作标签作用,语法格式:useBean,setProperty,getProperty

第五章 el表达式

El表达式的隐式对象有哪些?

掌握常用隐式对象的用法和用途(pageScope,requestScope、sessionScope、applicationScope、param、paramValues)。

会使用el表达式从复杂对象中取值(javaBean,数组,list,map)?

第六章 jsp中使用数据库

开发JDBC程序需要具备的条件?

Jdbc连接数据库的步骤?每一步的代码?

涉及到的类或者接口以及相应的方法? Statement PreparedStatement CallableStatement 三者的区别?

第七章JSTL

Jstl标签库如何使用?核心标签库的分类以及每类中包含哪些标签?

重点掌握 c:set c:if c:forEach

第八章servlet概述

掌握servlet的实现方式? servlet编写步骤 Servlet部署文件,如何编写?每个标签的含义?

Servlet的生命周期?在生命周期中涉及到的方法,以及方法什么时候执行?HttpRequest、HttpResponse对象有谁负责创建?

第九章servletAPI

掌握ServletConfig和ServletContext的用法,及二者之间的区别和联系?

请求转发和请求重定向的定义及它们区别?

第十章 过滤器

过滤器编写步骤 过滤器部署文件,如何编写?每个标签的含义?

过滤器的生命周期?在生命周期中涉及到的方法,以及方法什么时候执行? 第十一章servlet MVC模式

JavaEE体系结构分几层?DAO位于哪一层?如何编写DAO模式

掌握JSP 两种开发模式 模式一:jsp+javabean 模式二:jsp+javabean+servlet

理解mvc设计模式,每个字母代表什么意思,每一层用什么技术实现?每一层的作用是什么?

更多相关推荐:
ps结课心得

ps结课心得ps结课心得一PS结课心得第一次接触ps时觉得很神秘我无法忘记第一次完成作品时内心的欣喜之情霎那间产生了兴趣随着接触的深入发现ps功能的强大每节课跟着老师做案例设计都是一步步的实践原来ps并不难需要...

photoshop基础结课论文

Photoshop基础作业ps的主要功能简述专业金融0902姓名宋宇航学号310910080221位号25短短一学期的photoshop基础公选课就要结束了从自己眼中的神笔马良到老师一层一层的揭开它神秘的面纱自...

ps教学工作总结

12级商务3班《图形图像处理》项目教学工作总结一学期很快就要过去,回顾本学期的教学工作,感到很辛苦,同时也感到很欣慰。因为我的学生在结束本学期课程后,基本都达到了教学大纲的要求,部分优秀的学生甚至能开始独立完成…

PS课程总结)

Photoshop图像处理课程总结20xx年又上了以前曾多次上过的PS课程,经过长时间的教学,我总结了几个经验与其他老师共享:1.上好第一节课,调动和激发学生学习热情和积极性。我认为上好Photoshop第一课…

Photoshop课程学习小结

塔里木大学公共选修课Photoshop图形图像处理技术明月制作设计说明书学生姓名学号5011210130所属学院信息工程学院专业计算机科学与技术班级计算机141指导教师明月制作步骤1新建一个文件参数如下2选择工...

Photoshop教学总结

Photoshop教学总结四川省叙永县职业高级中学校马小荣作为平面设计领域的龙头软件Photoshop已经越来越普及了很多职业院校都开设了这门课程我们学校最后这两届电脑班也开设了平面设计及动画等相关专业的课程正...

ps课程实践总结

实习类型实习单位实习起止时间指导教师所在院(系)专业班级学生姓名学号一、实习的基本概况(一)理论指导Photoshop主要处理以像素所构成的数字图像。使用其众多的编修与绘图工具,可以更有效的进行图片编辑工作。1…

Photoshop课程总结

Photoshop课程总结Photoshop课程是服装专业的一门必修课程作为设计专业的辅助性软件为学生进行更好更简单的服装款式或效果图绘制提供辅助作用在行业中也是运用教广泛的软件之一本学期我所教授的班级是137...

ps知识点总结

第一章绪论一photoshop软件简介1软件产生的背景产生时间20世纪80年代中期地点Michigan大学人物ThomasKaon发展过程麦金塔平台WindowsPhotoshop502Photoshop的专长...

ps总结所有知识点

11月1819日矢量图和位图的区别图像的颜色模式8种RGB的颜色内容CMYK是什么模式颜色内容位图模式和灰度模式的区别支持透明背景的图片格式Photoshop的专有格式移动工具魔棒工具矩形选框工具套索工具油漆桶...

20xxps教学工作总结

教学工作总结本学期担任电商专业6个班级的PS课程的教学工作开学初刚拿到这本教材时我很紧张担心教不好这门课程对于初学者是有一定难度的再加上自己也不是特别熟悉教材种种焦虑不管怎样任务安排下来了我就得尽自己最大的努力...

photoshop情景教学总结

创意设计教学设计一教学目标一知识与技能1掌握图层和文字工具的使用2学会利用图层透明度和图层样式来制作特殊效果增强艺术性3进一步熟悉photoshop的基本操作二过程与方法充分利用多媒体网络机房的优势首先由教师展...

ps结课总结(22篇)