Java Web接口和类

Web开发的标准目录结构

在这里插入图片描述
在这里插入图片描述

JSP

  • 名称:Java Server Pages

JSP和Servlet的比较

  • JSP和Servlet都是Java的Web解决方案
类型实现html的方式优缺点
JSP可以嵌入到HTML语句中,大大简化了网页的设计修改自动并入任何文件的变动,加载运行很快
Servlet一句一句输出,改代码不是很方便任何文件的变动都需要对此Servlet重编译
1、JSP的开发就是在html语言中嵌入Java代码
通过<%%>嵌入Java代码(Scriptlet)
2、第一次请求JSP文件,会生成对应的Servlet文件,并把Servlet文件(Java文件)编译成class文件,最后响应给客户端。(之后不需要,速度加快)

语法:

1、注释:/**///、<%-- --%>(客户端无法看见(隐式注释))、<!-- -->
2Scriptlet(脚本小程序)
<%%><%!%><%=%>(编写Java代码)

三种指令:

  • page指令: 用于传递与页面相关的信息,如缓冲区信息、内容类型
    和出错处理信息等。
  • include指令:用于在页面中包含一个外部的文档。如著作权文档或
    者公司信息文档——把通用内容写在一个文档中,然后包含在各个
    页面中,比直接写在各个JSP页面中更容易维护。当然,被包含的文
    件也可能是另一个JSP文件。
  • taglib指令:用于指出页面可以调用的一个客户标签库,常用于自
    定义标签。

page指令:

1、contentType:定 义 JSP 字 符 的 编 码 和 页 面 响 应 的 MIME 类 型 , 如 果 是 中 文 的 话 则 使 用 如 下 形 式 :contentType="text/html;charset=GBK"
2、import: 此jsp页面要导入那几个操作包,例:import="java.util.*"3、isErrorPage:可以设置truefalse,正确页面跳转到什么,错误页面跳转到什么(errorPage="error.jsp", 内容显示的是error.jsp, 但是地址栏不变)
<%@ page erroePage="error.jsp"%>
<%@ page isErrorPage="true"%> // 表示此页面可以处理错误
4、pageEncoding:JSP页面的字符编码,默认值为pageEncoding="iso-8859-1",如果是中文则可以设置为:pageEncoding="GBK"

include指令(动态和静态):

  • 静态包含语法:
通过执行JSP,生成的Java文件,可知JSP文件是先生成Java文件,后执行
<%@ include file="要包含的文件路径"%>
例子:<%@ include file="info.htm"%>
  • 动态包含语法:
动态包含:会把包含文件和被包含文件都编译为Java文件,然后一起执行
1、不传递参数:
<jsp:include page="{要包含的文件路径 | <%=表达式%>}" flush="true|false"/(默认true)>
2、传递参数:
<jsp:include page="{要包含的文件路径 | <%=表达式%>}"flush="true | false">
<jsp:param name="参数名称" value="参数内容"/>
... 可以向被包含页面中传递多个参数
</jsp:include>

内置对象:

  • 为了简化用户开发,系统定义好的的,直接使用
1 pageContext javax.servlet.jsp.PageContext JSP的页面容器
2 request javax.servlet.http.HttpServletRequest 得到用户的请求信息
3 response javax.servlet.http.HttpServletResponse 服务器向客户端的回应信息
4 session javax.servlet.http.HttpSession 用来保存每一个用户的信息
5 application javax.servlet.ServletContext 表示所有用户的共享信息
6 config javax.servlet.ServletConfig 服务器配置,可以取得初始化参数
7 out javax.servlet.jsp.JspWriter 页面输出
8 page java.lang.Object 表示从该页面中表示出来的一个Servlet实例
9 exception java.lang.Throwable 表示JSP页面所发生的异常,在错误页中才起作用

四种属性(常见)范围(可共享的范围)

• pageContext:只在一个页面中保存属性,跳转之后无效。
• request:只在一次请求中保存,服务器跳转后依然有效。
• session:在一次会话范围中,无论何种跳转都可以使用,但是新开浏览器无法使用。
• application:在整个服务器上保存,所有用户都可以使用

属性操作方法:

1、Page属性范围:只在当前JSP页面有效(每个JSP都会创建新的实例对象)
2、要想有效,可通过request请求访问,可在跳转页面后继续保存信息(超链接不可获取请求)(需要Get或Post)(只创建一次实例对象)
3、Session可以获取前两个请求,但浏览器关闭后,将不在保存他(和它本身会话性质相同)(刷新页面也会共享JavaBean实力,会叠加)
4、application只要服务器不关闭,都可以获取它的属性(最大范围)
(不要设置太多的application太多属性,会影响服务器性能)
1 public void setAttribute(String name,Object o) 设置属性的名称及内容
2 public Object getAttribute(String name) 根据属性名称取得属性
3 public void removeAttribute(String name) 删除指定的属性

JDBC(Java数据库连接)

  • API(类和接口)

连接过程:

  • 加载数据库驱动—发送查询语句—建立与数据库连接—获取查询结果

操作的基本流程

