JavaWeb开发技术基础概念回顾篇

第一章 动态网页开发技术概述

1.JSP技术:JSP是Java Server Page的缩写,指的是基于Java服务器端动态网页。

2.JSP的运行原理:当用户第一次请求某个JSP文件时,容器首先检查JSP文件的语法是否正确,然后将JSP文件转换成Servlet原文件,并调用Java工具类将Servlet原文件编译成字节码文件。接下来,容器加载转换后的Servlet类,实例化一个该类的对象处理客户端的请求,请求处理完成后,容器将HTML格式的相应信息发送给客户端,执行过程如图所示:

3.JSP的特点:A.将内容的生成和现实分离  B.使用可重用的组件  C.采用标签简化页面开发   D.完善的存储管理和安全性  F.一次编写,处处运行

4.JSP2.0 新功能 A.引入表达式语言 B.简单标签  C.使用JSP fragment

第二章 静态网页开发技术

1.JavaScript简介:JavaScript是一种动态的、弱类型的、基于对象和事件驱动的脚本语言,它的解释器被称为JavaScript引擎,是浏览器的一部分。

2.JavaScript中的事件:是指某个对象发出的消息,标志着某个特定行为的发生或某个特定的条件成立。常见的事件:A.点击事件onClick  B.改变事件onChange  C.选中事件onSelect   D.聚焦事件 对事件处理的代码叫做:事件处理程序,它通常有函数实现。

3.常见的对象:String对象、document对象、window对象。

4.CSS概述:Cascading Style Sheets即层叠样式表,简称样式表,CSS是一种为网站添加布局效果的出色工具。为我们的网站披上一件华丽的外衣。

5.CSS的优点:A.通过单个样式表控制多个文档的布局 B.更精确的布局控制  C.为不同的媒体类型采取不同的布局。

第三章 JSP基本语法

1.页面构成:脚本元素:声明、脚本段、表达式;注释:HTML注释、Java注释、JSP隐藏注释;指令元素:page、include、taglib等;动作元素:jsp:include、jsp:forward、jsp:useBean等。

2.page指令:页面指令,用来定义整个JSP页面的属性和相关功能。Language属性(指定脚本元素中使用的脚本语言,默认为Java)、contentType属性(指定JSP页面输出内容的类型和字符编码方式)、pageEncoding属性(指定JSP页面的字符编码)、info属性(页面的描述信息)、import属性(导入脚本元素中用到的Java类)、session属性(指定当前页面中内置对象是否可用)、errorPage属性(指定当前页面在运行过程中发生异常时,转向哪里进行异常处理)、isErrorPage属性(指定当前页面是否是异常处理页面)、buffer属性(设置JSP内置对象out的缓冲区大小或不使用缓冲区)、autoFlush属性(指定当out对象的缓冲区填满时,缓冲区是否自动刷新)、isELgnored属性(指定JSP页面中是执行还是忽略EL表达式,属性的值为布尔类型)

3.include指令:作用是在JSP页面中静态包含一个文件,被包含的文件必须和当前JSP也处于同一个Web应用中。<%@ include file=”” %>先包含后编译。而<jsp:include page=”” />是动态包含其他资源即先编译后包含。

第四章 JSP内置对象
1.九大内置对象:


对象名


类型


对象说明


out


javax.servlet.jsp.JspWriter


HTML标准输出


request


javax.servlet.http.HttpServletRequest


封装请求消息


response


javax.servlet.http.HttpServletResponse


封装响应消息


session


javax.servlet.http.HttpSession


封装会话消息


application


javax.servlet.ServletContext


封装应用信息


pageContext


javax.servlet.jsp.PageContext


封装当前JSP页面的上下文信息


exception


java.lang.Throwable


封装异常处理信息


config


javax.servlet.ServletConfig


封装JSP页面的Servlet配置信息


page


java.lang.Object


如同Java中的this

out对象

