@JSP @Servlect @Redis 三课的总结。这三课是为下学期框架打基础的.进入JSp编程第二十一课本博文分三部分第一部分回顾你这个学期所学的内容第二部分进行代码实战第三部分写一篇作文MVC

@JSP @Servlect @Redis 三课的总结。这三课是为下学期框架打基础的.进入JSp编程第二十一课本博文分三部分第一部分回顾你这个学期所学的内容第二部分进行代码实战第三部分写一篇作文MVC,第1张

@JSP @Servlect @Redis 三课的总结。这三课是为下学期框架打基础的.进入JSp编程第二十一课本博文分三部分第一部分回顾你这个学期所学的内容第二部分进行代码实战第三部分写一篇作文MVC      

目录

     

本博文:大部分是之前内容。`@JSP @Servlect @Redis 三课的总结。这三课是为下学期框架打基础的.进入JSp编程第二十一课本博文分三部分第一部分回顾你这个学期所学的内容第二部分进行代码实战第三部分写一篇作文MVC

第一部分知识梳理。

 @第一章:上面是大纲内容现在我们来回顾回顾。之前所学习的内容。

A_1Servlect的注册与介绍。

第一部分.Servlect的介绍。

1_1什么是Servlect.

1 Servlet的简介。

2 Servlet优势。

3 Servlet 任务。

1_2Servlect的注册在web.xml文件中。

A_2Servlect的三种形式与生命周期。

1_5Servlet 方法介绍

A_3Servlect常用的七个对象。最常用的六个对象。

第一个对象

ServletConfig对象,用途获取静态数据

设置静态数据的俩种方式。

方案一在web.xml文件中定义。

方案二在servlect中定义。

第二个对象 ServletContext对象。(在jspz中九大内置对象之一)

1:用途:获取共享静态数据,2 获取共享动态数据,3 获取共享文件数据.

定义动态数据的的方案一。

定义动态数据的方案二。

第三个对象 (在jspz中九大内置对象之一)

Response 对象。

1:用途一:将数据发送给浏览器。

2:用途二生成图片的下载。

3:用途三生成随机数。

4 用途四 response.sendRedirect("Servlet2");重定向

第四个对象。(在jspz中九大内置对象之一)

HttpServletRequest

HttpServlet调用HttpResponse的有关方法,生成响应数据,用于服务器上接收浏览器发送过来的数据信息。

request.getRequestDispatcher("Servlet4")    .forward(request, response);

HttpResponse一些用法

这个对象与我之后所讲的JSP四大域有关

 第五个对象(cookie) session(在jsp中属于九大内置对象之一,四大作用域之一)

理解一些基础

第六个对象

过滤器(File)

个人总结:从上面图片过程可以看出:当Servlect与Filter同时创建时,运行服务器首先调用的是Filter中。MyFilter():构造方法<()方法:加载数据。当我改下内容在刷新时你会发现服务器运行以下方法<>

1-2 第二部分观察Servlect与Filter在web.xml注册的相似

Servlet监听器:

第七个对象(扩展内容)

Listener 工作原理

实现了特定接口的类为监听器,用来监听另一个Java类的方法调用或者属性改变;

当被监听的对象发生了方法调用或者属性改变后,监听器的对应方法就会立即执行。

A_4JSP的基础介绍。

## **<%! %>:用于在jsp文件中定义全局变量和方法

## <%= %>:用于在jsp文件中将java中的数据结果显示在html文本中

## <% %>:用于在jsp文件中执行多行代码,包括if,while,for,创建对象等等

## <%-- --%>:用于在jsp文件中的注释

## <%@ %>:用于在jsp文件中 *** 作指令代码**

A_5九大内置对象。

JSP九大内置对象表格。

 九大对象代码解释

A_6四大作用域。

#4 JSP四大作用域。

4_1四大域的范围

pageContext

@1pageContext:pageContext:该对象中存放的数据只能页面自己用

@2request:在请求转发跳转页面的情况下,只能让两个页面之间共享数据

@3session:不切换浏览器的情况下,所有servlet和jsp都能共享这个对象中的所有数据

@4application:服务器不关闭的情况下,所有servlet和jsp都能共享这个对象中的所有数据

这四个对象有共同的点:都要用到setAttribute() getAttribute() removeAttribute()

A_7JavaBean六大标签。

第五部分JavaBean和jsp动作

代码解释。

A_8EL表达式。

代码解释

A_9JSTL标签库。

代码解释

A_9..0MYsql的基础 *** 作。增删改查的回顾。

A_10MVC三层架构。

A_11Redis缓存技术.

1:redis缓存技术(第一课利用windows *** 作系统)

A_12五种数据 *** 作。

A-1String

A-2hash类型:

A-3list类型: 可以添加重复的数据

A-4set类型:不允许添加重复的数据**

A_5sortedset类型:不允许添加重复的数据,而且添加的数据需要进行排序

A-6通用命令:

A_12用java代码 *** 作Redis数据库。


本博文:大部分是之前内容。`@JSP @Servlect @Redis 三课的总结。这三课是为下学期框架打基础的.进入JSp编程第二十一课本博文分三部分第一部分回顾你这个学期所学的内容第二部分进行代码实战第三部分写一篇作文MVC


第一部分知识梳理。


 

 

 

 

 @第一章:上面是大纲内容现在我们来回顾回顾。之前所学习的内容。

A_1Servlect的注册与介绍。
第一部分.Servlect的介绍。 1_1什么是Servlect. 1 Servlet的简介。

它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层。

使用 Servlet,您可以收集来自网页表单的用户输入,呈现来自数据库或者其他源的记录,还可以动态创建网页。

2 Servlet优势。
  • 性能明显更好。

  • Servlet 在 Web 服务器的地址空间内执行。这样它就没有必要再创建一个单独的进程来处理每个客户端请求。

  • Servlet 是独立于平台的,因为它们是用 Java 编写的。

  • 服务器上的 Java 安全管理器执行了一系列限制,以保护服务器计算机上的资源。因此,Servlet 是可信的。

  • Java 类库的全部功能对 Servlet 来说都是可用的。它可以通过 sockets 和 RMI 机制与 applets、数据库或其他软件进行交互。

  • .(java css html mysql jquery )

3 Servlet 任务。
  • 读取客户端(浏览器)发送的显式的数据。这包括网页上的 HTML 表单,或者也可以是来自 applet 或自定义的 HTTP 客户端程序的表单。

  • 读取客户端(浏览器)发送的隐式的 HTTP 请求数据。这包括 cookies、媒体类型和浏览器能理解的压缩格式等等。

  • 处理数据并生成结果。这个过程可能需要访问数据库,执行 RMI 或 CORBA 调用,调用 Web 服务,或者直接计算得出对应的响应。

  • 发送显式的数据(即文档)到客户端(浏览器)。该文档的格式可以是多种多样的,包括文本文件(HTML 或 XML)、二进制文件(GIF 图像)、Excel 等。

  • 发送隐式的 HTTP 响应到客户端(浏览器)。这包括告诉浏览器或其他客户端被返回的文档类型(例如 HTML),设置 cookies 和缓存参数,以及其他类似的任务。

1_2Servlect的注册在web.xml文件中。


  com.Web.Servlect
  项目内容一
  
    index.html
    index.htm
    index.jsp
    default.html
    default.htm
    default.jsp
      
    
    
  
  
  
  OneServlect
  
  com.Web.Servlect.Servlect.OneServlect
  4
  




 home
 我的家乡在江西省
 
 
 
 money
 未来我的一年的目标是年薪100万
 

 
 h
 我的身高为179cm
 
 
 
 a
 恭喜你获得了第四个数据我@第四个
 

  
  
  
  OneServlect
  
  /A
  
  
    
    
    
  
  
  
  lq
  篮球
  
  
  
  zq
  足球
  
  
  
  dt
  恭喜你获得了我的动态数据的内容
  
  
  
 Servlect1
 comServlectF.Servlect1
 
 
 
 Servlect1
 /Servlect1
 


A_2Servlect的三种形式与生命周期。
public class oneServlet implements Servlet  {}
//采用的是接口
public class TwoServlet  extends GenericServlet {}
//采用的是继承
public class ThreeServlet  extends HttpServlet{}
//采用的是继承 理解什么是get 和 post的请求方式。

Servlet 生命周期可被定义为从创建直到毁灭的整个过程。以下是 Servlet 遵循的过程:

