- jsp 和 servlet 的关系
1.jsp是对servlet的一种高级封装,jsp的本质还是servlet
2.jsp文件在容器中会被转成servlet,然后在执行
3.与servlet相比,jsp可以很方便的修改HTML网页,而不用去面对大量的printfln语句。
- jsp的实现原理
1.Tomcat将会把xxx.jsp 转换为xxx.java 代码,然后编译成 xxx.class 然后运行,最后把运行的结果通过response响应发送给客户端
- jsp和HTML的集成开发
1.语法一:<% Java代码 %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>jsp</title>
</head>
<body>
<%
//jsp中可以编写Java代码
//1.jsp 界面的输出
out.println("out.println:hello world!");
//2.在命令行的输出
System.out.println("System.out.println:hello world");
//3.jsp 输出日期
out.println(new Date());
%>
</body>
</html>
- 2.语法二:<%! 定义变量、函数等%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<%!
/* 声明变量和函数*/
int a = 10;
public void test1(){
System.out.println("我是test1");
}
public int add(int a,int b){
return a + b;
}
%>
<%
out.println(add(10,20));
test1();
%>
</body>
</html>
3.语法三:<%=Java表达式%> 在页面上输出Java表达式的结果
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<%!
int a = 10;
public int add(int a,int b){
return a+b;
}
%>
<%=a%>
<%=add(a,20)%>
</body>
</html>
- jsp的注释和html注释
1.注释一:<%-- 注释 --%> jsp注释 注释内容不会被发送到浏览器,甚至不会被编译。
2.注释二:<!-- 注释 --> html注释 通过浏览器查看源代码的时候可以看到注释的内容。
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>jsp基础教程</title>
</head>
<body>
<h3>注释</h3>
<%-- jsp 的注释 不会输出到编译的html --%>
<!-- 使用html式 注释可以写入到生成的html中 -->
</body>
</html>
- jsp指令
1.<%@page ....%>:定义页面的依赖属性,比如脚本语言,error页面,缓存需求等!
<%@ page contentType="text/html;charset=UTF-8" language="java" errorPage="error.jsp" %>
- 2.<%@ include ...%>:包含其他文件。
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ include file="header.jsp"%>
<html>
<head>
<title>Title</title>
</head>
<body>
<h2>middle</h2>
</body>
</html>
<%@ include file="footer.jsp"%>
- 3.<%@ taglib ...%>:引入标签库的定义,可以是自定义标签。
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
- page指令 ---- 语法:<%@ page attribute1="value1" attribute2="value2"... %> page指令提供当前页面的使用说明,一个jsp页面可以包含多个page指令。
1.属性一:contentType 指定当前jsp页面的MIME类型和字符编码格式。
2.属性二:errorPage 指定当前jsp页面发生异常的时候,转向的页面。
3.属性三:isErrorPage 指定当前页面是否可以当作另一个jsp页面的错误处理页面
4.属性四:import 导入要使用的Java类
5.属性五:language 定义jsp页面使用的脚本语言,默认是Java
6.属性六:session 指定当前jsp页面是否使用session,默认是true 立即创建,false是使用的时候创建。
7.属性七:pageEncoding 指定jsp页面的解码格式。
<%@page contentType="text/html;charset=UTF-8" language="java" pageEncoding="UTF-8"
errorPage="error.jsp" isErrorPage="true" session="true" import="" %>
- useBean
语法:
1. useBean:创建一个对象:
id:创建的对象的名字。 class:User类的所在的包的路径
<%--创建一个对象--%>
<jsp:useBean id="user" class="com.dl.code.entity.User"></jsp:useBean>
2.setProperty:给对象的属性赋值
name:这个属性是必须的,他表示是为哪一个对象的属性赋值
property:这个属性是必须的,他表示要为对象的哪一个属性赋值。
value:是可以选择的。给属性是用来指定Bean属性的内容。
<%--给user对象的属性赋值--%>
<jsp:setProperty name="user" property="name" value="代先生"/>
<jsp:setProperty name="user" property="password" value="123456"/>
3.setProperty:获取对象的属性。并在jsp页面输出。
name:对象的名字。
property:对象属性的名字。
<%--获取对象属性的值--%>
<jsp:getProperty name="user" property="name"/>
<jsp:getProperty name="user" property="password"/>
4.打印的方法
<%--打印方法一--%>
<jsp:getProperty name="user" property="name"/>
<jsp:getProperty name="user" property="password"/>
<%--打印方法二--%>
<%= user.getName()%>
<%= user.getPassword()%>
- forward
语法:<%jsp:forwrad page="url路径" %>
作用:把请求转到指定的页面
<%--将请求转到error.jsp页面--%>
<jsp:forward page="error.jsp"></jsp:forward>
page属性:相对的url路径
- param
语法:<jsp:param name="" value=""/>
作用:在转发动作的内部使用,作为参数进行传递。
<%--将请求转到test.jsp页面--%>
<jsp:forward page="test.jsp">
<jsp:param name="name" value="DL"/>
</jsp:forward>
获取数据:
<%= request.getParameter("name")%>
提示:进行上述操作的时候,注意编码格式。否则会出现乱码。
- jsp的内置对象
1.pageContext --- javax.servlet.jsp.PageContext
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.exception --- java.lang.Throwable
8.out --- javax.servlet.jsp.JspWriter - jsp四大作用对象
1.pageContext :当前jsp页面范围
2.request :一次请求有效
3.session :一次会话有效,浏览器关闭后,就失效
4.application :整个web应用有效 服务器重启或者关闭,失效。 - pageContext的方法
1.setAttribute("name",value):存储值 仅在当前页面作用域有效
2.getAttribute("name"):获取值
3.还可以用于获取其他八个内置对象
<%-- 存一个值 --%>
<%pageContext.setAttribute("name","代先生");%>
<%-- 获取存的值 --%>
<%= pageContext.getAttribute("name")%>
<%-- 获取其他的jsp内置对象 列举四个为例 --%>
<%
ServletRequest request1 = pageContext.getRequest();
ServletResponse response1 = pageContext.getResponse();
Exception exception = pageContext.getException();
HttpSession session1 = pageContext.getSession();
%>