向浏览器输出数据的方法:A.void print()  B.void println()  C.void newline()输出新的一行

操作缓冲区的方法:void flush() 刷新缓冲区的数据到客户端   void close()刷新缓冲区,并关闭输出流。

request对象

reqeust对象封装了浏览器的请求消息,通过request对象的各种方法可以获取客户端以及用户提交的各项请求信息,请求信息包括请求的头部信息、请求方式、请求的参数名称、参数之等。

获取请求参数信息的方法:String getParameter(String name):获取请求参数name的值,并以字符串形式返回,如果参数name不存在则返回null。

String[] getParameterValues(String name):获取请求参数name的所有参数值,返回的是字符串数组,如果参数name不存在则返回null。

Enumeration<String>getParameterNames():获取请求中所有参数的名称

Map<String,String[]> getParameterMap():以Map类型返回请求的所有参数,其中参数名作为Map的key,Map的value是这个参数名对应的所有参数值的字符串数组。

Object getAttribute(String name):返回指定名称的属性值,如果指定的属性不存在,则返回null。

void setAttribute(String name, Object o):在请求对象中存储名称为name,值为o 的属性。

void removeAttribute(String name):删除指定名称的属性。

response对象

void sendReridect(String url):将页面重新定向到url指定的地址。这个方法必须在响应被提交之前调用,否则会抛出异常。

session对象

session对象是在会话范围内,记录每一个客户端的访问状态,以便于跟踪每一个客户端的操作。

工作原理:当客户端首次访问服务器的JSP页面时,服务器会为该客户端分配一个session对象,同时为该session对象指定一个唯一的ID,这个ID被存储在Cookie对象中随着响应对象返回给客户端,使得客户端与服务器的session对象建立一一对应关系。当客户端继续请求服务器上的其他资源时,存储着session ID的Cookie对象会随着请求对象一起发送到服务器,此时服务器通过session ID找到客户端所对应的session对象。客户端的session ID 一直有效,直到客户端浏览器关闭、超时或调用session的invalidate()方法使其失效。 session ID 失效表示客户端与服务器的会话结束,客户端再次连接服务器时,会为其重新分配session对象。

常用方法:

void setAttribute(String name, Object value)、Object getAttribute(String name)、void removeAttribute(String name)、getId():获取session对象ID 、boolean isNew():判断是否为新的会话、setMaxInactiveInterval(int interval):设置session对象的最大持续时间,单位是秒。void invalidate():使session对象失效.

Cookie简介

Cookie通常用于浏览器端保存会话过程中的一些信息,如登陆信息、会话ID等。他不属于JSP内置对象。

功能:Cookie可以实现让站点跟踪特定访问者的访问次数,最后访问时间以及访问者最后进入站点的路径;Cookie能够帮助站点统计用户个人资料以实现各种各样的个性化服务;Cookie在同一站点实现自动登陆功能,使得用户不用输入用户名和密码就可以进入曾经浏览的站点。

Cookie和session对象的区别:

A.存放地点:Cookie对象存放在客户端的硬盘里,属于离线存放;session对象存放在服务器的内存中;B.存活时间:Cookie对象可以长时间存放在客户端,具体时间由setMaxAge()方法所指定的数值决定;sessino对象随着用户访问服务器而产生,虽客户端的超时或下线而消失。 C.安全性:Cookie对象存放在客户端,可能会被别有用心的网站读取,安全性较差,session对象存放在服务器的内存中,用户不能修改,安全性较好。

application对象

application对象负责为JSP页面提供在服务器运行的一些全局信息,它在服务器启动时创建,直到服务器关闭时消失。

第五章JDBC访问数据库

JDBC访问数据库的步骤:导入java.sql包--->加载数据库驱动--->定义数据库的连接地址,用户名和密码---->得到与数据库的连接对象--->声明SQL语句--->得到语句对象--->执行SQL语句---->处理SQL语句的返回结果--->关闭对象。

JDBC连接mysql代码:

package com.jinzhi.db;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.sql.SQLException;

public class DBManager {

private Connection conn;

private PreparedStatement ps;

protected ResultSet rs;

/**

 * 拿到数据库连接

 * @return

 */

protected Connection getConn() {

Connection conn = null;

try {

Class.forName("com.mysql.jdbc.Driver");

conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/book?characterEncoding=utf-8", "root", "");

System.out.println("连接成功!");

} catch (ClassNotFoundException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

return conn;

}

/**

 * 查询数据库

 * @param sql

 * @param obj

 * @return

 */

public ResultSet query(String sql, Object[] obj) {

this.conn = this.getConn();

try {

ps = this.conn.prepareStatement(sql);

if(obj != null && obj.length > 0) {

for (int i = 0; i < obj.length; i++) {

ps.setObject(i + 1, obj[i]);

}

}

rs = ps.executeQuery();

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

return rs;

}

/**

 * 数据更新方法

 * @param sql

 * @param obj

 * @return

 */

public int update(String sql, Object[] obj) {

this.conn = this.getConn();

int count = 0;

try {

ps = this.conn.prepareStatement(sql);

if(obj != null && obj.length > 0) {

for (int i = 0; i < obj.length; i++) {

ps.setObject(i + 1, obj[i]);

}

}

count = ps.executeUpdate();

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

return count;

}

/**

 * 关闭数据库

 */

public void closeAll() {

try {

if(rs != null) {

rs.close();

rs = null;

}

if(ps != null) {

ps.close();

ps = null;

}

if(conn != null) {

conn.close();

conn = null;

}

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

public static void main(String[] args) {

DBManager manager = new DBManager();

System.out.println(manager.getConn());

}

}

使用JavaBean组件

软件可重用技术的核心在于可重用组件,JavaBean提供了通用功能,可以在Java应用中重复使用。

使用JavaBean的好处:可以使得JSP页面变得清晰;节省软件开发时间;降低系统维护的难度;为JSP也能够用带来了更多的伸缩性,使系统变得健壮和灵活。

第六章Servlet技术

Servlet是Java语言编写的程序,运行于支持Java的Web服务器或应用服务器中。它优于JSP出现,提供和客户端动态交互的功能。

优点:可移植性、安全、高效。

Servlet生命周期

1)当客户端第一次请求Servlet时,Servlet被加载到内存,容器会创建这个Servlet的实例,并调用init方法进行初始化工作。

2)容器创建请求对象和响应对象,然后调用Servlet的service方法为客户端提供服务。

3)当Servlet不在被需要时,容器调用Servlet的destroy()方法将Servlet实例销毁。

4)Servlet的整个生命周期中,init方法和destroy方法只会被调用一次。

如下图:

Servlet过滤器,

Servlet过滤器是一种Java组件,它位于客户端和处理程序之间,能够对请求和响应进行检查修改。它通常用来完成一些通用的操作,如统一字符编码、字符编码、加密、实施安全控制等。摘网上图,如下图:

Servlet监听器

与Java中的监听器类似,Servlet监听器也用来监听重要事件的发生,只不过它监听的对象是Web组件。

有关Servlet监听器接口及事件类参考网址:http://blog.csdn.net/b_qxzb/article/details/47402095博客

Jsp和servlet的相同点和不同点:

JSP是Servlet技术的扩展,本质上是Servlet的简易方式,更强调应用的外表表达。JSP编译后是"类servlet"。Servlet和JSP最主要的不同点在于,Servlet的应用逻辑是在Java文件中,并且完全从表示层中的HTML里分离开来。而JSP的情况是Java和HTML可以组合成一个扩展名为.jsp的文件。JSP侧重于视图,Servlet主要用于控制逻辑。

什么事MVC模式,使用MVC模式开发系统有哪些优缺点?

1)MVC原理

mvc是一种程序开发设计模式,它实现了显示模块与功能模块的分离。提高了程序的可维护性、可移植性、可扩展性与可重用性,降低了程序的开发难度。它主要分模型、视图、控制器三层。

