JavaWeb程序设计学习笔记整理(3)-含MySQL简单操作

servlet的功能

1)向浏览器响应内容

  • (1)response.setContentType("text/html;charset=utf-8");
    响应到浏览器的内容支持标记,支持CSS属性,同时也能够设置中文乱码问题。
  • (2)PrintWriter pw=response.getWriter();
    pw.println(“你好”);
    pw.write(“<div>你好</div>”);

2)接收浏览器发送过来的请求

  • (1)浏览器发送到服务器端的请求中获取参数值的方法(两种)如下:
    • 方法一:
      请求中参数值的传递格式:

      key1=value1&key2=value2&key3=value3…

      http://localhost:8080/servlettest/registe?username=zs&pwd=aaa
      key值和value值都不一样使用的方法:
      request.getParameter(key) ---> value(String)

    • 方法二:
      请求中参数值的传递格式:

      key=value1&key=value2&key=value3&key=value4…

      key值一样,value值不一样的使用方法:
      request.getParameterValues(key); ---> value(String[])

  • (2)浏览器发送到服务器端的请求中,参数值中文乱码问题
    • ① get请求方式,中文乱码问题
      String s11=new String(s1.getBytes("iso-8859-1"),"utf-8");
    • ② post请求方式,中文乱码问题
      request.setCharacterEncoding("utf-8");

servlet的功能关系图

在这里插入图片描述

浏览器端向服务器端发送请求的方式

(1)get请求方式

浏览器发送get请求的情况:

  • ①在浏览器地址栏输入一个地址回车的请求
  • ②点击超链接
    <a href=”http://www.baidu.com”>你好</a>
    <a href=”url-pattern的地址”>hello</a>当点击hello,发送的请求是url-pattern对应的servlet。
    <a href=”url-pattern地址?key1=value1&key2=value2...”>hello</a>
  • ③表单默认提交,或者设置属性method=”get”

get请求方式,会将数据在浏览器地址栏上一起发送,提交的数据只能是少量的数据,因为数据会显示在浏览器地址栏上,数据相对来说不安全,但是效率高一些。

(2)post请求方式

浏览器发送post请求的情况:

  • ①表单提交,需要设置表单属性method=”post”

post请求方式,会将数据封装在一个包中,随着请求一起发送,浏览器地址栏是看不到这些数据的,这种方式可提交大量数据,相对比较安全,但是效率相对低一些。

代码部分:

HelloServlet.java

import java.io.IOException;
import java.io.PrintWriter;
import java.util.Date;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
//该类表示在服务器端的一个servlet类
public class HelloServlet extends HttpServlet {
	
	//调出service方法
	//service Alt + / 快捷键自动提示
	//                                  请求                                                              响应
	protected void service(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		//request参数:用于接受浏览器端发送过来的请求
		//response参数:用于向浏览器端响应
		
		//向控制台Console输出HelloServlet
		System.out.println("HelloServlet"); 
		//向页面(浏览器端)响应内容HelloServlet
		PrintWriter o = response.getWriter();
		o.println("HelloServlet1");
		o.println("HelloWorld");
		
		//在servlet中通过java代码创建Date日期
		//Date d = new Date();
		//将创建的日期d输出在页面上
		//o.println(d);
		//等价写法
		o.println(new Date());
	}
	
}

RegisteServlet.java

package com.bzxy.test;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Arrays;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
//表示服务器端的一个servlet,该servlet主要功能是接收浏览器端registe.html页面
//发送过来的请求和请求中包含的参数
//浏览器端(页面)  <==>   服务器端(servlet)  <==>   服务器端(数据库)
public class RegisteServlet extends HttpServlet{
	
