JavaWeb JSP学习笔记

别说谁变了你拦得住时间么 提交于 2019-12-14 07:15:47

博客咱也不会写啊
两节课就要把笔记整理
第一节课是Tomcat的安装还有Eclipse与Tomcat的连接
第二节学的简单动态网页的制作

课后有了第一个小作业
如何用jsp来写一个显示当前时间的动态页面

代码如下

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    <%@page import="java.util.Date,java.text.*"%>
<!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>
<%
Date date=new Date();
out.println("当前的时间是"+date);
%>

</body>
</html>

-----------------------------2019.10.08------------------------------21.30--------------------------

JSP语法篇

俺错了,一直自我感觉良好,觉得第一节课没有什么值得做笔记的
出大问题,后面的课我就直接心态崩了
所以整理些基础知识吧

基本的组成

一、JSP模板

 <%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

JSP页面中的HTML内容称之为JSP模版元素。
JSP模版元素定义了网页的基本骨架,即定义了页面的结构和外观。

二、JSP表达式

<%=变量或表达式%>
举例:输出当前系统时间: <%= new java.util.Date() %>
JSP脚本表达式中的变量或表达式后面不能有分号(;)

三、JSP脚本片断

<%
 多行java代码
   %>

在<% %>中可以定义变量、编写语句,不能定义方法。
# JSP脚本片断中只能出现java代码,不能出现其它模板元素,JSP引擎在翻译JSP页面中,会将JSP脚本片断中的Java代码将被原封不动地放到Servlet的_jspService方法中。
# JSP脚本片断中的Java代码必须严格遵循Java语法,例如,每执行语句后面必须用分号(;)结束。
# 在一个JSP页面中可以有多个脚本片断,在两个或多个脚本片断之间可以嵌入文本、HTML标记和其他JSP元素。

四、JSP声明

<%!
    java代码
    %>

五、JSP注释

在JSP中,注释有两大类:

显式注释: 直接使用HTML风格的注释: <!- - 注释内容- -> 在浏览器中查看源文件的时候是可以看得到的

隐式注释: 直接使用JAVA的注释: //、/……/ 浏览器中查看源文件时是看不到注释的内容的

JSP自己的注释: <%- - 注释内容- -%> 浏览器中查看源文件时是看不到注释的内容的

--------------------------------------2019—10–10----------18-00---------------------------------
秋后的蚂蚱又来蹦哒了

JSP的指令标识

3个指令标签

1 、page指令

page指令用户定义JSP页面中的全局属性 ,Eg:<%@ page attr1=”value1” atrr2=”value2”.......%>

page指令对整个页面有效,包括静态的包含文件,但page指令不能用于被动态包含的文件,例如使用jsp:include包含的文件。在一个JSP页面中可以使用多个page指令,但page指令中的属性只能出现一次(import属性除外)。

page指令的常用属性如下:

(1) language属性 该属性用于设置JSP页面使用的语言,目前只支持Java语言。例:<%@ page language=”java” %>

(2) extends属性 该属性用于设置JSP页面所继承的Java类,JSP和Servlet都可以继承指定的父类,但该属性并不常用.

(3) import属性 该属性用于设置JSP所导入的类包,JSP页面可以嵌入Java代码片段,这些Java代码在调用API时需要导入相应的类包。例:<%@page import=”java.util.*” %>

(4) pageEncoding属性 该属性用于定义JSP页面的编码格式,指定的文件编码格式。例:<%@ page pageEncoding=”UTF-8” %>

(5) contentType属性 该属性用于设置JSP页面的MIME类型和字符编码,浏览器会根据些解释页面。 例:<%@ page contentType=”text/html;charset=utf-8” %>

(6) session属性 该属性用于定义JSP页面是否使用session会话对象,其值是boolean类型,默认值为true. Eg:<%@ page session=”true” %>

(7) buffer属性 该属性用于设置out对象所使用的缓冲区大小,默认大小是8KB,单位只能是8的倍数。 Eg:<%@ page buffer=”128KB” %>

(8) autoFlush属性 该属性用于定义JSP页面缓冲存满时是否自动刷新缓存。默认值为true,如果设置为false,则缓存填满时可能会发生异常. Eg:<%@ page autoFlush=”true” %>

(9) info属性 该属性用于设置JSP页面的一些相关信息,信息可以在Servlet接口的getServletInfo()方法中获取得到。Eg:<%@page info=”This is a JSP” %>

(10) isErrorPage属性 该属性可以将当前页面定义为错误页面来处理另一个页面转发而来的错误,即异常处理。设置为true以后可以使用exception对象.

