最新JavaWeb开发手册
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
J a v a W e b开发手册
JavaWeb开发手册
1、JavaWeb环境配置
1)JDK 8u91:
下载地址,文件jdk-8u91-windows-i586(需安装)
配置环境变量:电脑-属性-系统-高级-环境变量-系统变量-Path编辑-输入JDK安装路径C:\Program Files\Java\jdk1.8.0_91\bin-确定
2)Tomcat7.0:
下载地址,文件apache-tomcat-7.0.69-windows-x86(解压后即可使用)
3)Eclipse:
下载地址,文件eclipse-jee-mars-2-win32(需安装)
启动方式:运行Eclipse安装目录下的eclipse.exe文件,选择一个工作空间WorkSpace
2、创建项目
1)Eclipse打开时怎么调出workspace launcher对话框
Eclipse-Windows-Preferences-General-Startup and Shutdown-Workspaces,勾上“Prompt for workspace on startup"
2)项目创建
File-New-Dynamic Web Project-Project name输入项目名称-Dynamic web module version选择3.0-next-弹出java配置对话框、选next-弹出Configure web module settings对话框、content directory中输入WebContent-Finish
3)创建JSP文件
First项目-Webcontent节点右击-New/JSP File-File name中输入项目名(如index.jsp)-next-打开Select JSP Template对话框、默认设置-Finish
默认的JSP文件采用ISO-8859-1编码,需改为中文支持GB18030:window-Preferences-Web-JSP Files-Encodeing、选择Chinese,National Standard-Apply
4)JSP页面顶端出现“红色”的报错信息:The superclass
"javax.servlet.http.HttpServlet" was not found on the Java Build Path
解决方法:
(1)右击first工程-属性或Build Path-Java Build Path-Libraries- Add Libray...-Server Runtime -Tomcat7.0 Server
(2)切换到Java Build Path界面中的Orader and Export,选择Tomcat7.0
(3)若打开Server Runtime后一片空白,需要设置Apache服务器:window-Preferences-Server-Runtime Environment -add -选择Apache的7.0版本后点Next,再填入你apache服务器软件的安装(解压后)地址
D:\JavaWeb\apache-tomcat-7.0.69
3、配置Web服务器
1)配置步骤:
Eclipse工作台的其他视图中、选择Servers视图-右击、New/Server-展开Apache节点、选中Tomcat7.0 Server-Next-Finish、在Server视图中显示Tomcat v7.0 Server at localhost[Stopped,Synchronized](表示服务器停止、启用点右下角'运行'按钮)
2)
4、发布项目到Tomcat并运行
1)发布并运行步骤
选中first项目-工具栏中运行按钮、选择Run As/Run on Server-勾选Always use this server when running this project-Finish-即可运行项目
2)浏览器中运行该项目
将URL地址复制到IE地址栏中-回车即可运行
5、JSP基本语法
JSP页面包含指令标识、HTML代码、JavaScript代码、嵌入的Java代码、JSP动作标识和注释
1)指令代码
<%@ 指令名属性1="属性值1" 属性2="属性值2".....%>
Page指令——<%@ page attr1="value1" attr2="value2"....%>,定义整个JSP页面的相关属性
include指令——<%@ include file="path"%>,指定要包含文件的路径;在被包含页面中将<html>,<body>等标记删除
taglib指令——<%@ taglib prefix="tagPrefix" uri="tagURI"%>,声明标签库
2)HTML代码
<html></html>、<head></head>、<body></body>、<title></title>
3)脚本标识(JavaScript代码、嵌入的Java代码)
包含JSP表达式(Expression)、声明标识(Declaration)和脚本程序(Scriptlet) JSP表达式——<%= 表达式 %>,用于向页面输出信息
声明标识——<%! 声明变量或方法的代码 %>,定义全局的变量和方法
代码片段(JavaScript代码、嵌入的Java代码)——<% Java代码或是脚本代码 %>,包含嵌入的Java代码(用于定义变量或流程控制语句)和脚本代码(可应用JSP的内置对象在页面输出内容、处理请求和响应、访问session会话等) 4)JSP动作标识
包含文件标识<jsp:include>——<jsp:include page="url"
flush="false|true">,用于向当前页面中包含其他的文件
5)JSP注释
HTML中的注释——//注释文本,不在网页显示、可在查看网页源代码时看到
带有JSP表达式的注释——//注释内容;/*注释内容*/
Java的注释——//注释内容;/*注释内容*/
隐藏注释——<%-- 注释内容 --%>
6、JSP内置对象
内置对象指已经定义好的对象、可直接拿过来使用,包括request、response、session、application、out、pagecontext、config、page和exception 1)request(请求)对象
(1)用于处理HTTP请求中的各项参数;封装了由客户端生成的HTTP请求的所有细节,主要包括HTTP头信息、系统信息、请求方式和请求参数等
(2)各函数应用
getParameter()——获取访问请求参数
setAttribute()——将数据保存到request范围内的变量中
getAttribute()——获取保存在request范围内的变量值
2)response(响应)对象
(1)用于响应客户请求,向客户端输出信息
(2)各函数应用
sendRedirect()——将网页重定向到另一个网页
setHeader()、setDateHeader()——可设置HTTP响应报头、包括禁用缓存、设置页面自动刷新和定时跳转网页
3)session(会话)对象
(1)在应用程序的Web页面间进行跳转时,可以保存用户的状态,使整个用户会话一直存在下去,直到关闭浏览器
(2)各种函数应用
setAttribute()——将信息保存在session范围内
getAttribute()——获取保存在session范围内的信息
removeAttribute()——将对象从seesion中移除
invalidate()——用于销毁session
4)application(公用数据)对象
(1)用于保存所有应用程序中的公有数据
(2)各函数应用
getInitParameter()——用于返回已命名的参数值
getAttributeNames()——用于返回所有已定义的应用程序初始化参数名的枚举
5)out(输出)对象
(1)用于在Web浏览器内输出信息、并管理应用服务器上的输出缓冲区
(2)各函数应用
print()——用于向客户端浏览器输出信息
println()——用于向客户端浏览器输出信息、同时输出一个换行符
clear()、clearBuffer()——用于管理输出缓冲区
6)pageContext(页面上下文)对象
获取页面上下文,获取JSP页面的request、reponse、session、application、exception等对象
7)config(配置)对象
用于取得服务器的配置信息
8)page(页面)对象
代表JSP页面本身,可看作this关键字的别名
9)exception(异常)对象
用来处理JSP文件执行时发生的所有错误和异常,只有在page指令中设置为isErrorPage属性值为true的页面中才可以被使用
7、JavaBean技术
即可重复使用的类,用于实现一些业务逻辑或封装一些业务对象
1)JavaBean的应用
获取或设置JavaBean属性,通过JSP动作标签<jsp:useBean>、
<jsp:getProperty>、<jsp:setProperty>来实现对JavaBean对象的操作,但所编写的JavaBean对象一定要遵循JavaBean规范
2)Jsp中应用JavaBean
8、Servlet技术
9、Mysql数据库
1)下载
1025598775@/137****Cw*
Downloads-Community-MySQL Community Server-Windows(x86,32-bit) ZIP Archive-Download
2)安装
(1)解压mysql-5.6.30-win32.zip文件,放JavaWeb开发根目录下
(2)配置默认文件:在mysql-5.6.30-win32(我已改为mysql)目录下,新建my.ini文件(内容为以下代码)
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8
[mysqld]
#设置3306端口
port = 3306
# 设置mysql的安装目录
basedir=D:\JavaWeb\mysql
# 设置mysql数据库的数据的存放目录
datadir=D:\JavaWeb\mysql\data
# 允许最大连接数
max_connections=200
# 服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
(3)安装mysql服务
以管理员身份(我的系统是32位win7)运行cmd.exe,输入D:-cd
D:\JavaWeb\mysql\bin(切换到你解压文件的bin目录)-输入mysqld install(出现安装成功就OK)-输入net start mysql启动服务
(4)打开MySQL
cmd-目录切换到D:\JavaWeb\mysql\bin-"输入mysql -uroot -p密码(密码默认为空)"-即可打开mysql
说明:配置自动切换bin目录,我的电脑-属性-高级系统设置-环境变量-path-编辑-添加bin目录、以分号结束(D:\JavaWeb\mysql\bin;)
10、安装MySQL图形化客户端SQLyog
(1)下载
SQLyog安装文件SQLyog_9.6.3.zip
(2)安装
安装位置:C:\Program Files\SQLyog,先安装SQLyog-9.6.3-0.exe,再安装SQLyog_Patch.exe
(3)配置
新建-MySQL-我的SQL主机地址(localhost)-用户名(root)-密码()-端口(3306)-连接-即可使用
11、SQLyog使用
(1)MySQL系统数据库和用户数据库
系统数据库:
Information_schema:存储系统中的数据库对象信息,如用户表信息、列信息、权限信息、字符集信息和分区信息等
Mysql:存储系统的用户权限信息,是核心数据库
Performance_schema:存储数据库服务器性能参数
Test:测试数据库
用户数据库:
userdatabase:用户根据需要自己创建的数据库。
数据库对象,主要包括表、视图、存储过程、函数、触发器和事件等。
数据库的数据,指数据库对象中的具体数据。
(2)修改root@localhost密码
打开SQLyog-用户管理器-选中root@localhost用户-修改密码
12、数据库相关操作(图形工具SQLyog)
以设计清爽夏日九宫格日记网为例(Javaweb从入门到精通第21章)
MySQL具体操作参考(MySQL数据库应用从入门到精通第二版)
1)创建数据库
在对象资源管理器中,右键选择"创建数据库"-输入数据库名称
db_9griddiary、用户名root\密码为空-创建
2)删除数据库(不操作)
在对象资源管理器中,选中数据库-右击-更多数据库操作-删除数据库
3)创建表
在对象资源管理器中,右击db_9griddiary数据库-创/建-表-输入表名和各字段名称-保存
4)删除表(不操作)
在对象资源管理器中,右击tb_user表-更多表操作-从数据库删除表-是5)修改表名、增加字段、删除字段、修改字段(不操作)
略
6)设置表的约束
NOT NULL(非空)、DEFAULT(默认值)、UNIQUE KEY(唯一)、PRIMARY KEY(主键)、AUTO_INCREMENT(自动增加)、FOREIGN_KEY(外键) 主键设置:外键?勾选;自增?勾选
13、JDBC连接数据库
1)JDBC驱动包下载并安装
/products/connector/
JDBC Driver for MySQL(Connector/J)-Download-下载"mysql-connector-java-5.1.39.zip"文件-解压-将"mysql-connector-java-5.1.39-bin.jar"文件复制到
D:\JavaWeb\mysql目录下
2)创建数据库与表
参考上面第12点(已完成):数据库db_9griddiary、表tb_user
表tb_user添加两条记录"张三、李四"
3)Eclipse中创建项目
参考上面第2点(已完成):Javaweb项目"First"
4)First项目目录含义(Project Explorer视图):
JAX-WS Web Services
Deployment Descriptor:test
Java Resources
src
Libraries
Apache Tomcat v7.0[Apache Tomcat v7.0]
EAR Libraries
JRE System LIbrary[JavaSe-1.8]
Web App Libraries
JavaScript Resources
bulid
WebContent
META-INF
WEB-INF
lib
index.jsp
说明:
JAX-WS Web Services[Web服务]——Eclipse从项目中检测到的JAX WebService,即Web服务
Deployment Descriptor:first[部署器]——根据web.xml生成,里面的内容是和web.xml对应,包括servlet、listener、filter等
Java Resources[Java资源]——源代码和源代码所依赖的库(jar包)
JavaScript Resources[Js资源]——JavaScript资源,即js库和脚本
JRE System Library[JavaSe-1.8]——存放J2SE的标准jar,一般不需要调整
Web App Libraries——作用是让Eclipse导出war包的时候,会把其目录下的所有jar或者项目中的工程引用都导出到WEB-INF/lib文件夹下Referenced Libraries(暂无)——存放第三方的jar包、即自己导入的jar包
.settings——存放项目的配置文件
注意:上述目录结构为Project explorer,可改为Navigator(适合初学者),Windows-Show View-Navigator
5)添加"mysql-connector-java-5.1.39-bin.jar"MySQL驱动程序
(1)添加到First项目下
First项目-Properties-Libraries-Add External JARs...-
D:\JavaWeb\mysql\mysql-connector-java-5.1.39-bin.jar-确定
(2)添加到Tomcat下
将mysql-connector-java-5.1.39-bin.jar拷贝到D:\JavaWeb\apache-tomcat-7.0.69\lib下
将mysql-connector-java-5.1.39-bin.jar拷贝到Eclipse对象资源管理器的Liraries\Apache Tomcat v7.0[Apache Tomcat v7.0]下
注意:JDBC.java文件中的Class.forName("com.mysql.jdbc.Driver"),其中Driver首字母必须大写
6)编写测试文档
(1)文档说明:* Libraries(库容器)-*.jar(Java归档文件)-图标"田"对应的包文件(package\包)-*.class(类文件)
(2)主页index.jsp中编写运行(参考JDBC.java中try...catch内容)
14、JavaWeb标识符
1)HTML标识
<html></html>——html标记,HTML页面的所有标记都放其中
<head></head>——head标记,放置HTML文件的信息
<title></title>——页面标题标记,被定义在<head>标记里\
<body></body>——主体标记,HTML页面的所有内容都放其中
<form></form>——表单标记,定义处理表单数据程序的URL地址等信息
语法:<form action="AddBook.jsp" method="post" name="name" onSubmit="return check(this)" target=""> </form>
<input></input>——表单输入标记,通过该标记可向页面添加单行文本、多行文本、按钮等
语法:<input type="image" disabled="disabled" checked="checked"
width="digit" height="digit" maxlength="digit" readonly="" size="digit" src="uri" usemap="uri" alt="" name="checkbox" value="checkbox"></input>
<table></table>——表格标记,用于存储数据
语法:<table width="318" height="167" border="1" align="center" bgcolor=""> </table>
<caption></caption>——表格标题标记
<th></th>——表格表头标记
<tr></tr>——表格行标记,一组<tr>标记表示表格中的一行
<td></td>——表格单元格标记(列标记),一个<tr>标记中可以嵌套若干个<td>标记
<h1></h1>、<h2></h2>...——页面body部分各标题标记
<p></p>——页面body部分段落标记,在段前和断后各添加一个空行
<br>——换行标记(单独标记),放在需换行的位置末
<hr>——表示一条横线
<select> <option>***</option> </select>——下拉列表框标记,其中
<option>标记向列表中添加内容
语法:<select name="name" size="digit" multiple="multiple"
disabled="disabled"> <option>***</option> </select>
<textarea></textarea>——多行文本标记,出现在<form>标记的标记内容中
语法:<textarea cols="digit" rows="digit" name="name" disabled="disabled" readonly="readonly" wrp="hard">****</textarea>
<a href=""></a>——超链接标记,实现从一个页面跳转到另一个页面
<img></img>——图片标记,实现在页面中添加图片
语法:<img src="uri" width="" height="" border="" alt="提示文字"></img>
2)JSP标识
(1)指令标识(设定整个JSP页面的相关信息)
<%@ page %>——定义整个JSP页面的相关属性,包含15个属性
语法:<%@ page language="java" import="java.util.*"
pageEccoding="GB18030" contentType="text/html;charset=UTF-8" session="true" buffer="128kb" autoFlush="true" isErrorPage="true"
errorPage="error/loginErrorPage.jsp" %>
<%@ include %>——文件包含指令,路径可以是相对路径或绝对路径;此外index.jsp文件包含top.jsp、copyright.jsp文件时,top.jsp等被包含文件中将<html>、<body>等标记删除
语法:<%@ include file="path"%>
<%@ taglib %>——标签库指令,声明页面中所使用的标签库
语法:<%@ taglib prefix="c" uri="/jsp/" %>
(2)动作标识
<jsp:include>——包含文件标识,注意与include指令的区别(两者相同又有区别);注意被包含文件中将<html>、<body>等标记删除
语法:<jsp:include page="url" flush="true"/>
<jsp:forword>——请求转发标识,可将请求转发到其他的Web资源(如另一个JSP页面或HTML页面),
语法:<jsp:forword page="url"/>
<jsp:param>——传递参数标识,可以作为其他标识的子标识,用于为其他标识传递参数
语法:<jsp:param name="userId" value="7"/>
(3)脚本标识
<%= 表达式 %>——JSP表达式,用于向页面输出信息;"="前无空格
<%! 声明变量或方法的代码 %>——声明标识,用于在JSP页面中定义全局的变量或方法
<% Java代码或JavaScript代码 %>——嵌入的Java代码、JavaScript代码
(4)JSP注释
//注释文本——单行注释
/* 注释文本 */——多行注释
/** 注释文本 */——提示文档注释
/%-- 注释文本 --*/——隐藏注释
15、Java类、对象知识
1)Java类
class Person //声明并定义Person类
{
String name; //定义变量
int age; //定义变量
void talk() //定义方法
{}
}
Person p = new Person(); //用Person类实例化对象p
(1)类的封装
Private String name;
Private int age; //封装即将变量定义前加Private进行私有化
(2)类的继承
Class Student extends Person //使用extends实行继承
其中子类Student(只需定义属性school)、父类Person(属性name、age),这样Student类也可以使用父类Person中的属性;
Java继承只能直接继承父类中的公有属性和公有方法,但私有属性不可用;
Java支持单继承和多层继续,但不支持多继续
(3)类的多态
Person p = new Student(); //父类对象通过子类实例化
2)对象
Person p = new Person(); //p即为一个对象
3)抽象类
abstract class Person //定义抽象类
{
String name;
int age;
void talk() //定义一般方法,有方法体
{}
Public abstract String call(); //定义抽象方法,无方法体
}
其中抽象方法只声明了返回值得数据类型、方法名称与所需参数,但没有定义方法体
4)接口
interface Person
{
String name = "张三"; //数据成员必须初始化且为常数
int age = 25;
public abstract String talk(); //方法必须声明为abstract且无方法体
}
5)包package
package demo.java //声明一个包
class Person
{}
class Testpackage
{}
上述声明一般放在类或接口的最上面一行;经过package声明后,Person 类和TestPackage类都将放入demo.java文件夹下
包的命名规则:将域名反转过来作前缀,比如域名是,则包名可以用com.zan开头;在后面增加描述产品名称的字符,如com.zan.video;如果没有域名,可以使用邮箱作前缀,如com.163.caiwenbao.video
一般公司项目可以命名包为"com.公司名.项目名.模块名",个人项目可以为"pers.个人名.项目名.模块名"
16、使用JDBC向数据库db_9griddiary\tb_user表添加数据
1)创建User类、用于封装用户对象信息
对象资源管理器src包下-右击、new package-输入包名称
com.wzpost.girddiary(想写griddiary的、却写成girddiary)-Finish-在对象资源管理器com.wzpost.griddiary上-右击、new class-输入类名User、勾选public(如果要生成主函数,则勾选public static void main(String[] args))-Finish-生成类
User.java文件
2)类User.java文件的编写
(1)注意事项
修改eclipse中的中文字体大小:菜单栏Windows-Preferences-Genneral-Appearance-Colors and Font-Basic-Text Font-(Courier new)-大小14-确定数据库Mysql中定义的数据类型Varchar在Eclipse中对应于数据类型String
方法定义"public String getusername(){}"前面的数据类型String,指返回值的数据类型
(2)User.java基本架构
package com.wzpost.girddiary; //声明所在的包
public class User {
private int id; //编号
private String username; //用户名
private String pwd; //密码
private String email; //E-mail
private String question; //密码提示问题
private String answer; //提示问题答案
private String city; //所在地
public int getId(){
return id;
}
public void setId(int id){
this.id = id;
}
//省略部分setxxx()与getxxx()方法
}
3)index.jsp页面的编写
用于放置添加用户信息所需的表单,该表单提交到AddUser.jsp页面进行处理
(1)注意事项
<!DOCTYPE **** >——位于HTML文档的第一行、在<html>标签之前,它指示web浏览器关于页面使用哪个HTML版本进行编写的指令<meta *** >——位于<head>和<title>之间,用来描述一个HTML网页文档的属性,例如作者、日期和页面描述等
<form onsubmit="return check(this);">——指点击提交按钮时,先调用check(this)方法,这个时候表单还没有提交;若返回值为真则提交,返回值为假时不提交
<input *** />——在HTML规范中,单独存在的标签是不需要使用/来自我关闭的,比如<br>、<input>、<hr>等等这样的标签都是符合语法的;在
XHTML规范中,单独存在的标签要按照XML的语法规则进行自我关闭,上面三个标签就应写成<br/>、<input />、<hr />。
(2)index.jsp基本架构
<%@ page language="java" contentType="text/html; charset=GB18030" pageEncoding="GB18030"%>
<%@ page import="java.sql.*"%>
<%@ page import="com.wzpost.*"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GB18030">
<title>主页</title>
</head>
<body>
<form action="AddUser.jsp" method="post" onsubmit="return check(this);">
<table align="center" width="450">
<tr>
<td align="center" colspan="2">
<h2>添加用户信息信息</h2>
<hr>
</td>
</tr>
<tr>
<td align="right">用户名:</td>
<td><input type="text" name="username" /></td>
</tr>
//省略其他行的设置
</table>
</form>
</body>
</html>
4)JavaBean介绍
(1)JSP+JavaBean开发模式
客户端->Web服务器->JSP页面(HTML代码、CSS代码)->JavaBean组件->业务逻辑处理(字符串处理、数据库操作)->数据库
此处使用JavaBean组件来完成业务逻辑的处理
(2)JavaBean类
JavaBean即一个Java类,但它必须遵守一定的编写规则,如上述User.java文件定义的类。
又如
SimpleBean.java:
package com.myapp.beans;
public class SimpleBean {
private String name;
private String password;
public SimpleBean() { //无参构造函数
System.out.println("*SimpleBean*");
}
public void setName(String name) {
= name;
}
public void setPassword(String password) {
this.password = password;
}
public String getName() {
return ;
}
public String getPassword() {
return this.password;
}
}
JavaBean编码规则:
(a)JavaBean必须放在一个包中;
(b)JavaBean必须声明为public class;
(c)JavaBean的所有属性必须声明为private;
(d)通过set**()和get**()方法设值和取值;
(e)通过JSP调用时,则需一个无参的构造方法;
(f)遵循Java程序的命名规范
(3)JavaBean对象
使用<jsp:useBean>标签实例化JavaBean对象,<jsp:getProperty>标签获取JavaBean中的属性,<jsp:setProperty>标签用于对JavaBean中的属性赋值
<jsp:useBean>标签创建JavaBean对象:
<jsp:useBean id="user" scope="page"
class="com.wzpost.griddiary"></jsp:useBean>
其中id表示对象名、scope表示对象的作用范围、class表示该对象所属的包和类
<jsp:getProperty>标签用于属性取值:
<jsp:getProperty name="user" property="age" />
其中name表示对象名、property表示对象的属性
<jsp:setProperty>标签用于设置属性值
<jsp:setProperty name="user" property="*" />
其中name表示对象名、property表示对象的属性;"*"表示将表单中传来的值全部自动填充到JavaBean对象里;要实现值得自动填充,必须使表单元素名与JavaBean中的属性名和类型都保持一致
5)AddUser.jsp页面的编写
用于对添加用户信息请求进行处理,该页面通过JDBC所提交的用户信息数据写入到数据库db_9griddiary中
(1)Eclipse创建jsp
对象资源管理器中WebContent-右击-new-other-Web-JSP File-输入页面名称AddUser.jsp-Finish
注意:<%@ page *** charset=GB18030 %>中的charset值应改为
GB18030
(2)注意事项
GB18030与UTF-8的区别:是不同的字符表示方式,其中GB18030是中国制定的标准、UTF-8是国际上组织制定的标准
request.setCharacterEncoding("GB18030");:设置从request中取得的值,该值为GB18030字符格式
(3)AddUser.jsp基本架构
<%@ page language="java" contentType="text/html; charset=GB18030" pageEncoding="GB18030"%>
<%@ page import="java.sql.*"%>
<%@ page import="com.wzpost.*"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content Type" content="text/html;charset=GB18030">
<title>添加结果</title>
</head>
<body>
<% request.setCharacterEncoding("GB18030"); %>
<jsp:useBean id="user"
class="er"></jsp:useBean>
<jsp:setProperty property="*" name="user"/>
<%
try{
Class.forName("com.mysql.jdbc.Driver"); //加载数据库驱动,注册到数据库管理器
String url="jdbc:mysql://localhost:3306/db_9griddiary"; //数据库连接字符串
String username="root";
//数据库用户名
String password="root";
//数据库密码
Connection
conn=DriverManager.getConnection(url,username,password); //创建Connection连接
String sql="insert into
tb_user(username,pwd,email,question,answer,city) values(?,?,?,?,?,?)";
PreparedStatement ps = conn.prepareStatement(sql);
//获取PreparedStatement
ps.setString(1,user.getusername());
ps.setString(2,user.getpwd());
ps.setString(3,user.getemail());
ps.setString(4,user.getquestion());
ps.setString(5,user.getanswer());
ps.setString(6,user.getcity());
int row = ps.executeUpdate();
//执行更新操作,返回所影响的行数
if(row>0){ //判断是否更新成功
out.print("成功添加了"+row+"条数据!");
//更新成功输出信息
}
ps.close(); //关闭PrepareStatement
conn.close(); //关闭Connection
}catch(Exception e){
out.print("用户信息添加失败");
e.printStackTrace();
}
%><br>
<a href="index.jsp">返回</a>
</body>
</html>
注意事项:
(a)使用JDBC时,要添加<%@ page import="com.wzpost.*"%>
(b)假如有报错,可以看其他视图-Servers-查看报错提示
(c)使用PreparedStatement对象,其SQL语句中的参数可以使用占位符"?"代替
(d)在执行数据库操作后,应该立即调用ResultSet对象、PreparedStatement对象、Connection对象的Close()方法,释放资源
17、JSP高级知识
1)Servlet技术
(1)概念
Servlet是使用Java Servlet接口(API)运行在Web应用服务器上的Java程序,不但可以处理HTTP请求中的业务逻辑,而且可以输出HTTP代码来显示指定页面。
(2)区别
Servlet技术先于JSP产生,但JSP优于Servlet技术
(3)特点
通常所说的Servlet是指HttpServlet对象,在声明一个对象为Servlet 时,需要继承HttpServlet类,可以重写HttpServlet类中的方法对HTTP请求进行处理
参考"JavaWeb从入门到精通"-168页
2)Ajax技术
(1)Ajax开发模式
页面中用户的操作将通过Ajax引擎与服务器端进行通信,然后将返回结果提交给客户端页面的Ajax引擎,再由Ajax引擎来决定将这些数据插入到页面的指定位置。
客户端->Ajax引擎->Web应用服务器
(2)优点
在Ajax应用开发模式中通过JavaScript实现在不刷新整个页面的情况下,对部分数据进行更新,可降低流量提高用户体验
参考"JavaWeb从入门到精通"-298页
3)JSTL标签
(1)概念
JSTL叫做标准标签库,包括5个不同的标签库:核心标签库、格式标签库、SQL标签库、XML标签库和函数标签库等
(2)优点
JSTL标签可取代传统JSP程序中嵌入的Java代码,提高程序维护性。
例如
<c:out>输出标签=JSP的表达式<%=表达式%>,用于将表达式的值输出到JSP页面中
4)EL(表达式语言)
(1)优点
EL表达式语言可取代传统JSP程序中嵌入的Java代码片段,提高程序维护性,通常与JSTL一同使用
格式:${username}
(2)例子
在JSP页面中显示保存在session范围内的变量username,并将其输出到页面中
<% if(session.getAttribute("username")!=null){
out.println(session.getAttribute("username").toString())
}%>
如果使用EL,则非常简洁为
${username}
18、CSS样式表
1)概念
CSS是弥补HTML在显示属性设定上的不足而制定的一套扩展样式标准,简化了页面中文字样式的设计
2)CSS选择器
常用的有标记选择器、类别选择器、id选择器
(1)a{}——标记选择器(声明页面中哪些标记(<a>标记)采用哪些CSS样式)
格式:<style> a{font-size:9px;color:#F93;} </style>
(2).one{} .two{}——类别选择器(声明多种CSS样式可供选择)
格式:<style>
.one{font-size:9px;color:#F93;} //定义了CSS样式
.two{}
...
</style>
<body>
<h2 class="one">应用了选择器one</h2> //使用了CSS样式
<p>正文内容1</p>
</body>
此处通过class属性选择CSS样式
(3)#first{} #second{}——id选择器(不能包含两个相同的id标记)
格式:<style>
#first{font-size:9px;color:#F93;} //定义了CSS样式
#second{}
...
</style>
<body>
<h2 id="first">ID选择器</h2> //使用了CSS样式
<p>正文内容1</p>
</body>
3)CSS实际应用形式
(1)行内样式(通过style直接定义在HTML标记之内)
<td><p style="color:#F00;font-size:36px;">行内样式1</p></td>
(2)内嵌式(使用<style></style>标记将CSS样式包含在页面中)
(3)链接式(将CSS样式定义在一单独的文件中,再通过<link>标记引用)
先定义css.css样式表:
h1,h2,h3{ //定义了标题的样式
color:#6CFw;
font-family:Arial,sans-serif
}
p{ //定义段落内容的样式
color:#F0Cs;
font-size:24px;
}
再在HTML页面中引用:
<link rel="styleheet" href="css.css" type="text/css">
19、流行框架Struts2
1)Struts2结构体系
HTTP请求->过滤器链(1ActionContextCleanUp 2其他过滤器如SiteMesh 等 3StrutsPrepareAndExecuteFilter)->拦截器1->拦截器2->拦截器3->Action对象
(核心部分)->Result->视图模板+标签库->拦截器3->拦截器2->拦截器1->HTTP 回应->过滤器链(1StrutsPrepareAndExecuteFilter 2其他过滤器如SiteMesh等
3ActionContextCleanUp )->回到HTTP请求
应用Struts2框架处理HTTP请求的流程图:客户端-发送HTTP请求-Struts2过滤器(StrutsPrepareAndExecuteFilter)-转发到指定的-Action对象(first)-返回到-视图(first.jsp)
2)Struts2下载及安装
(1)下载
Download-Struts2.3.20.3-Full Distribution-选择"struts-2.3.20.3-
all.zip(65MB)[PGP][MD5]"版本
(2)安装
解压"struts-2.3.20.3-all.zip(65MB)[PGP][MD5]"文件-将Struts2的lib目录下的jar包文件(commons-fileupload-1.3.1jar、commons-io-2.2.jar、commons-lang3-3.2.jar、commons-logging-1.1.3.jar、freemarker-2.3.19.jar、javassist-
3.11.0.GA.jar、ognl-3.0.6.1.jar、struts2-core-2.3.20.3.jar、xwork-core-2.3.20.3.jar)复制到Web应用(eclipse-workspace-first项目-WebContent-WEBINF-lib)的"WEB-INF/lib"路径下;
如果需要在DOS或者Shell窗口手动编译Struts2相关的程序,则需要将struts2-core-2.3.20.3.jar和xwork-core-2.3.20.3.jar添加到系统的CLASSPATH 环境变量里(win7-我的电脑-属性-高级系统设置-环境变量-ClassPath变量新建-输入。