JSP简介
来源:互联网 发布:c语言学习班 编辑:程序博客网 时间:2024/06/06 05:12
JSP简介
Ricky 发布于 1 年前 0评论 928浏览JSPjavaweb 0 0什么是JSP?
学习了前端技术——HTML/CSS/JavaScript后,我们有能力构建一个漂亮的博客页面,它是静态的——如果需要添加新的内容,需要修改相应的前端文件代码。
掌握了编写Servlet程序后,我们有能力让网页“动”起来——根据不同的输入(URL参数、Session等)生成不同的页面内容。但是Servlet也有自己的缺陷——在Java源文件中维护大量的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基本语法
在JSP中嵌入Java代码有三种形式:Java表达式、Java语句、Java定义。他们分别拥有不同的应用场景,下面分别来介绍它们:
Java表达式
Hello World程序中使用的语法标记对<%= %>
就是Java表达式,它通常用于在页面中展示某一个变量、或者一个表达式的值(当前时间)。
Java语句
JSP还能够支持任意执行任意多行Java代码,使用语法标记对<% %>
。Java表达式所能完成的功能是有限的,例如在博客系统中:
- 根据用户是否登录,显示“我的博客”链接,这里需要用到条件判断
- 展示博客时,需要对文章集合进行循环显示
- 需要通过多行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定义
在JSP中同样可以定义一些临时变量或函数,它们相当于局部变量/函数,仅仅在本JSP页面中可以被访问,通过语法标记对<%! %>
定义:
<%! String makeStringUpper(String data) { return data.toUpperCase(); }%><%=makeStringUpper("test") %>
调用Java类
当我们页面的逻辑比较复杂后,在HTML标签里嵌入大量Java代码同样也会影响可读性、可维护性。所以将一些业务逻辑封装到Java类中,在JSP中调用它们是一个好办法:
package com.tianmaying;public class Utils { public static String toUpperCase(String data) { return data.toUpperCase(); }}
在JSP中调用该类需要使用它的全名:
<%= com.tianmaying.Utils.toUpperCase("test") %>
如果多次用到Utils
类,每次都写上它的全名就不太方便了,为此可以在JSP页面开始时将Utils
引入:
<%@page import="com.tianmaying.Utils"%><%@page import="java.util.*"%>
可以使用通配符*
引入一个包下的所有类。
内置对象
作为一门在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编码解析并产生内容、正确地在浏览器中显示。
- JSP简介
- JSP简介
- jsp简介
- JSP简介
- JSP简介
- JSP简介
- jsp 简介
- JSP简介
- JSP简介
- JSP简介
- JSP简介
- jsp简介
- JSP简介
- JSP简介
- JSP简介
- JSP简介
- jsp简介
- JSP简介
- 微信小程序css篇----字体(Font)
- Jar命令构建jar包
- 阿里云主机搭建lamp环境
- spark core 2.0 LiveListenerBus
- android7.0-PopupWindow-showAsDropDown
- JSP简介
- org.apache.ibatis.binding.BindingException: Parameter 'receptionList' not found. Available parameter
- 常用的几种文件封装格式
- 线性回归
- 浏览器的缓存究竟是什么?为什么j2ee的web工程的js明明修改了,但是浏览器中展示的,并没有改变,还是之前的,即和j2ee的web工程的代码中的不一致
- Android:布局实例之常见用户设置界面
- Linux中函数返回值错误码对照表(1-133)
- 问题3:mysql explain执行计划查看
- center for tourism