(11) errorPage属性 该属性用于定义此JSP页面发生错误时所转发到的另外一个JSP页面,用于处理此页面所发生的错误。 Eg:<%@page errorPage=”error.jsp” %>
(12) isELIgnored属性 该属性用于定义些页面是否忽略EL表达式的使用。

2 、include指令

Include指令用于文件包含,该指令可以在一个JSP页面中包含另外一个文件中的内容,并且只能支持静态包含,意思是被包含文件的所有内容都被原样包含到时该JSP页面中,被包含的文件可以是一段Java代码,HTML代码,或者是另一个JSP页面。
Eg:<%@include file=”other.jsp” %>

3 、taglib指令

taglib指令允许用户使用标签库自定义新的标签,

Eg:<% taglib uri=“taglibURI” prefix=“tabPrefix”%>

taglib指令中的uri属性用于根据标签的前缀对自定义的标签进行唯一的命名,其值可以食相对路径,绝对路径或标签库描述文件。属性prefix制定了标签的前缀。

7个动作指令

动作指令与编译指令不间,编译指令是通知 Servlet 引擎的处理消息,而动作指令只是运行时的脚本动作。编译指令在将JSP 编译成 Servlet 时起作用:处理指令通常可替换成 Java脚本,是 JSP脚本的标准化写法。

JSP 7 个 动作指令如下 :

1. jsp:forward: 执行页面转向,将请求的处理转发到下一个页面。
2. 2.jsp:param: 用于传递参数,必须与其他支持参数曲标签一起使用。
3. jsp:include: 用于动态引入一个 JSP 页面。
4. jsp:p1ugin: 用于下载 JavaBean 或 Applet 到客户端执行。
5. jsp:useBean: 使用 JavaBean。
6. jsp:setProperty: 修改 JavaBean 实例的属性值。
7. jsp:getProperty: 获取 JavaBean 实例的属性值。

依次讲解这些动作指令

1.jsp:forward动作 (拿目标页面代替原有页面)

jsp:forward动作把请求转到另外的页面。可以转发静态的HTML页面,也可以转发动态的JSP页面,或者转发到容器中的servlet jsp:forward标记只有一个属性page。 page属性包含的是一个相对URL。 page的值既可以直接给出,也可以在请求的时候动态计算获得上个页面传个来的参数值。

2.jsp:include动作 (拿目标页面插入原有页面)

该动作是一个动态的include指令,也用于带入某个页面,他不会导入被include页面的编译指令,仅仅导入页面的body内容插入到本页面,该动作把指定文件插入正在生成的页面。

其语法如下: flush:用于指定输出缓存是否转移到被导入的文件中, true:包含在被导入的文件中 false:包含在源文件中。

前面已经介绍过include指令,它是在JSP文件被转换成Servlet的时候引入文件,而这里的jsp:include动作不同,插入文件的时间是在页面被请求的时候。jsp:include动作的文件引入时间决定了它的效率要稍微差一点,而且被引用文件不能包含某些JSP代码(例如不能设置HTTP头),但它的灵活性却要好得多。

例如,下面的JSP页面把4则新闻摘要插入一个“What’'s New ?”页面。改变新闻摘要时只需改变这四个文件,而主JSP页面却可以不作修改:

  <P>
  Here is a summary of our four most recent news stories:
  <OL>
  <LI><jsp:include page="news/Item1.html" flush="true"/>
  <LI><jsp:include page="news/Item2.html" flush="true"/>
  <LI><jsp:include page="news/Item3.html" flush="true"/>
  <LI><jsp:include page="news/Item4.html" flush="true"/>
  </OL> 

------------------------------------------------10.12---------------------------------------------------------------------------------------

JSP的内置对象

一:内置对象的分类

在这里插入图片描述
在这里插入图片描述
这些对象不用经过显示声明直接引用,也不用代码创建其实例,可在程序中直接使用,由Web Container为对象实例化。

二:内置对象属性保存范围

(1) page:在JSP中设置一个页的属性范围,必须通过pageContext完成,属性值只能在当前页取得。

(2) request:将属性保存在一次请求范围之内,必须使用服务器跳转jsp:forward/,通过客户端跳转和超链接等无法取得。

(3) session:只保留一个用户的信息,不管什么跳转都可以取得属性,与session有关的任何打开的页面都可以取得session。

(4) application:所有用户都可以取得此信息,此信息在整个服务器上被保留,所有网页窗口都可以取得数据。

三:JSP内置对象的常用方法

(1) request请求对象

request对象属于 Javax. ervlet ServletRequest接口的实例化对象。
【作用】 request对象不但可以用来设置和取得 request范围变量,还可以用来获得客户端请求参数、请求的来源、表头、 cookies等。
【机制】 当用户请求一个JSP页面时,JSP页面所在的 Tomcat服务器将用户的请求封装在内置对象 request中。 request内置对象代表了客户端的请求信息,主要用于接收客户端通过HTTP协议传送给服务器端的数据。在客户端的请求中如果有参数,则该对象就有参数列表

