JSP入门详解
一、基础知识详解
1.JSP中使用html注释<!-- -->客户端可见,使用jsp注释<%-- --%>客户端不可见(查看源文件只看到空行),单行和多行注释也看不到(//或者/* */)
直接在body里面//或者/* */是不幸的,需要在<%%>里面或者<%! %>
2.page include taglib指令
pageEncoding是JSP页面本身的编码,contentType是服务器端发送给客户端时候的编码。
3.JSP脚本和JSP声明
JSP脚本
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
脚本的本质是插入到servlet里的service方法。
例如:
<%
if (user != null ) {
%>
Hello <B><%=user%></B>
<%
} else {
%>
You haven't login!
<%
}
%>
转译成:
if (user != null ) {
out.println("Hello <B>" + user + "</B>");
} else {
out.println("You haven't login!");
}
JSP声明
<%!
String s = "aa";
int res(int a ,int b) {
return a+b;
}
%>
注意:生命的本质是将生命的变量加入到servlet勒种。
4.JSP表达式
调用上面的JSP声明
你好<%= s%> <br/> //表达式后面没有分号
x+y=<%=add(90,8)%> <br/>
注意:表达式里不能有分号,另外函数必须要有返回值,不能是void,表达式的本质是JSP页面转换成servlet后使用out.println("aa")将对应的值输出。
5.JSP生命周期
如果是第一次请求JSP页面,那么tomcat调用jspInit()方法将JSP页面转录成字节码文件,在tomcat下的work下的Catalina目录下可以看到对应的.class文件,如果不是第一次那么会调用jspService方法来显示,每次修改jsp页面,.class会重新编译。
二、指令和脚本方式调用声明
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>"> <title>My JSP 'index.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body>
<h1>九九乘法表</h1> <br> <%!
//表达式方式
String printMultiTable() {
String s = "";
//必须要有int,否则提示变量未声明,无法解析
for(int i=1; i<=9; i++) {
for(int j=1; j<=i; j++)
//原来一直提示错误,下面的这行注释里有个%的结束标记,
//黄色和上面的匹配了,删了几哈好了
//不能"<%=i*j"这里面是函数和变量
s += i+"*" +j+ "=" +(i*j) + "   ";
s += "<br/>";
}
return s;
}
//out对象是JspWriter的实例化
void printMultiTableByEx(JspWriter out)throws Exception {
for(int i=1; i<=9; i++) {
for(int j=1; j<=i; j++)
out.println(i+"*" +j+ "=" +(i*j) + "   ");
out.println("<br/>");
}
}
%>
<hr>
<p>表达式方式调用声明</p><br/>
<%=printMultiTable()%>
<p>脚本方式调用声明</p>
<!-- 脚本方式需要有分号 -->
<%printMultiTableByEx(out);%>
</body>
<ml>

JSP入门详解的更多相关文章
- Linq之旅:Linq入门详解(Linq to Objects)
示例代码下载:Linq之旅:Linq入门详解(Linq to Objects) 本博文详细介绍 .NET 3.5 中引入的重要功能:Language Integrated Query(LINQ,语言集 ...
- SQL注入攻防入门详解
=============安全性篇目录============== 本文转载 毕业开始从事winfrm到今年转到 web ,在码农届已经足足混了快接近3年了,但是对安全方面的知识依旧薄弱,事实上是没机 ...
- SQL注入攻防入门详解(2)
SQL注入攻防入门详解 =============安全性篇目录============== 毕业开始从事winfrm到今年转到 web ,在码农届已经足足混了快接近3年了,但是对安全方面的知识依旧薄弱 ...
- Quartz 入门详解
Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,它可以与J2EE与J2SE应用程序相结合也可以单独使用.Quartz可以用来创建简单或为运行十个,百个, ...
- Redis快速入门详解
Redis入门详解 Redis简介 Redis安装 Redis配置 Redis数据类型 Redis功能 持久化 主从复制 事务支持 发布订阅 管道 虚拟内存 Redis性能 Redis部署 Redis ...
- [转]SQL注入攻防入门详解
原文地址:http://www.cnblogs.com/heyuquan/archive/2012/10/31/2748577.html =============安全性篇目录============ ...
- [置顶]
xamarin android toolbar(踩坑完全入门详解)
网上关于toolbar的教程有很多,很多新手,在使用toolbar的时候踩坑实在太多了,不好好总结一下,实在浪费.如果你想学习toolbar,你肯定会去去搜索androd toolbar,既然你能看到 ...
- 转:JAVAWEB开发之权限管理(二)——shiro入门详解以及使用方法、shiro认证与shiro授权
原文地址:JAVAWEB开发之权限管理(二)——shiro入门详解以及使用方法.shiro认证与shiro授权 以下是部分内容,具体见原文. shiro介绍 什么是shiro shiro是Apache ...
- webpack入门详解
webpack入门详解(基于webpack 3.5.4 2017-8-22) webpack常用命令: webpack --display-error-details //执行打包 webpa ...
随机推荐
- javaScript如何跳出多重循环break、continue
先来说说break和continue之间的区别 for(var i=0;i<10;i++){ if(i>5){ break; }}console.log(i); ---6 •当i ...
- Ps钢笔操作技巧
鼠标左键单击=新建锚点:Ctrl+鼠标左键=移动锚点/移动调节点: Alt+鼠标左键=锚点/角点转换: 方向键=微调锚点位置: shift+鼠标左键=新建水平/垂直锚点:Ctrl+Alt+鼠标左键=选 ...
- beego学习笔记(4):开发文档阅读(1)
1.beego的设计是高度模块化的.每个模块,都可以单独使用.一共八大模块: cache;session;log;orm;context;httplibs;toolbox 2.beego的执行逻辑 3 ...
- c++ primer 4 数组和指针
类比的思想学习数组和指针,c++提供类似于vector和迭代器的低级复合类型——数组和指针.与vector相似,数组可以保存某一种类型的一组对象:而他们的区别在于,数组的长度固定,数组一经创建就不允许 ...
- ref:一种新的攻击方法——Java Web表达式注入
ref:https://blog.csdn.net/kk_gods/article/details/51840683 一种新的攻击方法——Java Web表达式注入 2016年07月06日 17:01 ...
- linux关闭地址空间随机化(ASLR)
转:http://www.xuebuyuan.com/1571079.html 确认ASLR是否已经被打开,"2"表示已经打开 shanks@shanks-ubuntu:/home ...
- URAL 1995 Illegal spices
构造. 前$n-k$个都是$1$,最后$k$个进行构造,首先选择填与上一个数字一样,如果不可行,那么这一格的值$+1$. #include<map> #include<set> ...
- Java常用工具类之自定义访问对象
package com.wazn.learn.util; import javax.servlet.http.HttpServletRequest; /** * 自定义访问对象工具类 * * 获取对象 ...
- Spring boot的hot swapping
前言 嘛,都是看官方文档的,就先贴上文档地址: using-boot-hot-swapping 使用 使用hot swapping只需要把devtools的jar包添加到你的classpath里. 在 ...
- PIPESTATUS(bash) + pipefail(ksh)
I have two processes foo and bar, connected with a pipe: $ foo | bar bar always exits 0; I'm interes ...