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具体使用方法可点击本处了解更多

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值