Servlet 抽象方法

  • Servlet 初始化后调用 init () 方法。

  • Servlet 调用 service() 方法来处理客户端的请求。

  • Servlet 销毁前调用 destroy() 方法。

  • 最后,Servlet 是由 JVM 的垃圾回收器进行垃圾回收的。

    1_5Servlet 方法介绍

    init 方法被设计成只调用一次。它在第一次创建 Servlet 时被调用,在后续每次用户请求时不再调用。因此,它是用于一次性初始化,就像 Applet 的 init 方法一样。

    service() 方法是执行实际任务的主要方法。Servlet 容器(即 Web 服务器)调用 service() 方法来处理来自客户端(浏览器)的请求,并把格式化的响应写回给客户端。

    destroy() 方法只会被调用一次,在 Servlet 生命周期结束时


A_3Servlect常用的七个对象。最常用的六个对象。
第一个对象 ServletConfig对象,用途获取静态数据 设置静态数据的俩种方式。
方案一在web.xml文件中定义。 方案二在servlect中定义。
第二个对象 ServletContext对象。(在jspz中九大内置对象之一) 1:用途:获取共享静态数据,2 获取共享动态数据,3 获取共享文件数据.
定义动态数据的的方案一。 定义动态数据的方案二。
第三个对象 (在jspz中九大内置对象之一) Response 对象。
1:用途一:将数据发送给浏览器。 2:用途二生成图片的下载。 3:用途三生成随机数。 4 用途四 response.sendRedirect("Servlet2");重定向
第四个对象。(在jspz中九大内置对象之一) HttpServletRequest HttpServlet调用HttpResponse的有关方法,生成响应数据,用于服务器上接收浏览器发送过来的数据信息。 request.getRequestDispatcher("Servlet4")    .forward(request, response); HttpResponse一些用法 这个对象与我之后所讲的JSP四大域有关

 第五个对象(cookie) session(在jsp中属于九大内置对象之一,四大作用域之一) 理解一些基础

cookie的本意是“小甜饼”,我们俗称“曲奇饼”

cookie是客户端技术,程序把每个用户的数据以cookie的形式写给用户各自的浏览器。

当用户使用浏览器再去访问服务器的时候,就会带着各自的数据去。这样,web资源处理的就是用户各自的数据。

1.一个cookie只能标识一种信息,它至少含有一个标识该信息的名称(name)和值(value)。

2.一个web网站可以给一个web浏览器发送多个cookie,一个浏览器也可以存储多个cookie。

3.浏览器一般只允许存放300个cookie,每个网站最多存放20个cookie,每个cookie的大小限制为4kb。

4.如果创建了一个cookie,并将他发送到了浏览器,默认情况下他是一个会话级别的cookie(即存储在浏览器的内存中),用户退出浏览器之后即被删除。

Session的概念

HttpSession对象 服务器为每个会话创建一个HttpSession对象 每个会话对象都有一个唯一的ID 把 用户的数据保存在相应的HttpSession对象内


第六个对象 过滤器(File) 个人总结:从上面图片过程可以看出:当Servlect与Filter同时创建时,运行服务器首先调用的是Filter中。MyFilter():构造方法<1 销毁数据 2 Filter所有方法运行完毕后销毁过滤器 3 构造方法 4 加载数据 5 我创建了第一个MyFilter过滤器 6 FilterConfig用来加载初始化数据 当我去运行ServlectA时服务器运行以下方法 1 ServlectA的构造方法 2 ServletAinit方法 3 ServlectA的servlect的方法

1-2 第二部分观察Servlect与Filter在web.xml注册的相似

概念:监听器就是一个实现了特定接口的Java类。 分类:

第一类监听器:监听域对象的创建、销毁 第二类监听器:监听域对象中的属性变更(属性设置、属性替换、属性移除) 第三类监听器:监听域对象中的java对象的绑定。

Servlet监听器:

事件源:request、session、servletContext三大域对象 监听器:Servlet对象(三类监听器) 绑定:web.xml配置 或 @WebListener注解 事件:域对象发生改变


第七个对象(扩展内容) Listener 工作原理 实现了特定接口的类为监听器,用来监听另一个Java类的方法调用或者属性改变; 当被监听的对象发生了方法调用或者属性改变后,监听器的对应方法就会立即执行。
ServletContext对象:获取共享静态数据,获取共享动态数据,获取共享文件数据.HttpServletResponse 对象HttpServlet调用HttpResponse的有关方法,生成响应数据HttpServletRequest对象:HttpServlet调用HttpResponse的有关方法,生成响应数据,用于服务器上接收浏览器发送过来的数据信息cookie对象,对象Session对象。程序把每个用户的数据以cookie/Session的形式写给用户各自的浏览器。Filter:过滤器,阻止非法网站的访问。ServletConfig:对象获得静态数据Listener:实现了特定接口的类为监听器,用来监听另一个Java类的方法调用或者属性改变; 当被监听的对象发生了方法调用或者属性改变后,监听器的对应方法就会立即执行。**
A_4JSP的基础介绍。 ## **<%! %>:用于在jsp文件中定义全局变量和方法 ## <%= %>:用于在jsp文件中将java中的数据结果显示在html文本中 ## <% %>:用于在jsp文件中执行多行代码,包括if,while,for,创建对象等等 ## <%-- --%>:用于在jsp文件中的注释 ## <%@ %>:用于在jsp文件中 *** 作指令代码**

## Jsp常用的三大指令:page,include,taglib

## page指令的常用属性:

##  import:导入所需要的包

##  language:当前jsp页面里面可以嵌套的语言 contenType:设置响应流的编码,及通知浏览器用什么编码打开 

## pageEncoding:设置页面的编码 extends:声明当前jsp的页面继承于哪个类

##  session:设置jsp页面是否可以使用session内置对象 

## buffer:设置jsp页面的流的缓冲区大小 

## autoFlush:是否自动刷新

##  isELIgnored:是否忽略el表达式 

## errorPage:当前jsp页面出现异常的时候要跳转到的jsp页面

##  isErrorPage:当前jsp页面是否是一个错误页面


A_5九大内置对象。
JSP九大内置对象表格。 outJspWriter将文本信息输出浏览器requestHttpServletRequest获得浏览器发送来的数据responeHttpServletRequest回复浏览器请求seesionHttpSeesion在不换浏览器放信息exceptionThrowable异常报错pageServlect(this)jsp翻译出来类的对象configServlectConfig静态数据applicationServlectContext共享数据pageContextPageContextjsp管理者引出对象  九大对象代码解释
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>




Insert title here


欢迎来到a.jsp文件

<%
	String a=(String)request.getAttribute("a");
	out.write("通过请求转发获得的数据为"+a);
%>




<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>




Insert title here



<%-- application,	ServlectContext	对象八ServlectContext 		共享数据  整个项目中只会有一个对象 
tomcat 服务器 一关闭 数据释放 数据的共享更服务器相关 --%>

<%
//获得静态数据
	String info =application.getInitParameter("a");
	out.write(info);
	//动态数据
	out.write("");
	application.setAttribute("c", "我是动态数据");
	out.write((String)application.getAttribute("c"));
%>






<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>




Insert title here


<%--     config 第七个对象		类名ServlectConfig			增加静态数据   --%>
<%
String name = config.getServletName();
out.write(name);

%>




<%@ page language="java"  errorPage="error.jsp"    contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>




Insert title here

*{
font-size: 29px;
color: red;
}





<%-- <%int a=100/0; %> --%>


<% int [] arr =new int [3];
System.out.println(arr[3]);
%>

<%-- <%
Integer i =new Integer ("abd");
%> --%>







<%@ page language="java"    isErrorPage="true"  contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>




Insert title here



除数不能为0:用户


<%= exception.getMessage() %>
<%=exception.toString() %>
<%=exception.hashCode()%>





<%@page import="java.util.Calendar"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>





*{
font-size: 40px;
}
九大内置对象的学习


----对象一out
<%
//创建日历类
		Calendar  calendar =Calendar.getInstance();
			int AM_PM=calendar.get(calendar.AM_PM);
			if(AM_PM==calendar.AM){
				out.write("上午时间是");
				
			}else if(AM_PM==calendar.PM){
				out.write("下午时间是");
			}

%>

----对象二Application
<%
//获得静态数据
	String info =application.getInitParameter("a");
	out.write(info);
	//动态数据
	out.write("");
	application.setAttribute("c", "我是动态数据");
	out.write((String)application.getAttribute("c"));
%>

----对象三page
<%
out.write((page.equals(this)?"page是当前对象":"page不是当前对象"));
out.write((session.equals(this)?"page是当前对象":"page不是当前对象"));
%>

----对象四Response
<%
	response.sendRedirect("a.jsp");
	out.write("Hellow JSP");
	
%>