1、模型(model)它是应用程序的主体部分,主要包括业务逻辑模块(web项目中的Action,dao类)和数据模块(pojo类)。模型与数据格式无关,这样一个模型能为多个视图提供数据。由于应用于模型的代码只需写一次就可以被多个视图重用,所以减少了代码的重复性

2、视图(view) 用户与之交互的界面、在web中视图一般由jsp,html组成

3、控制器(controller)接收来自界面的请求 并交给模型进行处理 在这个过程中控制器不做任何处理只是起到了一个连接的做用

2)MVC的优点

1、可以为一个模型在运行时同时建立和使用多个视图。变化-传播机制可以确保所有相关的视图及时得到模型数据变化,从而使所有关联的视图和控制器做到行为同步。

2、视图与控制器的可接插性,允许更换视图和控制器对象,而且可以根据需求动态的打开或关闭、甚至在运行期间进行对象替换。

3、模型的可移植性。因为模型是独立于视图的,所以可以把一个模型独立地移植到新的平台工作。需要做的只是在新平台上对视图和控制器进行新的修改。

4、潜在的框架结构。可以基于此模型建立应用程序框架,不仅仅是用在设计界面的设计中。

3)MVC的不足之处

1、增加了系统结构和实现的复杂性。对于简单的界面,严格遵循MVC,使模型、视图与控制器分离,会增加结构的复杂性,并可能产生过多的更新操作,降低运行效率。

2、视图与控制器间的过于紧密的连接。视图与控制器是相互分离,但确实联系紧密的部件,视图没有控制器的存在,其应用是很有限的,反之亦然,这样就妨碍了他们的独立重用。

3、视图对模型数据的低效率访问。依据模型操作接口的不同,视图可能需要多次调用才能获得足够的显示数据。对未变化数据的不必要的频繁访问,也将损害操作性能。

4、目前,一般高级的界面工具或构造器不支持模式。改造这些工具以适应MVC需要和建立分离的部件的代价是很高的,从而造成MVC使用的困难。

第七章EL表达式

EL隐含对象


隐含对象


描述


pageContext


页面上下文对象,用于访问JSP的内置对象,如:application、response、out等


param


Map对象,存储参数名和单个值的映射


paramValues


Map对象,存储参数名和一个数组的映射


header


Map对象,存储请求头中的信息名和单个值的映射


headerValues


Map对象,存储请求头中的信息名和一个数组的映射


cookie


Map对象,存储请求中cookie名和单个值的映射


initParam


Map对象,存储Web应用在上下文初始参数和单个值得映射


pageScope


Map对象,存储页内有效范围内的命和值得映射


reqeustScope


Map对象,存储请求有效范围内的命和值得映射


sessionScope


Map对象,存储会话有效范围内的命和值得映射


applicationScope


Map对象,存储应用范围内的命和值得映射

JSTL标签


核心标签库


完成JSP页面的常用功能


格式标签库


国际化标记


SQL标签库


访问基本的关系型数据库的能力


XML标签


处理和生成XML的标记


函数标签库


字符串操作函数

JSTL 标签大全详解参考博客:http://blog.csdn.net/qq_25827845/article/details/53311722

补充一个知识点:

关于jQuery.ajax()使用实例:

使用jQuery.ajax()方法获取数据,下边给个常用写法,并做了相应的注释。

代码如下

$.ajax({

 url: "http://www.hzhuti.com", //请求的url地址

 dataType: "json", //返回格式为json

 async: true, //请求是否异步,默认为异步,这也是ajax重要特性

 data: { "id": "value" }, //参数值

 type: "GET", //请求方式

 beforeSend: function() {

  //请求前的处理

 },

 success: function(req) {

  //请求成功时处理

 },

 complete: function() {

  //请求完成的处理

 },

 error: function() {

  //请求出错处理

 }

});