	//调用service方法
	protected void service(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		//接收参数之前设置中文编码 -- 支持post请求方式
		/*对应registe.html的<form action="registe" method="post">*/
		request.setCharacterEncoding("utf-8");
		
		//System.out.println("测试...");
		//未添加以下代码时,访问网址http://localhost:8080/servlettest/registe.html
		//点击提交之后,页面空白,网址变为:http://localhost:8080/servlettest/registe?username=...&pwd=...&smt=...
		
		//##用户名用英文输入,否则乱码,需进一步处理
		//request请求;response响应
		//http://localhost:8080/servlettest/registe?username=zs&pwd=aaa
		//通过request接收请求参数的值
		String s1 = request.getParameter("username");
		//如果是get请求方式提交的值是中文,s1是乱码,也就是??????
		//浏览器如果采用的是get方法提交的数据,编码默认采用的是"iso-8859-1"编码
		//通过String字符串类进行编码的转换,由"iso-8859-1"编码转换为"urf-8"编码
		//你好 -用-> iso-8859-1 -解码-> 011100111111... -用-> utf-8 -重新生成-> 你好 
		//getBytes 获得
		String s11 = new String(s1.getBytes("iso-8859-1"), "utf-8");
		String s2 = request.getParameter("pwd");
		//http://localhost:8080/servlettest/registe
		//?username=zs&pwd=aa&
		///love=readbook&love=write&love=playbook&smt=%E6%8F%90%E4%BA%A4
		//String[]表示字符串类型的数组,该数组中应该存储4个value值
		String[] s3 = request.getParameterValues("love");
		/*对应registe.html的<a href="registe?username=ls&pwd=123&love=ds&love=xz&id=1001">点我可访问RgisteServlet</a>*/
		//接收超链接请求中参数值 id = 1001
		//String s4 = request.getParameter("id");
		
		//用户名输入:你好
		System.out.println("原始:" + s1); //原始:??????
		System.out.println("转码后:" + s11); //转码后:你好
		
		//在获取PrintWriter之前写上中文编码设置
		response.setContentType("text/html;charset=utf-8");
		//设置之后,println不起效果,只能用标记换行 两种方式:可自己加换行,也可自己直接输出换行
		
		//通过response向页面返回结果
		PrintWriter pw = response.getWriter();
		pw.println("<div style='color:red;'>以下为通过response向页面的返回结果:</div>");
		pw.println("<br/>");
		//pw.println(s1 + "<br/>");
		pw.println(s11 + "<br/>");
		pw.println(s2 + "<br/>");
		//s3 --> readbook write playball online
		//下标       0		1		2		3
		//若多选项选择包含readbook,则显示readbook
		pw.println(s3[0] + "<br/>"); //根据下标对应的内容输出
		//若四个多选项都选择,则显示[readbook, write, playbook, online]
		pw.println(Arrays.toString(s3)); //借助于toString方法,可直接将数组中所有的内容输出
		//pw.println(s4);
	}
	
}

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
	http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
	<welcome-file-list>
		<welcome-file>index.jsp</welcome-file>
	</welcome-file-list>

	<!-- 对com.bzxy.test包下的HelloServlet进行配置 -->
	<servlet>
		<servlet-name>hello</servlet-name> <!-- 对要配置的Servlet起别名 -->
		<servlet-class>com.bzxy.test.HelloServlet</servlet-class> <!-- 配置的Servlet的位置,写所在的包名+类名即可 -->
	</servlet>
	<servlet-mapping>
		<servlet-name>hello</servlet-name> <!-- 要和上面的servlet-name的内容保持一致 -->
		<url-pattern>/ho</url-pattern> <!-- 浏览器访问服务器端servlet的url地址 -->
	</servlet-mapping>

	<!-- 对com.bzxy.test包下的RegisteServlet进行配置 -->
	<servlet>
		<servlet-name>RegisteServlet</servlet-name> <!-- 对要配置的Servlet起别名 -->
		<servlet-class>com.bzxy.test.RegisteServlet</servlet-class> <!-- 配置的Servlet的位置,写所在的包名+类名即可 -->
	</servlet>
	<servlet-mapping>
		<servlet-name>RegisteServlet</servlet-name> <!-- 要和上面的servlet-name的内容保持一致 -->
		<url-pattern>/registe</url-pattern> <!-- 浏览器访问服务器端servlet的url地址 -->
	</servlet-mapping>
</web-app>

registe.html

<!-- 版本信息 -->
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
		<title>Insert title here</title>
	</head>
	<body>
		<!-- action="" 表示点击提交按钮此表单会向哪个servlet发送请求,双引号中写哪一个url-pattern地址,
		此表单就会向哪一个servlet发送请求。【访问页面,点击提交,成功访问到RegisteServlet】-->
		<!-- 默认浏览器地址栏中会显示数据,method="get";而不显示则修改为,method="post" -->
		<form action="registe" method="get">
			用户名:<input type="text" name="username"/>
			<br/>
			密码:<input type="password" name="pwd"/>
			<br/>
			兴趣爱好:读书<input type="checkbox" name="love" value="readbook"/>
				        写字<input type="checkbox" name="love" value="write"/>
				        打球<input type="checkbox" name="love" value="playball"/>
				        上网<input type="checkbox" name="love" value="online"/>
			<br/>
			<input type="submit" name="smt" value="提交"/>
		</form>
		
		<!-- 测试超链接的请求方式 -->
		<a href="http://www.baidu.com">你好</a>
		<br/>
		<!-- 没有传递参数,username接收为空,异常为NullPointerException -->
		<!-- <a href="registe">hello</a> -->
		<a href="ho">hello</a>
		<br/>
		<a href="registe?username=ls&pwd=123&love=ds&love=xz&id=1001">点我可访问RegisteServlet</a>
	</body>