<%@page import="java.util.Calendar"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>




Out对象


<%--  --%>
<%
//创建日历类
		Calendar  calendar =Calendar.getInstance();
			int AM_PM=calendar.get(calendar.AM_PM);
			if(AM_PM==calendar.AM){
				out.write("上午时间");
				
			}else if(AM_PM==calendar.PM){
				out.write("下午时间");
			}

%>


四大作用域(有四个对象)有四个对象共享数据

seesion   浏览器不切

application  服务器不关闭

request:请求转发跳转页面的情况,只能两个页面共享数据

pageContext:该对象中只能页面自己用

才能用setAttribute的方法

将四作用域排序

pageContext  request  seesion   application 





<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>




Insert title here


<%--对象 page 对象 六  page,		Servlect(this)			jsp翻译出来类的对象   --%>
<%
out.write((page.equals(this)?"page是当前对象":"page不是当前对象"));
out.write((session.equals(this)?"page是当前对象":"page不是当前对象"));
%>






<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>




Request对象


<%-- jsp九大对象 request 类名HttpSevlectRequest --%>
<% 
		String name=request.getParameter("name");
		out.write("我收到浏览器发送的数据为"+name);
		out.write("http://localhost:8080/Day_13/Request.jsp?name=xao");
		
		//携带数据跳转页面
		request.setAttribute("a", "apple");
		request.getRequestDispatcher("a.jsp").forward(request, response);
		
%>



<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>




Insert title here


<%-- jsp九大内置对象  Respone对象三类名 HttpServlectRespone--%>
Respone.jsp

<%
	response.sendRedirect("Out.jsp");
	out.write("Hellow JSP");
	
%>





<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>




Insert title here


<%----  对象四Session  HttpSession   Session放的数据为同已过浏览器服务器 所有Servlect 和 jsp
 都能共享Session里数据 --%>
<%


		session.setAttribute("b", "我是session对象的定义b");
		session.setAttribute("c", "我是session对象的定义c");
		out.write((String)session.getAttribute("b"));
		out.write((String)session.getAttribute("c"));



%>





A_6四大作用域。
#4 JSP四大作用域。 4_1四大域的范围 pageContext
A_7JavaBean六大标签。
第五部分JavaBean和jsp动作

JavaBean的概念

JavaBean是可复用的、平台独立的软件组件 JavaBean既可以是简单的GUI要素,如按钮和滚动条,也可以是复杂的可视化软件组件,如数据库视图 有些JavaBean是没有GUI表现形式的,常用来封装事务逻辑、数据库 *** 作等等 我们可以把遵循某种规范的Java类称为JavaBean: 这个类是可序列化的 这个类必须带有一个无参的构造方法 这个类的属性必须通过get 、set和其他标准命名规范来命名的方法进行 *** 作 这个类包含事件处理方法

jsp:useBean:创建某一个JavaBean类的对象,需要把该对象存储至指定的四大作用域之一 id:填要创建的类的对象名称 class:填要创建的类的完整包的路径 scope:填四大作用域的标识 page:代表的是pageContext对象 request:代表的是request对象 session:代表的是session对象 application:代表的是application对象

jsp:setProperty:用于给jsp:useBean动作所创建的对象的全局变量进行赋值 name:填对象名称 property:填属性名称或者变量名称 value:填要赋予给全局变量的值

jsp:getProperty:用于获得jsp:useBean动作所创建的对象中所有全局变量的值 name:填对象名称 property:填属性名称或者变量名称

jsp:forwad:用于类似于请求转发的页面跳转方式 page:填写要跳转的页面

jsp:param:用于携带参数(如果传输的中文,需要进行编码格式转换) name:填参数名称 value:填参数的值

jsp:include:用于动态的将其他多个jsp页面引入或者包含某一个页面中 引入的过程中也可以使用jsp:param动作给这个子页面传输数据,

代码解释。
<%@page import="com.Student.Student"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>




Insert title here

*{
font-size: 18px;
}


<%-- pageContrxt  request  session application  --%>


==============方案一存储数据============
 <%
session.setAttribute("name", "小YI");
session.setAttribute("id", "007");
session.setAttribute("phone", "123456789123");
session.setAttribute("age", "21");
session.setAttribute("addr", "江西南昌");
session.setAttribute("sex", "男");

%>
 
 
 
==============方案二存储数据============

	
<%

Student student=new Student("007","小明二号",20,"男","18188888888","江西省南昌市");
session.setAttribute("student", student); 
%>


方案三:利用一个JSP动作将数据存储起来
 


<%-- 使用的id  id表示使用的类的对象   class表示完整包的路径--%>




<%
		a.setId("1003");
		a.setName("小明三号");
		a.setAge(23);
		a.setSex("男");
		a.setAddr("南昌");
		a.setPhone("1244444444444");	

%>


方案四:利用二个JSP动作将数据存储起来






<%--
property: 属性的名称

name:对象的名称

value:对象赋值的数据

 --%>
 








<%@page import="com.Student.Student"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>





*{
font-size: 20px;
font-weight: bold;
}

Insert title here


获得数据内容
==============方案一拿到index.jsp数据============
 

学生个人信息

学号:<% String id= (String)session.getAttribute("id"); out.write(id);%>

姓名:<% out.write((String)session.getAttribute("name"));%>

年龄:<%=((String)session.getAttribute("age"))%>

性别:<%=((String)session.getAttribute("sex"))%>

手机号:<%=((String)session.getAttribute("phone"))%>

家庭地址:<%=((String)session.getAttribute("addr"))%>

<%-- 数据量不断增加 在数据量非常多的时候 不适合采用没一个数据单独放置 --%> ==============方案二拿到index.jsp拿数据============ <% Student student=(Student)session.getAttribute("student"); %>

学号:<%=student.getId() %>

姓名:<%=student.getName() %>

年龄:<%=student.getAge() %>

性别:<%=student.getSex() %>

手机号:<%=student.getPhone()%>

家庭地址:<%=student.getAddr() %>

==============方案三拿到index.jsp拿数据============ 方案三:利用一个JSP动作将数据存储起来

学号:<%a.getName();%>

姓名:<%a.getName();%>

年龄:<%=a.getAge()%>

性别:<%=a.getSex()%>

手机号:<%=a.getPhone()%>

家庭地址:<%=a.getAddr()%>

================方案四拿到index.jsp拿数据=================

学号:

姓名:

年龄:

性别:

手机号:

家庭地址:

 

<%@page import="java.util.HashMap"%>
<%@page import="java.util.Map"%>
<%@page import="java.util.ArrayList"%>
<%@page import="java.util.List"%>

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>





*{
font-size: 30px;
}
h1{

color: red;
}
h6{
color: red;
background-color: black;
}
h2{
	background: red;
	color: black;
}
h3{
background: green;
}

数组集合




数组的方式

<%
String [] grirs={"@AAAA","@BBBB","@CCCC","@DDDD","@eeee"};
session.setAttribute("gs", grirs);
%>



<%
String [] gs=(String[])session.getAttribute("gs");
%>

<%=gs[0] %>
<%=gs[1] %>
<%=gs[2] %>
<%=gs[3] %>
String [] gs=(String[])session.getAttribute("gs"); ${gs[0]},${gs[1]},${gs[2]},${gs[3]},${gs[4] } ----用EL表达式获取数组的方式---------- 集合的方式 <% List list=new ArrayList<>(); list.add(89); list.add(79); list.add(69); list.add(59); session.setAttribute("l", list); %> ${l[0]},${l[1]},${l[2]},${l[3]}
MAP集合的方式 request.setAttribute("bo", map); <% Mapmap =new HashMap<>(); map.put("book1","JAVA程序设计"); map.put("book2","JAVA程序设计1"); map.put("book3","JAVA程序设计2"); map.put("book4","JAVA程序设计3"); map.put("book5","JAVA程序设计4"); request.setAttribute("bo", map); %> ${bo.book1}
${bo.book2}
${bo.book3}
${bo.book4}
${bo.book5}
<%-- 实体类 application.setAttribute("os", odogs); <% List odogs =new ArrayList<>(); odogs.add(new Dog("AA",1,"pink")); odogs.add(new Dog("BB",2,"blsck")); odogs.add(new Dog("CC",3,"blsck")); application.setAttribute("os", odogs); %> ${os[1].name,$os[2].color} --%>

 

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    <%@page import="com.Student.Student"%>




Insert title here



