通过Servlet进行整个网站的开发是可以的。 不过在Servlet中输出html代码,特别是稍微复杂一点的html代码,就会给人一种很酸爽的感觉。 
如果能够直接使用Html代码,然后在html中写java代码,就好了~ 
JSP ... 就可以干这个事情。

 
在web目录下下新建一个文件hello.jsp
<%@page contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" import="java.util.*"%>
。。。。。(省略)
你好 JSP <br> <%=new Date().toLocaleString()%>

代码解释:

 <%@page contentType="text/html; charset=UTF-8"  pageEncoding="UTF-8" import="java.util.*"%>

是JSP的<%@page指令;

contentType="text/html; charset=UTF-8" 

相当于response.setContentType("text/html; charset=UTF-8"); 通知浏览器以UTF-8进行中文解码;

pageEncoding="UTF-8" 

如果jsp文件中出现了中文,这些中文使用UTF-8进行编码;

import="java.util.* 

导入其他类,如果导入多个类,彼此用,逗号隔开,像这样 import="java.util.*,java.sql.*" 。

<%=new Date().toLocaleString()%>

输出当前时间,相当于在Servlet中使用response.getWriter()进行输出

response.getWriter().println(new Date().toLocaleString());

为什么JSP可以在html中运行java代码? 这是因为JSP被转译成了Serlvet

执行过程

1. 把 hello.jsp转译为hello_jsp.java
2. hello_jsp.java 位于
d:\tomcat\work\Catalina\localhost\_\org\apache\jsp
3. hello_jsp.java是一个servlet
4. 把hello_jsp.java 编译为hello_jsp.class
5. 执行hello_jsp,生成html
6. 通过http协议把html 响应返回给浏览器

hello_jsp.java 为什么是Servlet

我们说HelloServlet是一个Servlet,不是因为它的类名里有一个"Servlet",而是因为它继承了 HttpServlet
 
打开转译hello.jsp 后得到的hello_jsp.java,可以发现它继承了类
(D:\tomcat\work\Catalina\localhost\_\org\apache\jsp\hello_jsp.java)

org.apache.jasper.runtime.HttpJspBase
而HttpJspBase 继承了HttpServlet
所以我们说hello_.jsp.java 是一个Servlet
 
 
 
页面元素
 
jsp由这些页面元素组成:
1. 静态内容
就是html,css,javascript等内容
2. 指令
以<%@开始 %> 结尾,比如<%@page import="java.util.*"%>
3. 表达式 <%=%>
用于输出一段html
4. Scriptlet
在<%%> 之间,可以写任何java 代码
5. 声明
在<%!%> 之间可以声明字段或者方法。但是不建议这么做。
6. 动作
<jsp:include page="Filename" > 在jsp页面中包含另一个页面。
7. 注释 <%-- -- %>
不同于 html的注释 <!-- --> 通过jsp的注释,浏览器也看不到相应的代码,相当于在servlet中注释掉了

<%=%>和 <%out.println()%>

<%="hello jsp"%> 

就相当于

<%out.println("hello jsp");%>

out是jsp的隐式对象,可以直接使用。

注: <%=%> 不需要分号结尾,<%%> 需要以分号结尾,和java代码一样

<%="hello jsp"%>
<br>
<% out.println("hello jsp");%>

for循环

结合for循环在jsp里输出html是常见的做法。 只是第一次这么写会稍显别扭
下面是一段实例,以供参考

<%
List<String> words = new ArrayList<String>();
words.add("today");
words.add("is");
words.add("a");
words.add("great");
words.add("day");
%> <table width="200px" align="center" border="1" cellspacing="0"> <%for (String word : words) {%> <tr>
<td><%=word%></td>
</tr> <%}%> </table>

原文地址:http://how2j.cn/k/jsp/jsp-tutorials/530.html

 

最新文章

  1. javax.crypto.BadPaddingException: Given final block not properly padded 解决方法
  2. input 正则限制输入内容
  3. Ext中renderer用法及参数
  4. django 操作 下载 excel xls xlsx csv
  5. CLR via C#(13)-浅谈事件
  6. 手机端开发icon的问题
  7. iOS 三种录制视频方式
  8. 基于Hash算法的高维数据的最近邻检索
  9. ehcharts中国地图四级级下钻
  10. Linux UGO和ACL权限管理
  11. PHP - 图像处理
  12. win10 store 无法连接网络
  13. python九九乘法表
  14. spring data学习
  15. CodeForces 1151D Stas and the Queue at the Buffet
  16. S3T mongodb GUI
  17. 工控随笔_07_西门子_WinCC利用命令行实现操作log日志
  18. JAVA JSON解析:类XPATH解析JSON
  19. spring aop 之annotation
  20. 『转』VC++ webbrowser函数使用范例

热门文章

  1. SpringMVC的请求转发的三种方法
  2. K8S中POD节点状态ContainerCreating原因排查
  3. Kafka - 环境搭建
  4. WINDOWS远程控制LINUX终端XSHELL
  5. delphi 二维数组的大小和元素个数问题
  6. JVM Java字节码方法表与属性
  7. JVM 数组创建的本质
  8. keepalived vip removed with dhcp renewal【原创】
  9. 在windows上编译chrome浏览器Building Chromium for Windows
  10. go cmd nohup 的坑