</html>

效果图

若在浏览器中输入http://localhost:8080/servlettest/registe.html,则如图下显示:
在这里插入图片描述
点击超链接 你好,则如图下显示:
在这里插入图片描述
点击超链接 hello,则如下图显示:
在这里插入图片描述
在这里插入图片描述
点击超链接 点我可访问RgisteServlet,则如下图显示:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
点击表单中信息,如:输入用户名,密码及选择兴趣爱好,点击 提交,则如下图显示:
在这里插入图片描述
在这里插入图片描述

数据库 --> MySQL数据库 – 免安装版本的

打开命令行窗口进行操作:

window+R–>cmd或者左下角搜索->cmd

效果图:

在这里插入图片描述

命令行窗口中简单的操作命令:
1)切换某个盘 d:回车 e:回车 f:回车
2)dir命令:等价于linux系统中的ls命令,查看当前路径下的所有内容。
3)cd命令:进入目录,或者返回上一级目录
cd … 返回上一级目录
cd xx 进入xx目录

免安装版本的MySQL数据库的启动方式

(1)启动MySQL服务

通过命令行窗口的方式,进入MySQL文件夹中的bin目录中,
输入命令:mysqld --console,该命令启动MySQL服务,服务启动后
该命令行窗口不要关闭。

效果图:

在这里插入图片描述

(2)登陆MySQL数据库

重新打开一个新的命令行窗口,同样进入MySQL文件夹中的bin目录
输入命令:mysql -h localhost -u root -p,没有密码,直接回车登陆即可。
mysql -h主机地址 localhost本机 -u用户名 root默认的最高权限用户名 -p用户密码

效果图:

在这里插入图片描述

登陆MySQL成功:

显示 mysql>

步骤总结:

在这里插入图片描述

MySQL数据库的简单操作

(1)先操作库

  • ① 查看所有的库 show databases;
    例:
    在这里插入图片描述
  • ② 删除一个库 drop database 库名;
    注意:(information_schema、mysql和test不要删除)
    例:
    在这里插入图片描述
    检查:
    在这里插入图片描述
  • ③ 创建一个库 create database 库名;
    例:
    在这里插入图片描述
    检查:
    在这里插入图片描述
  • ④ 使用一个库 use 库名;
    例:
    在这里插入图片描述
  • ⑤ 查看使用的是哪个库 select database();
    在这里插入图片描述
  • ⑥ 查看当前使用的库下所有的表 show tables;
    注意:对表及表中数据操作前必须先使用某一个库
    在这里插入图片描述

(2)在库下操作表以及表中的数据

  • ① 创建一个表 create table 表名;
    例:
    在这里插入图片描述
    可查看库下表:
    在这里插入图片描述

代码部分如下:

create table emp(
     id int primary key,
     name varchar(10),
     pwd char(10),
     salary double,
     birthday date
);
  • ② 查看表结构 desc 表名;
    例:
    在这里插入图片描述
  • ③ 关于表中数据的增删改查操作
    插入数据:
    例:
    在这里插入图片描述
    另外一种插入日期的形式:
    在这里插入图片描述
    查询数据:
    查看表中所有信息:
    在这里插入图片描述
    查看表中id,name中信息:
    在这里插入图片描述
    修改数据:
    在这里插入图片描述
    查看是否修改:
    在这里插入图片描述
    删除数据:
    在这里插入图片描述
    查看是否修改:
    在这里插入图片描述

代码部分:

insert into emp values(1, ’zs’, ‘abc123’, 30002.3,2020-04-03);
insert into emp values(2,'ls','123456',6430.32,20200404);
select * from emp;
update emp set salary=643.32 where id=2;
delete from emp where id=1;

介于与Oracle数据库类似不赘述很多,Oracle具体使用方法可点击本处了解更多