第四个页面


 <%
	//因为表单提交的数据方式是post请求,数据是不会经过tomcat转换编码格式
	//数据是内部传输,这时候需要我们手动转换编码格式
	request.setCharacterEncoding("UTF-8");
	String id=request.getParameter("id");
	String name=request.getParameter("name");
	String age=request.getParameter("age");
	String sex=request.getParameter("sex");
	String phone=request.getParameter("phone");
	String addr=request.getParameter("addr");
	
	//将接收的数据封装到对象中,方便发送数据
	Student student=new Student(id,name,
			Integer.parseInt(age),sex,
			phone,addr);
	
	application.setAttribute("stu", student);
%> 






<%
	response.sendRedirect("Five.jsp");
%>

 

<%@page import="com.Student.Student"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>




Insert title here

*{
            background-image: linear-gradient(0deg,  red, whitesmoke);
            font-size: 25px;
            text-shadow: 1px 1px 1px pink;
            font-weight: bolder;
            border:   lavender 1px;
            color: white;
        }


 


获得Java方式存储的学生的注册信息
 <%  Student student=(Student)application.getAttribute("stu"); %>

学号:<%=student.getId() %>

姓名:<%=student.getName() %>

年龄:<%=student.getAge() %>

性别:<%=student.getSex() %>

手机号:<%=student.getPhone() %>

家庭地址:<%=student.getAddr() %>




获得Jsp动作的方式存储的学生的注册信息

学号:

姓名:

年龄:

性别:

手机号:

家庭地址:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>




Insert title here

*{
font-size: 20px;
font-weight: bold;

}





	




	




	




 

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>




Insert title here


<% String info=request.getParameter("jsp"); %>
<%=info %>




<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>




Insert title here


<% String info=request.getParameter("jsp"); %>
<%=info %>



<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>




Insert title here


<% String info=request.getParameter("jsp"); %>
<%=info %>

 

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>




数据类

*{

color: red;
}




方案四:利用二个JSP动作将数据存储起来


第一个标签动作解析:  jsp:useBean
@1 id 对象的名称
@2 class 对象存放在的哪个路径
@3 scope 四大域的名称 application session pageContext resquest
第二个标签动作解析  设置对象里的数据 jsp:setproperty @1 id 对象的属性 @2 name 对象的名称 @3 value 对象名称对应的值 第三个标签动作解析 获取对象里的数据 jsp:getetproperty @1 id 对象的属性 @2 name 对象的名称 @3 value 对象名称对应的值 创建第二个人 创建第三个人 创建第四个人
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>




Insert title here

*{
color: red;
font-size: 30px;
font-weight: bold;

}



 取出数据内容


出生编号:

姓名:

年龄:

性别:

手机号:

家庭地址:

身高:

体重:

属性a:

属性b:

属性c:

出生编号:

姓名:

年龄:

性别:

手机号:

家庭地址:

身高:

体重:

属性a:

属性b:

属性c:

出生编号:

姓名:

年龄:

性别:

手机号:

家庭地址:

身高:

体重:

属性a:

属性b:

属性c:

出生编号:

姓名:

年龄:

性别:

手机号:

家庭地址:

身高:

体重:

属性a:

属性b:

属性c:

-

 


A_8EL表达式。
代码解释
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>




Insert title here

*{
font-size:30px;
font-weight: bold;


}
h1{
border:2px solid;
color: black;
font-weight: bold;

}
h2{
color: black;
border: 2px solid;
background-color: yellow;
}
h3{
color: pink;
background-color: red;
}



 

四大域的内容解释

@1 seesion  浏览器不切

@2application  服务器不关闭

@3 request:请求转发跳转页面的情况,只能两个页面共享数据

@4 pageContext:该对象中只能页面自己用

只有pageContext request seesionn application  才能用setAttribute的方法

@5将四作用域排序

**pageContext request seesionn application
EL表达式


这个的出现是什么
	${pageScope.a} 
  ${sessionScope.a  } 
  ${sessionScope.a  } 
  ${applicationScope.a  } 


<%
pageContext.setAttribute("a", "我是用pageContext存放的数据为AAA");
request.setAttribute("b", "我是用request存放的数据为BBB");
session.setAttribute("c", "我是用session存放的数据CCC	");
application.setAttribute("d", "我是用application存放的数据为DDD");
%>


<%=pageContext.getAttribute("a") %>
<%=request.getAttribute("b") %>
<%=session.getAttribute("c") %>
<%=application.getAttribute("d") %>
            
<%=pageContext.getAttribute("a") %>
<%=pageContext.getAttribute("b",pageContext.REQUEST_SCOPE ) %>
<%=pageContext.getAttribute("c",pageContext.SESSION_SCOPE ) %>
<%=pageContext.getAttribute("d",pageContext.APPLICATION_SCOPE ) %>
------------------------------------------------------------------------------------------------- <%=pageContext.getAttribute("a") %>
<%=pageContext.getAttribute("a",pageContext.REQUEST_SCOPE ) %>
<%=pageContext.getAttribute("a",pageContext.SESSION_SCOPE ) %>
<%=pageContext.getAttribute("a",pageContext.APPLICATION_SCOPE ) %>


====================代码实例一========================= <%=pageContext.findAttribute("a") %>
<%=pageContext.findAttribute("b") %>
<%=pageContext.findAttribute("b") %>
<%=pageContext.findAttribute("b") %>


==================代码实例二=========================== <%=pageContext.findAttribute("a") %>
<%=pageContext.findAttribute("b") %>
<%=pageContext.findAttribute("c") %>
<%=pageContext.findAttribute("c") %>


===================代码实例三========================== <%=pageContext.findAttribute("a") %>
<%=pageContext.findAttribute("b") %>
<%=pageContext.findAttribute("c") %>
<%=pageContext.findAttribute("d") %>


==========================方案四====================== ================代码实例0============================= ${a }
${a }
${a}
${a}
================代码实例1============================ ${a }
${b }
${b}
${b}
================代码实例2============================ ${a }
${b }
${c}
${c}
================代码实例3============================ ${a }
${b }
${c}
${d}
-------------------------------解决问题内容-------------------------------- ${pageScope.a }
${requestScope.b }
${sessionScope.c }
${applicationScope.d }

 

<%@page import="comabc.Dog"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>






*{
font-size:40px;
font-weight: bold;

}
h1{
color: yellow;
font-weight: bold;
}
h2{
color: blue;
}
h3{
color: pink;

}

Insert title here


<%
	Dog dog=new Dog("wer",4,"灰色");
pageContext.setAttribute("d1", dog);
%>


<%
	Dog dog1=new Dog("dogyuy",42,"huang色");
pageContext.setAttribute("d2", dog);
%>



<%
Dog d =(Dog)pageContext.getAttribute("d1");
Dog d2 =(Dog)pageContext.getAttribute("d2");
%>
年龄:<%=d.getAge() %>
名字:<%=d.getName() %>
色彩:<%=d.getColor() %>
年龄:<%=d2.getAge() %>
名字:<%=d2.getName() %>
色彩:<%=d2.getColor() %>
===========方式二========== 名字:${d1.name }
年龄:${d1.age }
色彩:${d1.color }

名字:${d2.name }
年龄:${d2.age }
色彩:${d2.color }

 

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>




Insert title here

*{
font-size: 34px;
}




<%
pageContext.setAttribute("a", "pageContext@1APPLE");
request.setAttribute("a", "request@2.BROW");
session.setAttribute("a", "session@3.DFER");
application.setAttribute("a", "application@4.PINK");
%>


<%=pageContext.getAttribute("a") %>
<%=request.getAttribute("a") %>
<%=session.getAttribute("a") %>
<%=application.getAttribute("a") %>


<%=pageContext.getAttribute("a") %> <%=pageContext.getAttribute("a",pageContext.REQUEST_SCOPE ) %>
<%=pageContext.getAttribute("a",pageContext.SESSION_SCOPE ) %>
<%=pageContext.getAttribute("a",pageContext.APPLICATION_SCOPE ) %>


<%=pageContext.findAttribute("a") %>
<%=pageContext.findAttribute("a") %>
<%=pageContext.findAttribute("a") %>
<%=pageContext.findAttribute("a") %>


 

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>





*{
color: black;
font-size: 45px;
}

Insert title here




	${4+6 }
	${4/6 }
	${4*6 }
	
${3222*89 }
${23 mod 5 }
${23/5 }
<% request.setAttribute("age", 56); %> ${age-5 }

${age/11>7 }
${age/11<=7 }
${age/11>=7 }
${age/11<7 }
${age/11==7 }
${ age mod 3==0 && age/5 ge 2}
${ age mod 3 ==0|| age/5 ge 2}
<%-- 空运算符--%> <% int [] nums =null; pageContext.setAttribute("n", nums); %> ${empty(n) }
${age/2+3-6>45?"AAA":"BBB" }
${23+67*90 }
${3>2?3:2 }

 

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>