使用jQuery.ajax()

这里将显示数据

$.ajax我的实际应用例子

//1.$.ajax带json数据的异步请求

var aj = $.ajax( {

 url:‘productManager_reverseUpdate‘,// 跳转到 action

 data:{

    selRollBack : selRollBack,

    selOperatorsCode : selOperatorsCode,

    PROVINCECODE : PROVINCECODE,

    pass2 : pass2

 },

 type:‘post‘,

 cache:false,

 dataType:‘json‘,

 success:function(data) {

  if(data.msg =="true" ){

   // view("修改成功!");

   alert("修改成功!");

   window.location.reload();

  }else{

   view(data.msg);

  }

  },

  error : function() {

   // view("异常!");

   alert("异常!");

  }

});

//2.$.ajax序列化表格内容为字符串的异步请求

function noTips(){

 var formParam = $("#form1").serialize();//序列化表格内容为字符串

 $.ajax({

  type:‘post‘,  

  url:‘Notice_noTipsNotice‘,

  data:formParam,

  cache:false,

  dataType:‘json‘,

  success:function(data){

  }

 });

}

//3.$.ajax拼接url的异步请求

var yz=$.ajax({

  type:‘post‘,

  url:‘validatePwd2_checkPwd2?password2=‘+password2,

  data:{},

  cache:false,

  dataType:‘json‘,

  success:function(data){

   if( data.msg =="false" ) //服务器返回false,就将validatePassword2的值改为pwd2Error,这是异步,需要考虑返回时间

   {

    textPassword2.html("<font color=‘red‘>业务密码不正确!</font>");

    $("#validatePassword2").val("pwd2Error");

    checkPassword2 = false;

    return;

   }

  },

  error:function(){}

});

//4.$.ajax拼接data的异步请求

$.ajax({

 url:‘<%=request.getContextPath()%>/kc/kc_checkMerNameUnique.action‘,

 type:‘post‘,

 data:‘merName=‘+values,

 async : false, //默认为true 异步

 error:function(){

  alert(‘error‘);

 },

 success:function(data){

  $("#"+divs).html(data);

 }

});
时间: 2024-10-10 14:31:13

JavaWeb开发技术基础概念回顾篇的相关文章

微信公众号开发技术基础(二):外网映射工具ngrok的简介和使用

本文结构:(一)用法(二)示例(三)qydev ngrok的下载链接及相关网站 微信公众号开发的时候,微信服务器是需要访问我们的一个公网服务器地址的,但我们又是在本地调试自己的程序的,那怎样让微信服务器能访问到我们本地的服务器呢?那就需要用外网映射工具,将本地IP映射成公网IP,这样就能在公网上访问本地服务了,这里使用ngrok.ngrok原版程序的服务器是在国外的,访问速度极慢或者干脆访问不了,所以这里提供一个服务器搭建在国内的基于ngrok的一个软件:qydev,百度网盘下载链接见文章结尾.

软件开发技术基础复习要点

软件开发技术基础复习要点 1.生存周期: 指一个软件从提出开发要求开始,经过需求分析.设计.制造.调试.使用.维护,直到软件产品被淘汰为止的整个过程. 2.简述软件工程的基本原理: 用分阶段的生命周期计划严格管理: 坚持进行阶段评审: 实行严格的产品控制: 采纳现代程序设计技术: 结果应该能清楚地审查: 开发小组应小而精: 承认不断改进软件工程实践的必要性. 3.简述产生软件危机的原因和解决办法: 原因:开发软件所需的高成本与软件产品的低质量之间存在尖锐的矛盾,致使软件开发陷入循环之中,即研制软

VC开发数据库基础之ADO篇

VC开发数据库基础之ADO篇 -------------------------------------------------------------------------------- 加入时间:2003-9-2 9:14:02 来源:小小软件园 浏览137次 -------------------------------------------------------------------------------- 一.ADO简介ADO(ActiveX Data Object)是Mic

