javaweb-JSP
JSP
什么是 JSP
Java Server Pages:Java 服务器端页面,也和 Servlet 一样,用于动态 Web 技术!
最大的特点:
写 jsp 就像再在写 HTML
区别:
html 只给用户提供静态的数据
jsp 页面中可以嵌入 Java 代码,为用户提供动态数据
jsp 原理
浏览器向服务器发送请求,不管访问什么资源,其实都是在访问 Servlet
jsp 最终也会被转换成为一个 java 类
jsp 本质上就是一个 Servlet 类
在 jsp 页面中
只要是 Java 代码就会原封不动的输出
如果是 html 代码,就会被转换为:
这样的格式,输出到前端
out.write("<html>\r\n");
jsp 基础语法
任何语言都有自己的语法,Java 中有,jsp 作为 Java 技术的一种应用,它拥有一些自己扩充的语法(了解即可),Java 所有语法都支持
jsp 表达式
<%--jsp 表达式
作用:用来将程序输出,输出到客户端
<%= 变量或者表达式 %>
--%>
<%= new java.util.Date()%>
jsp 脚本片段
<%--jsp 脚本片段--%>
<%
int sum = 0;
for (int i = 1; i <= 100 ; i++) {
sum+=i;
}
out.println("<h1>sum="+sum+"</h1>");
%>
脚本片段的再实现
<%
int x = 10;
out.println(x);
%>
<p>这是一个 jsp 文档</p>
<%
int y = 2;
out.println(y);
%>
<hr>
<%--在代码中嵌入 html 元素--%>
<%
for (int i = 0; i < 5 ; i++) {
%>
<h1>hello,world <%=i%></h1>
<%
}
%>
jsp 声明
<%!
static{
System.out.println("Loading Servlet!");
}
private int globaVar = 0;
public void he(){
System.out.println("进入了方法 he!");
}
%>
jsp 声明:会被编译到 jsp 生成 Java 的类中,其他的,就会被生成到_javaService 中!
在 jsp 中,嵌入 java 代码即可
<%%>
<%=%>
<%!%>
<%jsp 注释 %>
jsp 注释,不会在客户端显示,html 会
jsp 指令
<%@page args...%>
<%@include file=""%>
<%--@include 会将两个页面合二为一--%>
<%@include file="common/header.jsp"%>
<h1>网页主题</h1>
<%@include file="common/footer.jsp"%>
<hr>
<%--jsp 标签
jsp:include:拼接页面,本质还是 3 个
--%>
<jsp:include page="/common/header.jsp"/>
<h1>网页主题</h1>
<jsp:include page="/common/footer.jsp"/>
九大内置对象
PageConetext
Request
Response
Session
Application
config
out
page 不用了解
exception
pageContext.setAttribute("name1","饼干 1 号");//保存的数据只在一个页面中有效
request.setAttribute("name2","饼干 2 号");//保存的数据只在一次请求中有效,请求转发会携带这个数据
session.setAttribute("name3","饼干 3 号");//保存的数据只在一次会话中有效,从打开浏览器到关闭浏览器
application.setAttribute("name4","饼干 4 号");//保存的数据只在服务器中有效,从打开服务器到关闭浏览器
request:客户端向服务器发送请求,产生的数据,用户看完就没用了,比如:新闻,用户看完没用的
session:客户端向服务器发送请求,产生的数据,用户看完一会还有用,比如:购物车
application:客户端向服务器发送请求,产生的数据,一个客户用完了,其他的客户还可能使用,比如:聊天数据
jsp 标签,jstl 标签,EL 表达式
<!--jsp 依赖-->
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>javax.servlet.jsp-api</artifactId>
<version>2.3.3</version>
</dependency>
<!-- jstl 的依赖 -->
<dependency>
<groupId>javax.servlet.jsp.jstl</groupId>
<artifactId>jstl-api</artifactId>
<version>1.2</version>
</dependency>
EL 表达式:${ }
获取数据
执行运算
获取 web 开发的常用对象
<%--jsp:include--%>
<%-- http://loaclhost:8080/jsptag.jsp?name=binggan&age = 5
--%>
<jsp:forward page="/jsptag2.jsp">
<jsp:param name="name" value="binggan"></jsp:param>
<jsp:param name="age" value="5"></jsp:param>
</jsp:forward>
JSTL 标签库的使用就是为了弥补 HTML 标签的不足,它自定义许多标签,可以供我们使用,标签的功能和 Java 代码一样
核心标签
格式化标签
SQL 标签
XML 标签
JSTL 标签库使用步骤
引入对应的 taglib
使用其中的方法
在 Tomcat 也需要引入 JSTL 的包,否则会报错:JSTL 解析错误
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<%--定义一个变量 score,值为 85--%>
<c:set var="score" value="85"/>
<c:choose>
<c:when test="${score>=90}">
你的成绩为优秀
</c:when>
<c:when test="${score>=80}">
你的成绩为一般
</c:when>
<c:when test="${score>=70}">
你的成绩为及格
</c:when>
<c:when test="${score<=60}">
你的成绩为不及格
</c:when>
</c:choose>
</body>
</html>
判断如果提交的用户名是管理员,则登陆成功
<%
if(request.getParameter("username").equals("admin")){
out.print("登录成功");
}
%>
版权声明: 本文为 InfoQ 作者【喜羊羊】的原创文章。
原文链接:【http://xie.infoq.cn/article/c37dd3eba0c13a5d593964ed9】。文章转载请联系作者。
评论