四大域


*{
	color: red;
	font-size: 45px;
}




<%
pageContext.setAttribute("a", "pageContext@1APPLE");
request.setAttribute("a", "request@2.BROW 123");
session.setAttribute("a", "session@3.DFER true");
application.setAttribute("a", "application@4.PINK");
%>


${pageScope.a  }
${requestScope.a }
${sessionScope.a }
${applicationScope.a }

 

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>




用El表达式获取数组的方式练习

*{
font-size: 40px;
font-weight: bold;

}


数组的方式

<%
String [] grirs={"@AAAA","@BBBB","@CCCC","@DDDD","@EEE"};
session.setAttribute("gs", grirs);
%>



<%
String [] gs=(String[])session.getAttribute("gs");
%>

<%=gs[0] %>
<%=gs[1] %>
<%=gs[2] %>
<%=gs[3] %>
<%=gs[4] %>
${gs[0]},${gs[1]},${gs[2]},${gs[3]},${gs[4] } <% String [] se={"我是用session存放的数据AA","我是用session存放的数据@BB","我是用session存放的数据@CC","我是用session存放的数据@DD","我是用session存放的数据@EE"}; request.setAttribute("s", se); %> ${s[0] }   ${s[1] }   ${s[2] }   ${s[3] }   ${s[4] } <% String [] ap={"1111","2222","3333","444","5555","66666"}; application.setAttribute("a", ap); %> ${a[0] } ${a[1] } ${a[2] } ${a[3] } ${a[4] } <% String [] rs={"1111a","222e2","33r33","44t4","555y5","6u6666"}; pageContext.setAttribute("as",rs); %> ${as[0] } ${as[1] } ${as[2] } ${as[3] } ${as[4] } ${as[5] }

 

<%@page import="java.util.List"%>
<%@page import="java.util.ArrayList"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>





*{
font-size: 40px;
font-weight: bold;

}
El表达式获取集合的方式



<%-- 域中的名称${域中的名称[加下标从0开始] } --%>

<%
 List list=new ArrayList<>();
list.add(89);
list.add(79);
list.add(69);
list.add(59);
session.setAttribute("l", list);

%>

${l[0]},${l[1]},${l[2]},${l[3]}
<% List lis=new ArrayList<>(); lis.add(189); lis.add(179); lis.add(639); lis.add(549); lis.add(123); application.setAttribute("a", lis); %> ${a[0]},${a[1]},${a[2]},${a[3]}
<% List lisq=new ArrayList<>(); lisq.add(1389); lisq.add(1479); lisq.add(6539); lisq.add(5469); lisq.add(1253); request.setAttribute("aa", lisq); %> ${aa[0]},${aa[1]},${aa[2]},${aa[3]},${aa[4]}
<% List wlisq=new ArrayList<>(); wlisq.add(13489); wlisq.add(14749); wlisq.add(65349); wlisq.add(54469); wlisq.add(12453); pageContext.setAttribute("waa", wlisq); %> ${waa[0]},${waa[1]},${waa[2]},${waa[3]},${waa[4]}

 

<%@page import="java.util.HashMap"%>
<%@page import="java.util.Map"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>



*{
font-size: 40px;
font-weight: bold;

}



用EL表达式获取Map集合数据



<%
Mapmap =new HashMap<>();
map.put("book1","JAVA程序设计");
map.put("book2","c++程序设计1");
map.put("book3","Jquery程序设计2");
map.put("book4","mysql程序设计3");
map.put("book5","javascript程序");
request.setAttribute("bo", map);

%>


${bo.book1}
${bo.book2}
${bo.book3}
${bo.book4}
${bo.book5}
<% Mapma =new HashMap<>(); ma.put("book1","JAVA程序设计AA"); ma.put("book2","c++程序设计1BB"); ma.put("book3","Jquery程序设计2CC"); ma.put("book4","mysql程序设计3DD"); ma.put("book5","javascript程序EE"); session.setAttribute("boo", ma); %> ${boo.book1}
${boo.book2}
${boo.book3}
${boo.book4}
${boo.book5}
<% Mapmaq =new HashMap<>(); maq.put("book1","JAVA程序q设计AA"); maq.put("book2","c++程序q设计1BB"); maq.put("book3","Jquery程q序设计2CC"); maq.put("book4","mysql程q序设计3DD"); maq.put("book5","javascriqpt程序EE"); session.setAttribute("qboo", maq); %> ${qboo.book1}
${qboo.book2}
${qboo.book3}
${qboo.book4}
${qboo.book5}
<% Mapmaqw =new HashMap<>(); maqw.put("book1","JAVA程w序q设计AA"); maqw.put("book2","c++w程序q设计1BB"); maqw.put("book3","Jquery程wq序设计2CC"); maqw.put("book4","mysqlw程q序设计3DD"); maqw.put("book5","javascwriqpt程序EE"); session.setAttribute("wqboo", maqw); %> ${wqboo.book1}
${wqboo.book2}
${wqboo.book3}
${wqboo.book4}
${wqboo.book5}

 

<%@page import="comabc.pig"%>
<%@page import="comabc.Dog"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>





*{
font-size: 30px;
}
用EL表达式获取实体类的方式



<%
		Dog dog=new Dog("旺财题",3,"黑色");
		pageContext.setAttribute("d1", dog);
		
		Dog dog2 =new Dog("小王猜",3,"红色");
			request.setAttribute("d2", dog2);
		
		Dog dog3 =new Dog("小虾米",2,"白色");
		session.setAttribute("d3", dog3);
		
		Dog dog34 =new Dog("小王八",2,"黄色");
		application.setAttribute("d4", dog3);
	%>
	
	<%
		Dog d=(Dog)pageContext.getAttribute("d1");
	%>
	名字:<%=d.getName() %>
年龄:<%=d.getAge() %>
颜色:<%=d.getColor() %>
--获取方式一的数据的内容--
--实体类获取数据的内容方式二@1- 名字:${d1.name }    年龄:${d1.age }    颜色:${d1.color }    --获取方式二的数据的内容@2-- 名字:${d2.name }
年龄:${d2.age }
颜色:${d2.color }
--获取方式二的数据的内容@3-- 名字:${d3.name }
年龄:${d3.age }
颜色:${d3.color }
--获取方式二的数据的内容@4-- 名字:${d4.name }
年龄:${d4.age }
颜色:${d4.color }
<% pig pig =new pig("小黄鱼",4,"黑色",166); pageContext.setAttribute("p1", pig); %> --获取对象的数据的内容@1-- 名字:${p1.name }    年龄:${p1.age }    颜色:${p1.color }    身高${p1.height }

 

A_9JSTL标签库。
代码解释
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    
    <%@taglib  uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>




JSTL标签库的使用一通用标签库

*{
color: black;
font-size: 30px;
font-weight: bolder;

}
h2{
color: white;
background-color: black;

}



JSTL标签库的使用一通用标签库1
<%request.setAttribute("a", "我是数据a定义了一个数据为HellowA") ;%>
<%request.setAttribute("b", "我是数据b定义了一个数据为HellowB") ;%>

用El表达式获取的数据
${a }   
${b }   
第一个标签通用标签set使用
 
<%-- 
标签库${a1 }
 --%>
<%-- ${pageScrope.a } --%>

表达式标签库

1 scope="四大作用域"。  2 var="对应的变量名" 。  
3 value"对应的值" 。  @1用表达式$(a1)获取。  

---------我用了第一个标签---c:set---- 创建一个值-----

@1获取数据用EL表达式
${a1 }
     
@2指定作用域pageScope sessionScope
 
 ${pageScope.b } 
      

@3省去 value的值 
Hellow World Jsp
指定作用域

${sessionScope.c }  
@4跳转作用域来获取数据 $(applicationScope.apple)
@5删除数据内容 ${empty(c) } @ 6out 输出数据 通过EL表达式
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    <%@taglib  uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>





*{
color: black;
font-size: 20px;
font-weight: bold;

}
h1{
color: yellow;
background-color: black;

}
h2{
color: white;
background-color: black;

}

JSTL标签库的使用一通用标签库2


  标签库和JSp动作合起来使用 
JSTL标签库的使用二通用标签库2












${car.name }
${car.price }
${car.type}

${car1.name }
${car1.price }
${car1.type}




-
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
      <%@taglib  uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>




*{
color: black;
font-size: 34px;
font-weight: 900px;

}
h1{
color: yellow;
background-color: black;

}
h2{
color: white;
background-color: black;

}


