JSP简介

JSP简介 由David发表在天码营


什么是JSP?

学习了前端技术——HTML/CSS/JavaScript后,我们有能力构建一个漂亮的博客页面,它是静态的——如果需要添加新的内容,需要修改相应的前端文件代码。

掌握了编写Servlet程序后,我们有能力让网页“动”起来——根据不同的输入(URL参数、Session等)生成不同的页面内容。

那么如何将二者结合起来,让Java平台中的应用程序能够将漂亮的前端页面展示出来呢?答案很简单——在Servlet程序中生成页面的HTML代码。可是当我们打开博客页面的源代码,顿时心中犯了难,这几百行的HTML代码,混杂着各种各样的标签,Servlet中的doGet()方法里难道得把这个字符串(页面的HTML内容)给拼接起来?

由于Web中大量用到HTML作为展示语言,在Servlet中去拼接HTML代码显然不是一个好办法。Java EE里制定的JSP(JavaServer Pages)标准,就是帮助开发者基于HTML/XML来动态生成Web页面内容。

本质上来说,JSP是Servlet的一个更高层的抽象。Servlet容器会将JSP在运行时转化为Servlet程序,接下来的处理流程就和Servlet完全一样了。

第一个JSP:Hello World

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Hello World JSP</title>
</head>
<body>
  <h2>Welcome to JSP tutorial</h2>
  <p>It is <%=new java.util.Date().toString() %> now. </p>

</body>
</html>

可以看到JSP页面和HTML页面非常的类似,唯一不同的地方在于:<%=new java.util.Date().toString() %><%= %>标记对中嵌入的是Java表达式,这也是体现JSP动态能力的地方——标记对的内容并非一成不变的,而是通过程序生成。

Servlet容器支持处理JSP页面,只需将JSP文件放入WebContent目录中即可。同时需要注意的是:JSP文件的扩展名必须是.jsp

JSP基本语法

除了Hello World程序中使用Java表达式的语法标记对<%= %>,JSP还能够支持任意执行任意多行Java代码,使用语法标记对<% %>

循环

<p>Counting to three:</p>
<% for (int i=1; i<4; i++) { %>
    <p>This number is <%= i %>.</p>
<% } %>
<p>OK.</p>

这是在JSP中应用Java语言for循环的例子,这是一种非常常见的模式——我们如果想要动态化博客列表页面,那么就会用到循环来动态生成博客列表。

条件

<% if (1 < 2) { %>
  <p>Condition is true</p>
<% } %>

调用Java类

当我们页面的逻辑比较复杂后,在HTML标签里嵌入大量Java代码同样也会影响可读性、可维护性。所以将一些业务逻辑封装到Java类中,在JSP中调用它们是一个好办法:

package me.ruici;

public class Utils {
    public static String toUpperCase(String data) {
        return data.toUpperCase();
    }
}

在JSP中调用该类需要使用它的全名:

<%= me.ruici.Utils.toUpperCase("test") %>

内置对象

作为一门在Web中产生的技术,JSP当然也要天然的和HTTP联系在一起,否则它就只能算是一个动态HTML生成工具。它内置的对象包括:

  • request,封装了HTTP请求信息——Header, Form等
  • response,封装HTTP响应信息,可以修改响应内容
  • out,输出JSP页面最终的HTML内容
  • session,当前请求对应的用户session信息
  • application,整个web应用对象,可以在所有用户之间共享数据

在JSP中最常见的就是访问request对象了:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Hello World JSP</title>
</head>
<body>
  <h2>JSP Built-in Objects</h2>

  User Agent: <%=request.getHeader("User-Agent") %> <br/><br/>

  User Language: <%=request.getLocale() %> <br/><br/>

</body>
</html>

部署JSP

JSP文件本身不需要编译,而是在运行时被编译为Servlet。只需将它放置在WebContent目录下即可直接访问,例如对于WebContent/index.jsp,通过URL:http://localhost:8080/index.jsp可以访问该JSP文件。

中文支持

为了支持中文,我们推荐使用UTF-8编码保存jsp文件。同时需要在JSP文件头部加入:

<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>

以保证jsp文件被正确的使用UTF-8编码解析并产生内容、正确地在浏览器中显示。


更多文章请访问天码营网站




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值