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 响应返回给浏览器
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)
(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