#WPF的3D开发技术基础梳理

原文:#WPF的3D开发技术基础梳理 自学WPF已经有半年有余了,一遍用,一边学.但是一直没有去触摸WPF的3D开发相关技术,因为总觉得在内心是一座大山,觉得自己没有能力去逾越.最近因为一个项目的相关原因,需要用的3D技术,虽然内心没有底只能硬着头皮上了.最后效果还不错. 开发完之后,对WPF的开发小有所感,于是打算写下来,把相关知识梳理下.给正在学习WPF技术伙伴们一点帮助. 能力平平,知识有限,如有错误,还望雅正. 作为微软推广的一门软件开发技术,肯定会遵循一个基本准则:怎么方便怎么来,怎么

JavaWeb:JSP技术基础

JavaWeb:JSP技术 快速开始 介绍 JSP全称Java Server Pages,是一种动态网页开发技术.它使用JSP标签在HTML网页中插入Java代码.标签通常以<%开头以%>结束. JSP是一种Java servlet,主要用于实现Java web应用程序的用户界面部分.网页开发者们通过结合HTML代码.XHTML代码.XML元素以及嵌入JSP操作和命令来编写JSP. JSP通过网页表单获取用户输入数据.访问数据库及其他数据源,然后动态地创建网页. JSP标签有多种功能,比如访问

HTML5游戏开发技术基础整理

随着HTML5标准最终敲定,HTML5将有望成为游戏开发领域的的热门平台.HTML5游戏能够运行于包括iPhone系列和iPad系列在内的计算机.智能手机以及平板电脑上,是目前跨平台应用开发的最佳实施方案.本文系根据[HML5 Canvas游戏开发实战]一书中的内容整理而成,是了解和学习HTML5游戏开发的基础内容,希望能够帮助到那些和博主一样致力于游戏开发的朋友们! JavaScript中的面向对象编程 对于游戏开发来说,面向对象编程(OOP)是一种重要而且必要的方法,所以在了解HTML5游戏

网络技术基础概念和个人笔记总结(1)

防伪码:不经一番寒彻骨,怎得梅花扑鼻香 本次主要更新网络技术部署与运维个人笔记,附加作业练习(共八章节,分为四次更新) 二.三层交换技术 1.单臂路由的缺陷 a."单臂"本身将成为网络的骨干链路,容易形成瓶颈. b.子接口仍然依托于物理接口,就实际而言不灵活 c.每次vlann间转发都需要查看路由表,严重浪费设备资源 2.使用三层交换技术实现vlan间通信(面试题) 三层交换机的配置命令 a.启用路由功能:ip routing b.虚接口配置ip(充当网关) int vlan 2 ip

微信公众号开发技术基础(一):Eclipse+Tomcat搭建本地服务器并跑通HelloWorld程序

本文结构:(一)环境准备(二)在Eclipse里创建Dynamic Web工程(三)写一个简单的Servlet类并配置web.xml(四)运行程序 (一)环境准备 1.Eclipse:要使用for JavaEE版本的Eclipse,因为要创建Dynamic Web(动态Web)程序,这里使用eclipse-jee-mars-1-win32-x86_64版本.Eclipse是绿色软件,下载后解压缩即可打开使用. 百度网盘下载链接:https://pan.baidu.com/s/1dFvaKrJ 2

计算机网络中常见的技术和概念----应用层篇

1. DNS DNS全称是Domain Name System,域名系统,它的任务就是把域名映射成对应的IP. DNS解析域名的过程: (1)首先查找缓存:包括浏览器缓存.操作系统缓存.路由器缓存等,找到了直接返回对应的IP,找不到则进行(2): (2)查找本机的hosts文件:hosts文件保存在本地的一个文件,内容包含域名和IP地址对,一般格式是域名+空格+IP地址,如果还找不到则到(3): (3)查找DNS服务器: 域名的解析是与我们的阅读顺序相反,解析过程是从后向前,比如https://