目录
- JSP复习快速复习提纲
- 第一章 JSP简介
- 1.JSP的定义
- 2.Tomcat各个服务器安装目录各文件夹含义
- 第二章 JSP语法
- 1.JSP语法包含的五种元素
- 2.了解JSP页面运行原理(了解)
- 3.如何声明变量、定义类、定义方法
- 4.插入Java程序片和表达式
- 5.JSP当中的全局变量和局部变量
- 6.JSP注释
- 7.JSP指令
- Page指令
- include指令
- JSP动作标记语法
- 第三章 JSP内置对象
- Request对象
- 常见的HTML标记
- Response对象
- Session对象
- Application对象
- session对象和Application区别
- 第四章 JavaBean
- JavaBean概念
- 使用JavaBean
- usebean
- setProperty存储属性
- getProperty属性
- 第五章 Servlet
- Servlet概念
- xml文件的编写
- Servlet的生命周期
- JSP访问Servlet
- Servlet之间的通信
- Servlet中方法
- Servlet过滤器
- 第六章 JSP访问数据库
- JDBC概述
- 建立数据库
- 加载驱动
- 建立链接
- 增删改查
- 第七章 MVC编程模式
- MVC概述
JSP复习快速复习提纲
第一章 JSP简介
1.JSP的定义
JSP全称是“Java Server Page”,是服务器界面,是一种动态网页开发技术,通过使用JSP标签在HTML中插入Java代码,JSP在进行编写执行后,把生成的页面反映给客户端。
2.Tomcat各个服务器安装目录各文件夹含义
(1)bin目录:该目录主要用于存放tomcat的命令
(2)config目录:用于存放tomcat的一些配置文件。server.xml:可以设置端口号、设置域名或者Ipweb.xml:可设置支持的文件类型context.xml:可设置配置数据源之类的信息tomcat-users.xml:用来配置管理tomcat用户与权限
(3)lib目录:该目录主要用来存放tomcat运行需要加载的jar包
(4)logs目录:用来存放tomcat在运行过程中产生的日志信息
(5)temp目录:用来存放tomcat在运行过程中产生的临时文件
(6)webapps目录:主要用来存放应用程序,当tomcat启动时会去加载webapps目录下的应用程序。
(7)work目录:用来存放tomcat在运行后编译的文件,例如JSP编译后的文件。
第二章 JSP语法
1.JSP语法包含的五种元素
(1)普通的Html页面
(2)JSP标记
(3)变量和声明方法
(4)JAVA程序片
(5)JAVA表达式
2.了解JSP页面运行原理(了解)
jsp工作原理︰所有的JSP应用程序在首次载入时都被翻译成Servlet文件,然后再运行,这个工作主要是由JSP引擎来完成。当第一次运行一个JSP页面时,JSP引擎要完成将JSP文件翻译成Servlet文件,Servlet文件是Java应用程序;JSP引擎调用Java编译器,编译Servlet文件得到可执行的代码文件(.class文件)。
JSP引擎调用Java虚拟机解释执行.class文件,并将运行结果返回给服务器;服务器将运行结果以HTML形式作为响应返回给客户端的浏览器。由于一个JSP页面在第一次被访问时要经过翻译、编译和执行这几个步骤,所以客户端得到响应所需要的时间比较长。当该页面再次被访问时,它对应的.class文件已经生成,不需要再次翻译和编译,JSP引擎可以直接执行.class文件,因此JSP页面的访问速度会大为提高。
3.如何声明变量、定义类、定义方法
- 声明变量
<%!
int x,y=100,z;
String tom=null,jery="Love JSP";
Date date;
%>
- 定义类
<%!
public class Circle
{
double r;
Circle(double r)
{
this.r = r;
}
double 求面积()
{
return Math.PI*r*r;
}
}
%>
- 定义方法
<%!
int num = 0; //声明一个计数变量
synchronized void add()
{
//该方法实现访问次数的累加操作
num++;
}
%>
4.插入Java程序片和表达式
程序片
java片段(scriptlet): <% java代码; %>
表达式
用于输出表达式的值到浏览器,<%=表达式 %> 在表达式中不能加分号(;)
5.JSP当中的全局变量和局部变量
<%!int x = 10; //全局变量
%>
<%int y = 10; //局部变量out.println("<h2>x = " + x++ + "</h2>");out.println("<h2>y = " + y++ + "</h2>");
%>总结:
<%! %>包裹的为全局变量
<% %>包裹的为局部变量
6.JSP注释
<%-- 注释信息 --%>
以上注释在客户端中通过源代码看不到注释中的内容,安全性高
7.JSP指令
JSP指令的一般格式:
<%@指令 属性名="值"%>
指令类型
- page指令
- include指令
Page指令
page指令用来定义整个jsp页面的一些属性和这些属性的值,属性值用单引号或者双引号括起来
语法格式:
<%@ page 属性1= “值1” 属性2=“值2” …%>
page指令属性
指令名称 | 指令简介 |
---|---|
language | language="java"生命JSP程序文件所使用的语言,默认java |
import | 用来指定JSP页面中需要导入的包,多包导入需要逗号隔开 |
info | info="text"用来设置JSP页面中的文本信息,可通过getServletInfo()方法获取 |
pageEncoding | 更改字符串级 |
contentType | 表明发送到客户端的程序文件的类型和字符编码 |
注意:
JSP页面中使用page指令只能为contentType指定一个值,不允许两次使用Page指令传递给contentType属性。
<%--错误示范--%>
<%@ page language="java" contentType="application/msword" %>
<%@ page language="java" contentType="text/html" charset="gb2312" %>
include指令
基本语法格式
<%@ include file="url" %>
例如:
<%@ include file="example2.jsp" %>
嵌入文件,相当于把这个页面插入到另一个页面当中。
JSP动作标记语法
语法格式
<jsp: include page="URL"/>
<jsp: include page="URL">param
</jsp: include>
**当JSP页面运行时才将文件加载进来**
注意
<%@ include %>指令和<jsp: include/>动作的区别
(1)<%@ include %>静态包含,是在编译阶段就把次级页面 代码包含进来 ,即不能于当前页面的代码有冲突。优点:执行速度嘎嘎快
(2)<jsp: include/>是在JSP页面执行时才处理文件,是将次级页面 输出进来 。独立于当前JSP页面,动态包含。缺点:执行慢了点喔。
第三章 JSP内置对象
Request对象
request对象作用
内置对象request封装了用户请求页面时所提交的信息,该对象调用相应的方法可以获取封装的信息。
request对象常用方法
方法名 | 描述 |
---|---|
getParameter(String name) | 获得客户端传递给服务器的name参数的值,否者返回null |
getParameterValues(String name) | 以字符串的形式返回指定参数的所有值 |
getProtocol() | 获取请求的通信协议,如Http/1.1 |
getServletPath() | 获取请求的JSP页面所在的目录呀~ |
getContentLength() | 获取HTTP请求的长度 |
getMethod() | 获取表单提交信息的方式,post或者get |
getHeader(String s) | 获取请求头中的值 |
getHeaderNames() | 获取头名字的一个枚举 |
getHeaders(String s) | 获取头的全部值 |
getRemoteAddr() | 获取客户机IP地址 |
getRemoteHost() | 获取客户机的名称 |
getServerName() | 获取服务器的名称 |
getServerPort() | 获取服务器的端口号 |
getParameterNames() | 获取提交信息体中部分name参数的一个枚举 |
setAttribute(String name,Java.lang.Object obj) | 设置名字为name的request参数值,值为obj |
getAttribute(String name) | 获取request对象name参数的值 |
常见的HTML标记
标记 | 描述 |
---|---|
<h1>~<h6> | 用于定义标题,从一级标题到六级标题。 |
<p> | 用于定义段落。 |
<a> | 链接标记,用于定义链接和超链接。 |
<img> | 图像标记,用于插入图片 |
<ul><ol><li> | 列表标记,用于创建无序列表和有序列表。 |
<table><tr><td> | 表格标记,用于创建表格 |
<strong><em><u><s> | 文本样式标记,用于为文本添加粗体、斜体、下划线、删除线等样式。 |
… |
Response对象
response对象作用
response对象用于对用户的请求做出响应。
response对象常用方法
方法名 | 描述 |
---|---|
setContentType(String s) | 改变返回MIME类型,按照新的响应类型返回 |
sendRedirect(URL url) | 重定向,将用户重新引导到一个页面(输错登录信息,引导重新回到登录页) |
setHeader(“key”,“value”) | 设置新的HTTP头,例如response.setHeader(“refresh”,“5”);每五秒刷新一次 |
Session对象
session对象用来在客户首次访问服务器时,将为该客服创建一个session对象,用来记录连接的信息。
session对象常用方法
方法名 | 描述 |
---|---|
setAttribute(key,obj) | session对象调用该方法将参数key指定对象存进session当中 |
getAttibute(String key) | 获取session对象当中关键字是key的对象。 |
getAttributeNames() | session对象调用该方法产生一个枚举对象,该枚举对象使用nextElements()遍历session中各对象所对应的关键字 |
getCreationTime() | session对象调用该方法可以获取该对象创建的时间 |
removeAttribute(String key) | session对象调用该方法移除关键字key对应的对象 |
session对象的生存期限(生命周期)
换个说法,啥时候session会gameover!!!
session对象失效的方式
(1)关闭浏览器(把浏览器叉出去,不配运行)
(2)session对象调用invalidate() (自杀,不陪你玩了,自己去亖)
(3)设置发呆时间,setMaxInactiveInterval(int interval) 单位毫秒 (活到55岁就可以退休了~~~)
Application对象
application对象是访问同一个web目录下所有用户共享的
对于一个Web容器,所有用户都共享一个application对象,服务器启动后,就会自动创建一个application对象,这个对象就会一直保存,直到服务器嘎了。
application对象常用方法
方法名 | 描述 |
---|---|
setAttribute(key,obj) | application对象调用该方法将参数key指定对象存进session当中,如有重复,替换 |
getAttibute(String key) | 获取application对象当中关键字是key的对象。 |
getAttributeNames() | 对象调用该方法产生一个枚举对象,该枚举对象使用nextElements()遍历application中各对象所对应的关键字 |
removeAttribute(String key) | 该方法移除关键字key对应的对象 |
getServletInfo() | application对象调用该方法获得servlet编译器的当前版本信息 |
生命周期
生于服务器开始,崩于服务器嘎~
session对象和Application区别
(1)两者的作用范围不同:session是用户级别的,application是web应用程序级别的,是一个全局作用域
(2)每一个用户都有一个自己的session,而所有用户可以共享通一个application,相当于全局变量。
第四章 JavaBean
JavaBean概念
JavaBean是一种Java类,通过封装属性和方法成为具有某种功能或者处理某个业务的对象。
特点:
(1)代码复用(2)易编写易维护(3)一次编译多次运行
一颗🌰
public class User{private int id;private String name;public void setId(int id){this.id=id;}public int getId(int id){teturn id;}public void setId(String name){this.name=name;}public String getId(String name){teturn name;}
}
使用JavaBean
usebean
<jsp: usebean>动作标记用来加载JavaBean
语法如下
<jsp: useBean id="Bean的实例名" scope="" class="package.className"/>
其中scope可以取值:page/request/session/application
page:当前页面有效
request:一次请求内有效
session:会话期间内有效
application:全局有效
setProperty存储属性
<jsp: setproperty> 与<jsp: usebean>是联系在一起的,同时使用的名字是一起的,即
<jsp: setproperty>的name值和<jsp: usebean> id值是相同的
四种语法格式
javaBean
<jsp: userbean id="Java Bean的实例名" />
name:Bean的实例名
property:Bean中的属性名称
语法一
<jsp: setProperty name="Java Bean的实例名" property="*"/>
其中property表示将所有的参数的名字和属性都将传递给相应的set方法
语法二
<jsp: setProperty name="Java Bean的实例名" property="JavaBean的属性名"/>
例如在javaBean(java实体类)中一个名为private String name的属性
仅仅为有选择的对bean中的属性赋值
语法三
<jsp: setProperty name="Java Bean的实例名" property="JavaBean的属性名" value ="BeanValue" />
将value的值赋给property中指定的Bean属性
语法四
<jsp: setProperty name="Java Bean的实例名" property="propertyName" />
getProperty属性
<jsp: getProperty>动作用于从一个JavaBean中获取某个属性值
语法
<jsp: getProperty name="javaBean 实例名" property="propertyName"/>
获取属性名为propertyName属性值
<jsp: getProperty name="javaBean 实例名" property="*"/>
获取bean中的所有属性值
第五章 Servlet
Servlet概念
servlet是运行在服务端的一种Java技术,用Java语言编写的服务器端程序
Servlet是使用Java Servlet应用程序接口(API)用来处理客户端传来的HTTP请求。并返回响应
使用Servlet时,需要继承一个HTTPServlet
Servlet需要在web.xml中进行描述,编写映射类(mapping),和Servlet类映射。随着Java的发展,现在可以不使用xml文件进行映射,可以直接在Servlet类上通过使用注解来解决映射问题@WebServlet("url")来解决
xml文件的编写
<servlet><servlet-name>LoginServlet</servlet-name><servlet-class>com.controller.LoginServlet</servlet-class></servlet>
<servlet-mapping><servlet-name>LoginServlet</servlet-name><url-pattern>/login</url-pattern>
</servlet-mapping>
完成一个请求需要在xml当中编写一个servlet和servlet映射(servlet-mapping)
在servlet中至少需要配置两个属性
<servlet-name>:表示当前servlet名称,不强制和Servlet.java文件名一致,随意
<servlet-class>:表示servlet-class类的位置,从src下开始找-包名-文件名
在servlet-mapping当中至少需要配置两个属性
<servlet-name>:必须与相对应servlet的名字一致,也就是上面的servlet-name
<url-pattern>:表示映射路径,即jsp页面请求的地址
Servlet的生命周期
(1)加载:当容器启动时,会加载 Web 应用程序中的所有 Servlet 类,并创建与其相应的 Servlet 实例。在加载 Servlet 类时会执行它的类加载器。
(2)初始化:在 Servlet 实例创建后,容器会调用它的 init() 方法对其进行初始化。在 init 方法中可以进行一些初始化操作,如读取配置文件、初始化数据库连接等。init 方法只会在 Servlet 被创建时调用一次。
(3)运行:在 Servlet 实例创建且初始化后,容器会调用其 service() 方法处理来自客户端的请求。service 方法会被多次调用,每次响应客户端请求时都会执行一次。在 service 方法中,根据请求类型可以调用 doGet 或 doPost 等方法来响应请求。
(4)销毁:当容器需要销毁一个 Servlet 实例时,它会调用其 destroy() 方法,释放资源、关闭连接等。destroy 方法只会在 Servlet 卸载时调用一次。
(5)卸载:当容器关闭时,会卸载 Web 应用程序中的所有 Servlet 实例,将该 Servlet 实例从容器中移除,并释放其所占的资源。
JSP访问Servlet
- 表单访问
- 超链接访问
表单访问
<form action="login" method="post">...
</form>
超链接访问
<a href="login">点我访问Servlet</a>
Servlet之间的通信
简而言之,即页面的重定向和转发
- 重定向
- 转发
重定向
重定向的功能是将当前用户从当前页面或Servlet定向到另一个JSP页面或者Servlet中,是HttpServletResponse类中的方法
实现重定向
resp.sendRedirect()
转发
转发的功能是将用户对当前JSP页面或者Servlet请求转发到另一个JSP页面或者Servlet,是request中的方法
实现转发
req.getRequestDispatcher(RUL)..forword(req,resp)
重定向和转发两者的区别
(1)重定向访问服务器两次,转发只访问服务器一次
(2)转发页面的URL不会改变,而重定向地址会改变
(3)转发共用一个request请求,重定向则不会有
(4)...换个说法(借作业)
转发相当于张三找李四借作业,李四也没写,他就找王五要作业,然后将作业给张三
重定向相当于张三找李四借作业,李四也没写,并告诉张三,王五有,找他
Servlet中方法
Servlet方法中常使用的方法有doGet、doPost方法
doGet方法和doPost方法的调用通常是有form表单决定(默认doGet)
这是一个登录的Servlet实例
public class LoginServlet extends HttpServlet{@Overridepublic void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {this.doPost(req, resp);}@Overridepublic void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//登录逻辑System.out.println("进入登录处理界面");//设置编码req.setCharacterEncoding("UTF-8");resp.setContentType("text/html;charset=utf-8");String username=req.getParameter("username");String password=req.getParameter("password");DaoFromDB dfb=new DaoFromDB();boolean flag=dfb.login(username, password);if (flag) {//登录成功HttpSession session =req.getSession();session.setAttribute("name", username);req.getRequestDispatcher("/admin/main.jsp").forward(req, resp);}}}
在Servlet中使用session
HttpSession session =req.getSession();session.setAttribute("name", username);
Servlet过滤器
概念概念概念
Servlet过滤器主要是用于对浏览器的请求进行过滤处理,将过滤后的请求再转发给下一个资源。
作用可以限制用户访问某些资源或者再处理请求资源时提前处理某些资源的时候,就可以使用过滤器
开发过滤器过程
(1)实现接口Filter(javax.servlet.Filter)
(2)重写init()方法
(3)重写doFilter()方法
(4)重新destroy()方法
2.配置Filter在web.xml当中
<wab-app><filter><filter-name>过滤器名称</filter-name><filter-class>过滤器类名路径</filter-class></filter><filter-mapping><filter-name>过滤器名字(和👆保持一致)</filter-name><url-pattern>/需要过滤的JSP文件或者Servlet或者任意路径</url-pattern></filter-mapping>
</wab-app>
3.编写过滤类
这是一个真实的登录过滤器(把资源给阻挡)
public class Filters implements Filter {@Overridepublic void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)throws IOException, ServletException {HttpServletRequest req = (HttpServletRequest)request;HttpServletResponse resp = (HttpServletResponse)response;resp.setContentType("text/html;charset=UTF-8");req.setCharacterEncoding("UTF-8");HttpSession session =((HttpServletRequest)request).getSession();String name=(String)session.getAttribute("name");if (name == null) {//PrintWriter out =response.getWriter();out.print(new String("您还未登录,请您登录".getBytes(),"UTF-8"));}else {chain.doFilter(req, resp);}}}
第六章 JSP访问数据库
JDBC概述
JDBC(JAVA DataaBase Connectivity ,java数据库连接)是在Java中面向对象的方法来连接数据库的技术。
三大功能
(1)与数据库建立连接
(2)向数据库发送SQL语句
(3)处理数据库返回的结果
API
Conncetion(链接数据库)
Statement(建立操作指令)
executeQuery(执行查询指令)
ResultSet(获得查询结果)
建立数据库
首次打开数据库管理工具要做的事是先要新建连接!!!
连接名:
主机名或ip地址:localhost
端口号:3306
用户名:root
密码:123456或空
2.新建数据库
数据库名:自由发挥(就当这里是English)
字符集:utf8
排序规则:utf8_general_ci一般是这样,具体按照实际情况更改
然后创建表…不解释就说明都会了~~
加载驱动
//Oracle驱动
Class.forName("oracle.jdbc.dirver.OracleDriver");
//SQL Server驱动
Class.forName("com.microsoft.sqlserver.jdnc.SQLServerDriver");
//mysql驱动
Class.forName("com.mysql.jdbc.Driver");
建立链接
直接上代码
public class DbConnection {//连接池信息private String driverName="com.mysql.jdbc.Driver";private String url ="jdbc:mysql://localhost:3306/test_student"; private String usernameString="root";private String userPwd="123456";//Connection connection;//获取连接public Connection getConnection() {try {Class.forName(driverName);connection=DriverManager.getConnection(url,usernameString,userPwd);} catch (Exception e) {e.printStackTrace();}return connection;}//关闭链接public static void DbClose(Connection con,PreparedStatement ps, ResultSet rs) {try {rs.close();ps.close();con.close();} catch (Exception e) {e.printStackTrace();}}public static void DbClose(Connection con,PreparedStatement ps) {try {ps.close();con.close();} catch (Exception e) {e.printStackTrace();}}}
关闭链接必须要写,要不然 流会 一直没有被释放
增删改查
所谓面试造火箭,工作打螺丝,增删改查核心业务不能遗漏
查
语法格式:
select [Top]字段 from 表 [where条件][Order By排序字段][group By 字段]
//全部数据
select * from users
//指定字段
select name,password from users
//若干记录
select Top(3)* from users
//筛选条件//2021年11月1日之前的
select * from users where datas<#2012-11-1#//筛选id为一的数据
select * from users where id =1
增
语法格式:
insert into 表(字段1,字段2,...) values(值1,值2,...)
//插入单条字段
insert into user (username) values("li")
//插入多条字段
insert into user(username,password) values("li","158218")
改
语法格式:
update 表 set 字段1=值1,字段2=值2 [where条件]
//修改名称
update user set username="lilili" where id=1
//所以字段年龄+10
update user set age=age+10
删
语法格式:
delete from 表 [where条件]
delete from user where name="li"
第七章 MVC编程模式
MVC概述
MVC全名是model view controller,是模型-视图-控制器的缩写,是一种软件设计典范
- 视图层(view)
- 负责和用户的交互和显示数据。用于提交和显示数据,通常是一个或多个JSP页面
- 模型(model)
- 用于连接并处理数据库信息。用于存储数据对象,通常是一个或多个JavaBean对象
- 控制器(controller)
- 用于数据处理,通常是一个或多个Servlet
本文链接:https://my.lmcjl.com/post/3331.html
4 评论