JSP简介
Posted Vodka~
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JSP简介相关的知识,希望对你有一定的参考价值。
1.
2.在JSP中支持两种注释语法:
-显示注释(允许客户端看见,继承了html的风格)
-隐式注释 (客户端看不见,继承了java风格;以及jsp本身的注释)
-jsp的三种注释
1. // , /**/ 单行,多行注释
2.
3. <%-- jsp 注释 --%>
3.Scriptlet:
-JSP中最重要的部分 Scriplet (脚本小程序),所有嵌入在HTML代码中的Java程序。
-在JSP中一共有三种Scriplet 代码: 都必须使用 Scriplet 标记起来。
第一种: <% %> (java 脚本段,用于定义局部变量,编写语句)
第二种:<%! %> (声明,用于定义全局变量,方法,类)
第三种:<%= %> (输出表达式,输出数据变量或具体内容)
4.JSP指令标签:include的静态包含和动态包含
//静态包含.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>jsp的指令标签</title>
</head>
<body>
<h1>Hello Vodka!Welcome to my word</h1>
<%--
1.使用包含操作将重复的代码包含进来继续使用,通常由几个部分组成
方法一:在每个JSP页面(HTML)都包含工具栏,头部信息,尾部信息,具体内容。
方法二:将工具栏,头部信息,尾部信息都分成各个独立的文件,使用的时候直接导入。
(方法二更好,降低系统耦合度)
2.实现包含操作有两种做法: 静态包含,动态包含
--%>
<%-- 静态包含:
-将内容直接进行替换,好比在程序中定义变量一样,在servlet引擎转译时,
把此文件内容包含了进去(两个文件的源代码整合到一起,全部放到 jspService 方法中,所以只生成了
一个servlet,所以两个页面不能有同名的变量。耦合度较高,不灵活.
-将当前页面相应的内容直接替换。
--%>
<%@include file="header.jsp" %> <!--相对路径-->
<h3>这里是内容主体</h3>
<%@include file="footer.jsp"%>
</body>
</html>
//Dynamic.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>DynamicInclude</title>
</head>
<body>
<%--
动态包含:
-在代码的编译阶段,包含和被包含部分是两个独立的部分,只有当运行时,才会动态包含进来,好比方法调用。
-<jsp:include page="xxxx.jsp"></jsp:include>
!!!在动态包含时,如果不需要传参,
语法的中间不要添加任何内容,包括空格,除非要确认使用参数,否则会报错。
-动态包含还可以在页面之间传参,接收参数通过request.getParameter(name);
-可以定义同名变量,效率高,耦合度低。
--%>
<jsp:include page="header.jsp"></jsp:include>
<h1>我是当前页面主体的中部区域</h1>
<%
int a = 1;
System.out.println(a);
String str = "888920";
String url = "footer.jsp";
%>
<%--动态包含传递参数 , name属性不支持表达式赋值,value则支持 ,下面的url不能为空 --%>
<jsp:include page="<%=url%>">
<jsp:param name="UserName" value="Vodka"/>
<jsp:param name="Account" value="<%=str%>"/>
</jsp:include>
</body>
</html>
//header.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<h1>头部标题</h1>
<%
int a = 2;
%>
</body>
</html>
//footer.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>底部内容</title>
</head>
<body>
<h1>底部内容栏</h1>
<%
// 获取动态页面传递的参数
String Username = request.getParameter("UserName");
String Account = request.getParameter("Account");
out.println("从Dynamic页面传过来的参数:" + Username + " , "+ Account);
%>
</body>
</html>
5.JSP的四大域对象
-四种属性范围:在jsp中提供了四种属性的保存范围,所谓的属性保存范围,指的就是一个设置的对象,可以在多少个页面中或者说哪些地方保存并且可以继续使用。
1.page范围: pageContext,只在一个页面中保存属性,跳转之后无效。
2.request范围: 只在一次请求中保存,服务器端跳转之后依然有效(客户端跳转无效,比如超链接a标签跳转)。
3.session范围: 在一次会话范围内中有效,即服务器接收到新的请求跳转之后依然有效。
4.application范围: 在整个服务器上保存,只要服务器正常运行,所有请求都可以获取数据。
-方法:
1.public void setAttribute(String name,Object o); 设置属性的名称及内容
2.public Object getAttribute(String name); 根据属性名称取属性
3.public void removeAttribute(String name); 删除指定的属性
//FourDomainObject.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>设置属性</title>
</head>
<body>
<%--设置四大域对象--%>
<%
request.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=utf-8");
pageContext.setAttribute("One","王一");
request.setAttribute("Two","刘二");
session.setAttribute("Three","张三");
application.setAttribute("Four","李四");
out.println("成功设置四大域对象的属性");
%>
<%-- jsp中的服务端跳转 --%>
<jsp:forward page="FDOReceive.jsp"></jsp:forward>
</body>
</html>
//FDOReceive
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>接收四大域对象的信息</title>
</head>
<body>
<%
//设置请求编码之后
request.setCharacterEncoding("UTF-8");
//获取四大域对象上的数据
String One = (String) pageContext.getAttribute("One");
String Two = (String) request.getAttribute("Two");
String Three = (String) session.getAttribute("Three");
String Four = (String) application.getAttribute("Four");
out.println("pageContext上的数据是:" + One +"<br>" );
out.println("request上的数据是:" + Two +"<br>");
out.println("session上的数据是:" + Three +"<br>");
out.println("application上的数据是:" + Four +"<br>");
%>
</body>
</html>
以上是关于JSP简介的主要内容,如果未能解决你的问题,请参考以下文章