JSTL标签库的使用一流程标签库





表达式标签:out set remove 
流程标签 if choose when otherwise
循环标签 forEach  forTokens
url 标签  import    url   redirect parm


JSTL标签库的使用三流程标签库

判断一个数的基数 和偶数 test:是表达式,最后结果为true,false 这数为偶数偶数 这数为奇数 方法二计算了一次 这数为偶数 这数为奇数 第一季节 第二季节 第三季节 第四季节冬季 月份是有误的 第一季节 第二季节 第三季节 第四季节冬季 月份是有误的

 

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
     <%@taglib  uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>





*{
color: black;
font-size: 34px;
font-weight: bold;

}
h2{
color: white;
background-color: black;

}

循环标签 forEach




表达式标签:out set remove 
流程标签 if choose when otherwise
循环标签 forEach  forTokens
url 标签  import    url   redirect parm

for循环标签
<%
String [] name ={"编号1001小碗","编号1002小花","编号1003小白","编号1004小坡","编号1005小(>^ω^<)喵",
		"编号1006消费",
		"编号1007呼叫",
		"编号1008hello",
		"编号1009need发",
		"编号1010你好",
		"编号1001011细看"
		,"编号10012加油",
		"编号10013明白"};
application.setAttribute("name", name);
String [] names ={"小白","小坡","小(>^ω^<)喵","消费","呼叫","hello","need发","你好","细看","小胡"};
application.setAttribute("names", names);
%>
${names[0]},${names[1]},${names[2]},${names[3]},${names[4]}
forEach标签属性: @1 items:要循环数据的集合or 数组。 @2 var:定义变量,用于存放每一次循环从数组中拿数据。 @3 begin从第几个数据开始循环。 @4 end控制下标在第几项结束。 @5 step增加的步长。 @6 varStatus设置没一次循环的次数 存放每一次循环从数组中拿数据${nb }
存放每一次循环从数组中拿数据${nbs }
-

 

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
       <%@taglib  uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>





*{
color: black;
font-size: 30px;
font-weight: bold;

}
h2{
color: white;
background-color: black;

}

forTokens



被分开的数据以,分开: ${str }


被分开的数据以/分开: ${str1 }

被分开的数据以-分开: ${str2 }

被分开的数据以*分开: ${str2 }


A_9..0MYsql的基础 *** 作。增删改查的回顾。
#增加一条数据
INSERT INTO `studentdb`.`book`(`name`, `maker`, `price`, `num`, `time`, `autor`) VALUES ('Sping', '中国邮政', '500元', 456, '2021/11/30', 'spingsping')
#查询表单结构
DESC book
#查询表的内容
SELECt * FROM book
#查询一条记录
SELECt *FROM book WHERe name='Sping'and maker='中国邮政'
#查询多个条件
#且 and
#或 or 
INSERT INTO `studentdb`.`book`(`name`, `maker`, `price`, `num`, `time`, `autor`) VALUES ('Sping', '中国邮政', '400元', 456, '2021/11/30', 'spingsping')
SELECt *FROM book WHERe price='400元'or price='500元'
#修改数据内容
UPDATe `studentdb`.`book` SET `maker` = 'kut' WHERe `id` = 1005
#修改大量内容
SELECT * FROM book
#创建一个数据
INSERT INTO `studentdb`.`book`(`name`, `maker`, `price`, `num`, `time`, `autor`) VALUES ('SpingBoot', '中国人名出版社', '300元', 356, '2021/12/30', 'spingbook')
#修改大量的数据内容
INSERT INTO `studentdb`.`book`(`id`, `name`, `maker`, `price`, `num`, `time`, `autor`) VALUES (NULL, 'jquery', 'sum', '123', 345, '2020/1/2', 'gh')
 
UPDATe `studentdb`.`book` SET `name` = 'html', `maker` = 'sumdt', `price` = '678', `num` = 340, `time` = '2021/1/2', `autor` = 'ghj' WHERe `id` = 1008
#删除表的数据
DELETE FROM `studentdb`.book WHERe ` id` = 1007
 
DELETe FROM `studentdb`.`book` WHERe `id` = 1004
 
-- 练习题
 
#增一条语句
INSERT INTO `studentdb`.`book`(`id`, `name`, `maker`, `price`, `num`, `time`, `autor`) VALUES (1013, 'Html5', 'hellowhtml5', '200元', 678, '2020/1/2', '你哈')
#改一条语句的多个条件
UPDATe `studentdb`.`book` SET `name` = 'php', `maker` = 'as', `price` = '344元', `num` = 2334, `time` = '2021/2/4', `autor` = 'nees' WHERe `id` = 10014 AND `name` = Cast('ps' AS Binary(2))
#查表的结构
DESC book
DESC tb_student
#查表的内容
SELECT * FROM book
#删除语句
INSERT INTO `studentdb`.`book`(`id`, `name`, `maker`, `price`, `num`, `time`, `autor`) VALUES (1015, 'Html5', 'maysquery', '210元', 678, '2020/11/30', '增加的一条语句')
 
#删除上面增加的语句
 
DELETe FROM `studentdb`.`book` WHERe `id` = 1015 AND `name` = Cast('Html5' AS Binary(5))
 
 
UPDATE `studentdb`.`book` SET `maker` = '', `price` = '' WHERe `id` = 10014 AND `name` = Cast('php' AS Binary(3))


A_10MVC三层架构。


 

A_11Redis缓存技术. 1:redis缓存技术(第一课利用windows *** 作系统)

redis技术是一门数据库。(不是非关系数据库),属于NoSQlL。 not only Sql 不仅仅是Sql redis技术是C语言。CPU内存-------------缓存(Redis)------------硬盘 四大类型的数据库 Mysql Servlect Oracle DB2(IBM) 关系型数据库:实体与实体之间存在的关系。 一对一:班级表,主任表。 一对多:学生表,班级表。 多对多:学生表,课程表。 ----------------------------------------------------------结果表:成绩表。 案例:张三同学jsp课程考60分。 用户表 商品表 -----------------------------------------------------------结果表:订单表。 为什么学Redis缓存技术。因为在企业中用户访问数据库的人数相当大。 在大量用户同时访问数据库时候,会加大服务器的开销。影响软件的反应速度,使用redis技术,可以加快查询数据速度,减少开销。 Redis技术?一般在spingboot.  winsows平台。 Redis:6379 mysql:3306


A_12五种数据 *** 作。
A-1String

添加数据的指令:set 名称 值 查询数据的指令:get 名称 删除数据的指令:del 名称... 当关闭redis服务器时,redis数据库中的数据将会被清空 当给redis数据库中添加的数据的名称与已存在的数据的名称一致时, 会将后面添加的数据替换旧数据

A-2hash类型:

添加数据的指令:hset 名称 子名称 值 查询数据的指令:hget 名称 子名称 查询所有数据的指令:hgetall 名称 删除数据的指令:hdel 名称 子名称...

A-3list类型: 可以添加重复的数据

添加数据的指令: 1.从左边添加数据:lpush 名称 值... 2.从右边添加数据:rpush 名称 值... 查询数据的指令:lrange 名称 开始的下标 结束的下标(-1表示到最后一个元素结束) 删除数据的指令: 1.从左边删除数据,并把删除的数据查询出来:lpop 名称 2.从右边删除数据,并把删除的数据查询出来:rpop 名称

A-4set类型:不允许添加重复的数据**

添加数据的指令:sadd 名称 值... 查询所有数据的指令:smembers 名称 删除数据的指令:srem 名称 值...

A_5sortedset类型:不允许添加重复的数据,而且添加的数据需要进行排序

添加数据的指令:zadd 名称 分数 值... 查询所有数据的指令:zrange 名称 开始的下标 结束的下标 [withscores]表示查询数据的时候将数据对应的分数也查询出来 删除数据的指令:zrem 名称 值...

A-6通用命令:

keys 名称或者*:查询redis数据库中是否存在哪些数据类型的名称 type 名称:查询当前存储的数据是属于哪一种数据类型 del 名称:删除任何一种数据类型的所有数据jsp:8080