DBUtils(数据库连接池)代码:
package com.utils;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class DBUtils 
{ 
	// 加载驱动,并建立数据库连接 
	public static Connection getConnection() throws SQLException, ClassNotFoundException 
	{ 
		Class.forName("com.mysql.cj.jdbc.Driver"); 
		String url = "jdbc:mysql://localhost:3306/demo?serverTimezone=GMT&useSSL=false"; 
		String username = "root"; 
		String password = "123456"; 
		Connection conn = DriverManager.getConnection(url, username, password); 
		return conn; 
	}
	//释放数据库连接
	public static void release(ResultSet rs, Statement stmt, Connection conn) throws SQLException 
	{ 
		if (rs != null) 
		{ 
			rs.close();
		}
		rs = null; 
		release(stmt, conn); 
	}
	public static void release(Statement stmt, Connection conn) throws SQLException 
	{ 
		if (stmt != null) 
		{ 
			stmt.close(); 
		}
		stmt = null; 
		if (conn != null) 
		{ 
			conn.close(); 
		}
		conn = null; 
	}
}

JavaBean

优点

  • 在JSP开发中可以使用JavaBean减少重复代码
  • JSP中提倡少些java代码,所以我们可以通过写JavaBean代码,然后导入JSP文件中,进行操作
  • 最大的特点:表单的交互
文件配置及导包问题
<%@ page contentType="text/html" pageEncoding="GBK"%>
<%@ page import="com.org.SimpleBean"%>

属性:

1.所有的类必须放在一个包中,在WEB中没有包的类是不存在的;
2.所有的类必须声明为public class,这样才能够被外部所访问;
3.类中所有的属性都必须封装,即:使用private声明;
4.封装的属性如果需要被外部所操作,则必须编写对应的setter、getter方法;
5.一个JavaBean中至少存在一个无参构造方法,此为JSP中的标签所使用。

指令:

1<jsp:useBean id="实例化对象名称" scope="保存范围" class="包.类名称"/>(导包)
主要属性:
• id:表示实例化对象的名称
• scope:表示此对象保存的范围,一共有四种属性范围:page、request、session、application
• class:对象所对应的包.类名称
2<jsp:setProperty>(给指定属性设值)
自动匹配:<jsp:setProperty name="实例化对象的名称(id)" property="*"/>(最实用,保证名称和属性名同名才可使用)
指定属性:<jsp:setProperty name="实例化对象的名称(id)" property="属性名称"/>
指定参数:<jsp:setProperty name="实例化对象的名称(id)" property="属性名称"param="参数名称"/>
指定内容:<jsp:setProperty name="实例化对象的名称(id)" property="属性名称"value="内容"/>

<jsp:setProperty name="simple" property="name"/>
<==> String username=request.getParameter("name"); simple.setName(username);

DAO(数据访问对象)

  • 主要的功能就是用于进行数据操作的
  • 企业分层架构:客户曾(浏览器访问)、显示层(JSP/Servlet)、业务层(DAO操作进行组合,组合成完整的业务逻辑)、数据层(DAO,增删改查等原子性操作)

组成部分:

1.DatabaseConnection:专门负责数据库的打开与关闭操作的类;
2.VO:主要由属性、setter、getter方法组成,VO类中的属性与表中的字段相对应,每一个VO类的对象都表示表中的每一条记录;
3.DAO:主要定义操作的接口,定义一系列数据库的原子性操作,例如:增加、修改、删除、按ID查询等;
4.Impl:DAO接口的真实实现类,完成具体的数据库操作,但是不负责数据库的打开和关闭;
5.Proxy:代理实现类,主要完成数据库的打开和关闭并且调用真实实现类对象的操作;
6.Factory:工厂类,通过工厂类取得一个DAO的实例化对象。

实战:

MVC分层Web开发

Mode Ⅰ

在这里插入图片描述

处理情况分为两种:
1、完全使用JSP进行开发
2、使用JSP + JavaBean的模式进行开发

Mode Ⅱ

在这里插入图片描述

MVC设计模式(Model-View-Controller):
以Servlet为主体, 由Servlet接收所有的客户端请求,之后根据请求调用相应的JavaBean,并将所有的显示结果交给JSP完成,也就是俗称的MVC设计模式。

• 模型层(Model)
模型所表示的是具体做工作的部分,并对应用所要解决的实际问题进行建模。
• 视图(显示层)(View)
视图是模型的表示,用户可以看到视图并与之交互。
• 控制器(控制层)(Controller)
控制器是应用中对用户命令做出响应的部分,它要决定如何修改或获取模型,还要决定如何显示视图

EL/JSTL(JSP)

  • EL(表达式语言Expression Language)(JSP2.0新增)
${属性名称.属性范围.名称} <==> <%= 表达式%>
${pagecontext.request.remoteAddr}
${pageContext.session.id}

1 pageScope 表示 从page属性范围查找输出属性(用的较多)
2 requestScope 表示 从request属性范围查找输出属性(用的较多)
3 sessionScope 表示 从session属性范围查找输出属性(用的较多)
4 applicationScope 表示 从application属性范围查找输出属性(用的较多)
5 pageContext 表示 javax.scrvlet.jsp.PageContext对象
6 param  接收传递到本页面的参数
7 paramValues 接收传递到本页面的一组参数
8 header 取得一个头信息数据
9 headerValues 取出一组头信息数据
10 cookie 取出cookie中的数据
11 initParam 取得配置的初始化参数

{}中的运算符:+-*/% == != < > <= >= && || !

JSP客户标签

  • TagSupport
要想实现一个标签,直接继承javax.servlet.jsp.tagext.TagSupport类
如果要定义的标签内没有标签体,则直接覆写TagSupport类中的doStartTag()方法即可。

在这里插入图片描述
在这里插入图片描述

.tld文件中进行配置,然后进行<mytag:hello/>定义,就会执TagSupport类中的doStartTag()方法
<taglib-uri>映射名称<taglib-uri>

tag标签的组成

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值