JSP的部分知识(一)

通过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

 

 

posted @ 2019-09-06 09:14  大盘鸡嘹咋咧  阅读(310)  评论(2编辑  收藏  举报