127.0.0.1:6379> setage 20
(error) ERR unknown command 'setage'
127.0.0.1:6379> set age 20
OK
127.0.0.1:6379> get age
"20"
127.0.0.1:6379>
Redis的数据类型(五种)《增删改查>>>>>>>>>>>>>>>>>>>>命令行 *** 作
1 Redis的数据类型一:
127.0.0.1:6379> set age 23
OK
127.0.0.1:6379> get age
"23"
=============增加数据类型指令=============================
127.0.0.1:6379> set name zgangsan
OK
----------------获取数据类型--------------------------------
127.0.0.1:6379> get name
"zgangsan"
127.0.0.1:6379>
==============删除数据指令:del 名称......=============================
127.0.0.1:6379> del name
(integer) 1
127.0.0.1:6379> get name
(nil)
当关闭redis服务器时,redis数据库中的数据清空。
当redis增加数据的名称与存在的数据名称一致是,会将后面增加的数据修改前面的数据。
127.0.0.1:6379> set name lisi
OK
127.0.0.1:6379> set name wangwu
OK
127.0.0.1:6379> get name
"wangwu"
------------------练习题---------库一-------------------------127.0.0.1:6379-----------------------------------------
127.0.0.1:6379> set bookname wodeshijie
OK
127.0.0.1:6379> get bookname
"wodeshijie"
127.0.0.1:6379> set booknum 45
OK
127.0.0.1:6379> get booknum
"45"
127.0.0.1:6379> getbook prick
(error) ERR unknown command 'getbook'
127.0.0.1:6379> set bookprick 34$
OK
127.0.0.1:6379> get bookprick
"34$"
127.0.0.1:6379> set bbookautor wangxuaiok
OK
127.0.0.1:6379> get bbookautor
"wangxuaiok"
127.0.0.1:6379> del bookname
(integer) 1
127.0.0.1:6379> set booknum 123
OK
127.0.0.1:6379> get booknum
"123"

127.0.0.1:6379>
------------------------------

2 Redis的数据类型一:
 Hash-----------hash设置值------------
127.0.0.1:6379> hset student name wangxiaoer
(integer) 1
127.0.0.1:6379> hset student age 34
(integer) 1
127.0.0.1:6379> hset student sex nana
(integer) 1
127.0.0.1:6379> hset student like wangzhe
(integer) 1
127.0.0.1:6379> hset student phone 1234567
(integer) 1
127.0.0.1:6379> hset student address chian
(integer) 1
-----------------------------hash查询名称---------------------------------
(integer) 1
127.0.0.1:6379> hget studnet name
(nil)
127.0.0.1:6379> hget student name
--------------hash------获得所有数据--------------------------------------------------------
127.0.0.1:6379> hgetall student

  1) "name"
  2) "wangxiaoer"
  3) "age"
  4) "34"
  5) "sex"
  6) "nana"
  7) "like"
  8) "wangzhe"
  9) "phone"
 10) "1234567"
 11) "address"
 12) "chian"
     ---------------------hash数据的删除------------------------hdel---------------------------------------------------------
     127.0.0.1:6379> hsel student sex age
     (error) ERR unknown command 'hsel'
     -------------------hdel student 名称
     127.0.0.1:6379> hdel student sex age
     (integer) 2
     127.0.0.1:6379> hgetall student
 13) "name"
 14) "wangxiaoer"
 15) "like"
 16) "wangzhe"
 17) "phone"
 18) "1234567"
 19) "address"
 20) "chian"

----------------------------------------------------------------------------------------------------------------------

2 Redis的数据类型三:
 list的集合
-------------------------------list增加数据类型------------------从left or right------------
127.0.0.1:6379> lpush mylist 123  abc xiaoming huji
(integer) 4
127.0.0.1:6379> rpush mylist A V D G H J T
(integer) 11
--------------lrange mylist 0 -1------------------------list查询数据------------- -1是最后一个in the end----------------
127.0.0.1:6379> lrange mylist 0 -1

  1) "huji"
  2) "xiaoming"
  3) "abc"
  4) "123"
  5) "A"
  6) "V"
  7) "D"
  8) "G"
  9) "H"
 10) "J"
 11) "T"
     127.0.0.1:6379> lpush mylist A B C D E F RT TY
     (integer) 19
     127.0.0.1:6379> lrange mylist 0 -1
  12) "TY"
  13) "RT"
  14) "F"
  15) "E"
  16) "D"
  17) "C"
  18) "B"
  19) "A"
  20) "huji"
 21) "xiaoming"
 22) "abc"
 23) "123"
     --------------------------------------数据可以重复
 24) "A"
 25) "V"
 26) "D"
 27) "G"
 28) "H"
 29) "J"
 30) "T"
     ---------------------------------删除的指令----------lpop-----or-------- rpop -------------
     127.0.0.1:6379> lpop mylist
     "TY"
     127.0.0.1:6379> lop mylist
     (error) ERR unknown command 'lop'
     127.0.0.1:6379> lop mylist
     (error) ERR unknown command 'lop'
     127.0.0.1:6379> lpop mylist
     "RT"
     127.0.0.1:6379> rpop mylist
     "T"
     127.0.0.1:6379> rpor mylist
     (error) ERR unknown command 'rpor'
     127.0.0.1:6379> rpop mylist
     "J"
     127.0.0.1:6379> lrange mylist 0 -1
  31) "F"
  32) "E"
  33) "D"
  34) "C"
  35) "B"
  36) "A"
  37) "huji"
  38) "xiaoming"
  39) "abc"
 40) "123"
 41) "A"
 42) "V"
 43) "D"
 44) "G"
 45) "H"
     总结:
     String set get del   
     Hash hset hget hdel  hgetall student
     List   lpush mylist    Rpush mylist     lrange mylist 0 -1
     Set  sadd  semembers 
     4 Redis的数据类型四: 
     Set集合(数据不能重复)
     ---------Set-------------增加数据的内容-----------sadd myset-------
     127.0.0.1:6379> sadd myset 1 2 3 4 5 6 7
     (integer) 7
     127.0.0.1:6379> sadd 1 2 4
     (integer) 2
     127.0.0.1:6379> sadd myset 1 3 4 7
     (integer) 0
     -------------Set---------查询数据的指令-----------smembers myset-------------
     127.0.0.1:6379> smembers myset
     127.0.0.1:6379> srem myset2
     (error) ERR wrong number of arguments for 'srem' command
     127.0.0.1:6379>  srem myser 2 3
     (integer) 0
     ---------------Set-----------删除数据指令--------------------------------
     127.0.0.1:6379> srem myset 2 3 4
     (integer) 3
     127.0.0.1:6379> smbembers
     (error) ERR unknown command 'smbembers'
     127.0.0.1:6379> smbembers myset
     (error) ERR unknown command 'smbembers'
     127.0.0.1:6379> smembers myset
 46) "1"
 47) "5"
 48) "6"
 49) "7"
     5 Redis的数据类型五: 
     -----------Sortedset-------增加数据指令----zadd 78 lisi 56 kl 90 hu--  zadd 名称 分数---------
     127.0.0.1:6379> zadd mysoet 10 liwu 34 ou 67 ji 34 hj 98
     (error) ERR syntax error
     127.0.0.1:6379> zadd 78 lisi 56 kl 90 hu
     (error) ERR syntax error
     127.0.0.1:6379> zadd mysort 20 list 30 wanwu
     (integer) 2
     -------------Sortedset--------查询-----------------------------
     127.0.0.1:6379> zrange mysort 0 -1
 50) "list"
 51) "wanwu"
     --------Sortedset--------查询数据将分数查询出来----------------
     127.0.0.1:6379> zrange mysort 0 -1 withscores
 52) "list"
 53) "20"
 54) "wanwu"
 55) "30"
     -----------------Sortedset------删除数据内容--------------------------------------------------------
     127.0.0.1:6379> zrem mysort wanwu
     (integer) 1
     127.0.0.1:6379> zrange mysort 0 -1 withscores
 56) "list"
 57) "20"
     数据通用的命令符.
     通用命令符一查询所有数据.
     通用命令符二查询数据的类型
     通用命令符三删除数据
     ------通用命令符一---------查询所有数据-----------------
     127.0.0.1:6379> keys *
  58) "bookprick"
  59) "name"
  60) "student"
  61) "sex"
  62) "mysort"
  63) "mylist"
  64) "myset"
  65) "booknum"
  66) "1"
 67) "bbookautor"
     127.0.0.1:6379> keys student
 68) "student"
     --------------------通用命令符二----------------------------查询数据的类型-----------------------------------------------------------------
     127.0.0.1:6379> type name
     string
     127.0.0.1:6379>  type sex
     string
     127.0.0.1:6379>  type syudent
     none
     127.0.0.1:6379>  type student
     hash
     127.0.0.1:6379> type mysort
     zset
     ------------------通用命令符三-----------------删除数据---------------------------------------------------------------------------------------------
     127.0.0.1:6379>  del student
     (integer) 1
     127.0.0.1:6379> hgetall student
     (empty list or set)

11/16号
打开服务器