<>人民邮电出版社的教程哦,所以,好书,你懂的!! 第1章web应用开发简介 1 1.1何为web应用 1 1.1.1web的概念及发展 1 1.1.2web应用程序 2 1.2使用java开发web应用 3 1.2.1面向对象的编程语言 3 1.2.2丰富的框架技术 4 1.2.3xml、css的应用 4 1.2.4使用javascript与ajax提升用户体验 7 1.3多种集成开发环境 9 1.3.1集成开发环境简介 9 1.3.2web应用服务器说明 11 本章小结 14 课后练习 14 第2章 javaee运行及开发环境 15 2.1jdk的下载与安装 15 2.1.1jdk的下载与安装 15 2.1.2配置环境变量 17 >2.2tomcat的下载与安装 19 2.2.1下载并安装tomcat服务器 19 .2.2.2基本配置 22 2.2.3服务器页面介绍 23 2.3eclipse的下载与安装 24 2.3.1eclipse的下载与安装 24 2.3.2熟悉eclipse开发环境 24 2.4项目实战——第一个javaee应用:helloworld 28 2.4.1开始创建第一个javaee应用 28 2.4.2熟悉helloworld框架结构 29 本章小结 32 课后练习 32 第3章jsp和servlet 33 3.1开发第一个jsp+servlet应用 33 3.1.1创建工程 33 3.1.2编写程序 34 3.1.3部署应用 35 3.2认识jsp 36 3.2.1jsp的工作原理 37 3.2.2jsp注释方式 37 3.2.3jsp声明方式 38 3.2.4jsp表达式的应用 39 3.2.5jsp的脚本段 39 3.2.6jsp的编译指令 40 3.2.7jsp的动作指令 41 3.2.8jsp的内置对象 43 3.3认识servlet 46 3.3.1servlet的开发 46 3.3.2使用httpservlet 47 3.3.3servlet的生命周期 49 3.3.4load-on-startupservlet 50 3.4自定义标签库 51 3.5预处理用户请求:filter 53 3.6使用listener 56 3.7项目实战——用户登录 59 本章小结 62 课后练习 63 第4章sql与jdbc 64 4.1sql 64 4.1.1sql概述 64 4.1.2ddl与dml简介 64 4.1.3sql使用方法 65 4.2jdbc 67 4.2.1jdbc概述 67 4.2.2jdbc驱动程序 68 4.2.3使用jdbc读取数据 69 4.3项目实战——存储图书信息 73 本章小结 78 课后练习 79 第5章struts2框架基础 80 5.1mvc框架 80 5.1.1model1与model2 80 5.1.2mvc设计模式 81 5.1.3struts2框架的mvc架构 82 5.2struts2概览 84 5.2.1struts2的工作流程 84 5.2.2struts2的简单应用 85 5.3struts2基础 87 5.3.1action详解 88 5.3.2结果与视图 91 5.3.3struts.xml的配置 94 5.4值栈与ognl表达式 100 5.5struts2的标签库 103 5.5.1控制标签 103 5.5.2数据标签 104 5.5.3表单标签 105 5.5.4非表单ui标签 107 本章小结 108 课后练习 109 第6章struts2高级应用 110 6.1拦截器 110 6.1.1拦截器工作机制 110 6.1.2拦截器及拦截器栈的应用 111 6.1.3自定义拦截器 115 6.2类型转换器 117 6.2.1struts2内置类型转换器 117 6.2.2引用类型的转换方式 117 6.2.3特殊对象的类型转换 118 6.2.4类型转换的错误处理 121 6.3输入校验 123 6.3.1输入校验的必要性 123 6.3.2编程方式实现输入校验 125 6.3.3应用struts2输入校验框架 128 6.3.4自定义校验器 130 6.4国际化 131 6.4.1国际化实现原理 131 6.4.2准备国际化资源文件 131 6.4.3调用国际化资源文件 134 6.5上传和下载 135 6.5.1文件上传的实现原理 135 6.5.2struts2文件上传实现方式 136 6.5.3struts2文件下载实现方式 141 本章小结 143 课后练习 144 第7章 struts2中应用模板语言 145 7.1模板语言简介 145 7.2应用velocity 146 7.2.1velocity基础 146 7.2.2struts2对velocity的支持 153 7.3应用freemarker 155 7.3.1freemarker基础 155 7.3.2struts2整合freemarker 166 7.3.3使用struts2标签设计模板 170 7.4freemarker与velocity的比较 171 本章小结 171 课后练习 172 第8章hibernate框架基础 173 8.1orm简介 173 8.1.1应用orm的意义 173 8.1.2流行的orm框架 174 8.2准备hibernate运行环境 174 8.2.1下载与安装hibernate 175 8.2.2hibernate发布包介绍 175 8.3认识hibernate 176 8.3.1hibernate框架结构 176 8.3.2hibernate配置文件 177 8.3.3configuration与sessionfactory 178 8.3.4session类 179 8.3.5hibernate中的关联关系 179 8.3.6hibernate映射文件 180 8.3.7hibernate工作原理 182 8.4项目实战——新闻内容显示 183 本章小结 186 课后练习 187 第9章hibernate查询 188 9.1hibernate的数据检索策略 188 9.1.1立即检索 188 9.1.2延迟检索 189 9.1.3预先检索 190 9.1.4批量检索 191 9.2hibernate的数据查询方式 193 9.2.1hql方式 193 9.2.2qbc方式 194 9.2.3原生sql方式 195 9.3hibernate的关联查询 196 9.3.1一对一关联关系的使用 196 9.3.2一对多、多对一关联关系的使用 197 9.3.3多对多关联关系的使用 199 9.4hibernate过滤 201 9.4.1session过滤 201 9.4.2filter过滤 201 9.5项目实战——客户订单管理 202 本章小结 207 课后练习 207 第10章hibernate性能优化 208 10.1hibernate事务与并发 208 10.1.1什么是事务 208 10.1.2hibernate中的事务处理 209 10.1.3在hibernate中使用jta事务 210 10.1.4并发控制 211 10.2hibernate缓存 213 10.2.1缓存的工作原理 213 10.2.2应用一级缓存 214 10.2.3应用二级缓存 214 10.2.4应用第三方缓存 216 10.3项目实战——借还图书 217 本章小结 224 课后练习 224 第11章spring框架基础 226 11.1spring框架概述 226 11.1.1认识spring框架 226 11.1.2spring框架特点 226 11.1.3spring框架核心架构 227 11.2建立spring开发环境 228 11.2.1下载spring框架 228 11.2.2spring发布包与软件包 229 11.2.3创建spring应用环境 230 11.3bean的装配 231 11.3.1bean基本配置 232 11.3.2为bean添加属性 232 11.3.3简化配置 233 11.4理解spring的核心——ioc 234 11.4.1控制反转 234 11.4.2依赖注入的3种方式 236 11.5beanfactory与applicationcontext 238 11.5.1认识beanfactory 238 11.5.2使用applicationcontext 238 11.6项目实战——spring问候程序 239 本章小结 241 课后练习 241 第12章springaop 242 12.1aop基础 242 12.1.1aop与oop的比较 242 12.1.2aop的核心概念 243 12.1.3java动态代理与aop 244 12.1.4springaop简介 245 12.2使用spring的通知 246 12.2.1beforeadvice 246 12.2.2afterreturningadvice 248 12.2.3methodinterceptor 249 12.2.4throwadvice 250 12.3使用spring的切入点 251 12.3.1静态切入点 251 12.3.2动态切入点 253 12.4springaop的代理工厂 253 12.4.1选择合适的代理 253 12.4.2proxyfactory 254 12.4.3proxyfactorybean 254 12.5项目实战——输出日志 256 本章小结 258 课后练习 259 第13章 spring与javaee持久化数据访问 260 13.1spring对dao模式的支持 260 13.1.1统一的数据访问异常 260 13.1.2通用的数据访问模板及抽象支持类 261 13.2spring的jdbc 262 13.2.1为什么需要jdbctemplate 262 13.2.2通过jdbcdaosupport使用jdbctemplate 263 13.2.3jdbctemplate提供的常用数据操作方法 264 13.3spring中的事务处理 265 13.3.1spring事务处理概述 266 13.3.2编程式事务处理 266 13.3.3声明式事务处理 267 13.3.4标注式事务处理 268 13.4项目实战——公司人事管理 269 本章小结 276 课后练习 276 第14章spring与struts2、hibernate框架的整合基础 277 14.1spring与struts2的整合方式 277 14.1.1struts2应用的扩展方式 277 14.1.2spring插件的应用 278 14.2spring和hibernate的整合 279 14.2.1spring对hibernate的支持 279 14.2.2管理sessionfactory 279 14.2.3hibernate的dao实现 281 14.2.4使用hibernatetemplate 281 14.2.5管理hibernate事务 282 14.3项目实战——学生成绩查询系统 283 本章小结 292 课后练习 293 第15章图书馆管理系统 294 15.1系统功能解析 294 15.2系统数据库设计 295 15.2.1数据库分析 295 15.2.2数据表关联关系分析 298 15.3系统框架搭建 300 15.3.1创建工程 300 15.3.2工程目录结构 300 15.4系统代码实现 302 15.4.1数据库连接的实现 303 15.4.2工具类的实现 304 15.4.3管理员登录与退出实现 306 15.4.4系统管理实现 313 15.4.5图书管理实现 319 15.4.6读者管理实现 329 15.4.7借还管理实现 333 15.4.8前台功能实现 336 本章小结 342
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值