(2) response响应对象

response对象属于Javax.servlethttpHttpservletrEsponse接口的实例化对象
【作用】 response对象用来给客户端传送输出信息、设置标头等。
【机制】 response对象的生命周期由JSP容器自动控制。当服务器向客户端传送数据JSP容器就会创建 response对象,并将请求信息包装到 response对象中。它封装了JSP性的响应,然后被发送到客户端以响应客户的请求,当JSP容器处理完请求后, response
对象就会被销毁。

(3) session会话对象

session对象属于Javax.servlet.http.Htpsessio接口的实例化对象。
【作用】 session对象用来表示用户的会话状况,一般用于保存用户的各种信息,直到生命周期(一般为900s)超时或者被人为释放掉为止。
【机制】当一个用户首次访问服务器上的一个JSP页面时,JSP引擎产生一个 session对象,同时分配一个 String类型的ID号,JP引擎同时将这个ID号发送到用户端,存放在Cookie中,这样session对象和用户之间就建立了一一对应的关系。当用户再访问连接该服务器的其他页面时,不再分配给用户新的 Session对象。直到关闭浏览器后,服务器端该用户的 Session对象才取消,与用户的对应关系也一并消失。当重新打开浏览器再连接到该服务器时,服务器会为该用户再创建一个新的 Session对象。

(4) application应用程序对象

application对象属于Javax.servlet.jsp.ServletContext接口的实例化对象。
【作用】application对象用户取得和设置Servlet的相关信息,实现了用户间数据的共享,可存放全局变量
【机制】开了于服务器的启动,知道服务器关闭,这样在用户的前后连接或不同用户之间的连接中,可以对此对象的同一属性进行操作。

https://blog.csdn.net/weixin_42717928/article/details/91451649

----------------------------------------------------10.21------------------20.21------------------------------------------------------

JSP连接数据库

一、连接数据库

我用到的包为mysql-connector-java-5.1.47-bin.jar

导入jar包

方法一

1、在Java Build Path中倒导入。
在这里插入图片描述
2、拷入WEB-INF下的lib文件夹
在这里插入图片描述

注意:
我推荐使用第二种方法,如果使用第一种,更换机器后需要重新导入包。如果使用第二种,在新的机器上直接把文件夹导入就可以继续编写。(大赞)

二、连接数据库

<%
		//加载数据驱动
		Class.forName("com.mysql.jdbc.Driver");
		//创建连接
		Connection conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/mysql","root","root");
		//创建语句容器
		PreparedStatement stmt=conn.prepareStatement("select * from loginsystem where uname=? and upassword=?");
		stmt.setString(1,uname);
		stmt.setString(2,upassword);
		ResultSet rs=stmt.executeQuery();
		//(rs.next())
		//"admin".equals(name)&&"123456".equals(pwd)
		if(rs.next()){
			response.sendRedirect("login_success.jsp");
			rs.close();
			stmt.close();
			conn.close();
			
		}else{
			out.print("用户名或密码错误,请重新输入!");  
			rs.close();
			stmt.close();
			conn.close();
		}

		
        
		
	
		// System.out.println(name) ;
		// System.out.println(password) ;
		%>

过程

(1)加载数据库驱动

Class.forName(“com.mysql.jdbc.Driver”);

(2)建立连接

Connection conn = DriverManager.getConnection(“jdbc:mysql://localhost:3306/数据库名称”,“数据库用户名”,“数据库密码”);

(3)创建Statement对象

Statement st = conn.createStatement();

PreparedStatement stmt=conn.prepareStatement(“select * from loginsystem where uname=? and upassword=?”);(就很聪明)

(4)执行语句

ResultSet rs=stmt.executeQuery();

三、数据库表的设置

在这里插入图片描述
简单明了方便快捷,他就很舒服
什么时候能直接中文编码就好了

-----------------------------------------------------2019—10.21------------------21.22--------------------------------------------

JSP页面编写基础之框架

MVC框架(基础,常用)

在这里插入图片描述

M模型层:Javabean

应用程序中用于处理应用程序数据逻辑的部分。
通常模型对象负责在数据库中存取数据。

V视图层:JSP

主要是显示结果、获取输入值
是应用程序中处理数据显示的部分
通常视图是依据模型数据创建的。

C控制器:servelet

是应用程序中处理用户交互的部分。
通常控制器负责从视图读取数据,控制用户输入,并向模型发送数据。
通过前后台交互处理数据,即前台获取数据,然后传递给后台,后台操作数据,然后传给前台显示。

-----------------------------------------------------2019—11.03------------------20.32--------------------------------------------

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!