redis学习。Redlis持久化。在服务器关闭后,数据不会消失。
RDB 默认模式,不需要配置。
CMD窗口:
Microsoft Windows [版本 10.0.19044.1348]
(c) Microsoft Corporation。保留所有权利。

C:UsersMZFAITHDREAM>E:
'E:' 不是内部或外部命令,也不是可运行的程序
或批处理文件。

C:UsersMZFAITHDREAM>E:

E:>E:Redis-x64-3.2.100
'E:Redis-x64-3.2.100' 不是内部或外部命令,也不是可运行的程序
或批处理文件。

E:>cd E:Redis-x64-3.2.100

E:Redis-x64-3.2.100>redis-server.exe
[23260] 16 Dec 14:24:33.339 # Warning: no config file specified, using the default config. In order to specify a config file use redis-server.exe /path/to/redis.conf
                _._
           _.-``__ ''-._
      _.-``    `.  `_.  ''-._           Redis 3.2.100 (00000000/0) 64 bit
  .-`` .-```.  ```/    _.,_ ''-._
 (    '      ,       .-`  | `,    )     Running in standalone mode
 |`-._`-...-` __...-.``-._|'` _.-'|     Port: 6379
 |    `-._   `._    /     _.-'    |     PID: 23260
  `-._    `-._  `-./  _.-'    _.-'
 |`-._`-._    `-.__.-'    _.-'_.-'|
 |    `-._`-._        _.-'_.-'    |           http://redis.io
  `-._    `-._`-.__.-'_.-'    _.-'
 |`-._`-._    `-.__.-'    _.-'_.-'|
 |    `-._`-._        _.-'_.-'    |
  `-._    `-._`-.__.-'_.-'    _.-'
      `-._    `-.__.-'    _.-'
          `-._        _.-'
              `-.__.-'

[23260] 16 Dec 14:24:33.339 # Server started, Redis version 3.2.100
[23260] 16 Dec 14:24:33.339 * The server is now ready to accept connections on port 6379


#

# Save the DB on disk:

#

#   save  

#

#   Will save the DB if both the given number of seconds and the given

#   number of write operations against the DB occurred.

#

#   In the example below the behaviour will be to save:

#   after 900 sec (15 min) if at least 1 key changed

#   after 300 sec (5 min) if at least 10 keys changed

#   after 60 sec if at least 10000 keys changed

#

#   Note: you can disable saving completely by commenting out all "save" lines.

#

#   It is also possible to remove all the previously configured save

#   points by adding a save directive with a single empty string argument

#   like in the following example:

#

#   save ""

save 900 1
save 300 10
save 10000 6
-----------------------------------------------------RDB--------------------------------------------------------------------------------------------------
AOF:存放在
Microsoft Windows [版本 10.0.19044.1348]
(c) Microsoft Corporation。保留所有权利。

C:UsersMZFAITHDREAM>E:
'E:' 不是内部或外部命令,也不是可运行的程序
或批处理文件。

C:UsersMZFAITHDREAM>E:

E:>E:Redis-x64-3.2.100
'E:Redis-x64-3.2.100' 不是内部或外部命令,也不是可运行的程序
或批处理文件。

E:>cd E:Redis-x64-3.2.100

E:Redis-x64-3.2.100>redis-server.exe redis.windows.conf
                _._
           _.-``__ ''-._
      _.-``    `.  `_.  ''-._           Redis 3.2.100 (00000000/0) 64 bit
  .-`` .-```.  ```/    _.,_ ''-._
 (    '      ,       .-`  | `,    )     Running in standalone mode
 |`-._`-...-` __...-.``-._|'` _.-'|     Port: 6379
 |    `-._   `._    /     _.-'    |     PID: 27024
  `-._    `-._  `-./  _.-'    _.-'
 |`-._`-._    `-.__.-'    _.-'_.-'|
 |    `-._`-._        _.-'_.-'    |           http://redis.io
  `-._    `-._`-.__.-'_.-'    _.-'
 |`-._`-._    `-.__.-'    _.-'_.-'|
 |    `-._`-._        _.-'_.-'    |
  `-._    `-._`-.__.-'_.-'    _.-'
      `-._    `-.__.-'    _.-'
          `-._        _.-'
              `-.__.-'

[27024] 16 Dec 14:26:25.583 # Server started, Redis version 3.2.100

[27024] 16 Dec 14:26:25.583 * The server is now ready to accept connections on port 6379
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------

appendonly yes

# The name of the append only file (default: "appendonly.aof")

appendfilename "appendonly.aof"

# The fsync() call tells the Operating System to actually write data on disk

# instead of waiting for more data in the output buffer. Some OS will really flush

# data on disk, some other OS will just try to do it ASAP.

#

# Redis supports three different modes:

#

# no: don't fsync, just let the OS flush the data when it wants. Faster.

# always: fsync after every write to the append only log. Slow, Safest.

# everysec: fsync only one time every second. Compromise.

#

# The default is "everysec", as that's usually the right compromise between

# speed and data safety. It's up to you to understand if you can relax this to

# "no" that will let the operating system flush the output buffer when

# it wants, for better performances (but if you can live with the idea of

# some data loss consider the default persistence mode that's snapshotting),

# or on the contrary, use "always" that's very slow but a bit safer than

# everysec.

#

# More details please check the following article:

# http://antirez.com/post/redis-persistence-demystified.html

#

# If unsure, use "everysec".

# appendfsync always

appendfsync everysec

# appendfsync no

*************************************************appendonly no 关闭                   appendonly yes 打开*********************

A_13用java代码 *** 作Redis数据库。
package com.redis.test;

import java.util.List;
import java.util.Map;
import java.util.Set;

import org.apache.tomcat.jni.OS;
import org.junit.Test;

import redis.clients.jedis.Jedis;


public class RedisTest {
	@Test
	public void test1() {
		
		Jedis jedis =new Jedis("localhost",6379);
		 System.out.println("从redis数据库中获取名称"+jedis.get("name")); 
		 System.out.println("从redis数据库中获取名称"+jedis.get("sex")); 
		 System.out.println("从redis数据库中获取名称"+jedis.get("number")); 
		jedis.set("phone", "1234556");
		System.out.println("增加成功1");
		long q =jedis.del("name");
		if(q>0) {
			System.out.println("删除成功");
		}
		jedis.close();
	}
		
	
		@Test
		public void test2() {
			Jedis jedis =new Jedis("localhost",6379);
			String name=jedis.hget("student", "name");
			String age=jedis.hget("student", "age");
			String sex=jedis.hget("student", "sex");
			System.out.println(name+age+sex);

			
			
		long l=	jedis.hset("student", "adress", "江西省");
		if(l>0) {
			System.out.println("删除成功");
		}
			//增加数据
		String adress=jedis.hget("student", "江西省");	
		System.out.println(adress);
		jedis.hdel("student", "name");
		//查询数据
	Map map=	jedis.hgetAll("student");
	map.forEach((key,value)->System.out.println(key+"="+value));
	jedis.close();

		}
	
	
	//list的集合
	@Test
	public void test3() {
		// *** 作list的集合
		Jedis jedis =new Jedis("localhost",6379);
		//从left增加数据
		jedis.lpush("mylist", "张三","李四","万物","hellow");
		jedis.rpush("Amylist", "B张三","C李四","D万物","Ehellow");
		
	List olList	=jedis.lrange("myslist", 0, -1);
	olList.forEach(s->System.out.println(s));
	
	String s=jedis.lpop("mylist");
		System.out.println("删除一条数据"+s);
		String s1=jedis.rpop("mylist");
		System.out.println("删除一条数据"+s1);
		jedis.close();

	}
	
	//Set集合
	@Test
	public void test4() {
		Jedis jedis =new Jedis("localhost",6379);
	long l=	jedis.sadd("myset","256","3373","373");
	if(l>0) {
		System.out.println("增加成功");
		
	}else {
		System.out.println("元素不能重复");
	}
		
		Set oSet =jedis.smembers("myset");
		oSet.forEach(x->System.out.println(x));
		jedis.close();

	}
	
	
	@Test
	public void test5() {
		Jedis jedis =new Jedis("localhost",6379);
		jedis.zadd("mysort", 34,"王五");
		jedis.zadd("mysort", 56, "小康");
		jedis.zadd("mysort", 14,"四小五");
		jedis.zadd("mysort", 66, "小二康");
		
	Set oSet =jedis.zrange("mysort", 0,-1);
	oSet.forEach(s->System.out.println(s));
	jedis.close();
	jedis.zrem("mysort", "小二康");
		
	
		
		
		
	}
	
		}

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5686102.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存