JSP 与 PHP、ASP、ASP.NET 等语言类似,运行在服务端的语言。
JSP全名是Java Server Page,它是建立在Servlet规范之上的动态网页开发技术。
在JSP文件中,HTML代码与Java代码共同存在,其中,HTML代码用来实现网页中静态内容的显示,Java代码用来实现网页中动态内容的显示。为了与普通HTML有所区别,JSP文件的扩展名为 .jsp。
JSP开发的WEB应用可以跨平台使用,既可以运行在 Linux 上也能运行在 Windows 上。
在jsp文件中,使用JSP标签在HTML网页中插入Java代码。标签通常以<%开头以%>结束。
注意:HTML和JSP注释的区别:
例如:
- <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
- <%
- String path = request.getContextPath();
- String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
- %>
- <%@ page import="java.io.*,java.util.*, javax.servlet.*" %>
- HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
- <html>
- <head>
- <title>我的jsp页面title>
- head>
-
- <body>
- This is my JSP page.
- <%
- Date date = new Date();
- out.print(date.toString());
- %>
-
- <br>
- body>
- html>
把JSP页面中普通的HTML标记符号,交给客户的浏览器执行显示。
JSP标记、数据和方法声明、Java程序片由Tomcat服务器负责执行,将需要显示的结果发送给客户的浏览器。
Java表达式由Tomcat服务器负责计算,将结果转化为字符串,交给客户的浏览器负责显示。
在Tomcat服务器的web.xml(D:\apache-tomcat-7.0.27\conf\web.xml)文件中实现了JSP的相关配置:
Tomcat中的JSP引擎就是这个Servlet程序,该Servlet程序实现了对所有JSP页面的解析。
JSP文件也可以像Servlet程序一样,在web.xml文件中进行注册和映射虚拟路径。
注册JSP页面的方式与Servlet类似,只需将
- <servlet>
- <servlet-name>FirstServletservlet-name>
- <jsp-file>/index.jspjsp-file>
- servlet>
-
- <servlet-mapping>
- <servlet-name>FirstServletservlet-name>
- <url-pattern>/diaoloveurl-pattern>
- servlet-mapping>
通过映射虚拟路径也可以访问index.jsp文件
在传统的HTML页面文件中加入Java程序片和JSP标签,就构成了一个JSP页面。
JSP页面可由5种元素组合而成:
① 普通的HTML标记符;
② JSP标记,如指令标记、动作标记;
③ 变量和方法的声明;
④ Java程序片;
⑤ Java表达式
Jsp的本质是servlet, 通过response的printWriter返回,response的getOutputStream只能调用一次,返回流就不能返回页面刷新。
JSP的执行过程主要可以分为以下几点:
客户端发出请求。
Web容器将JSP转译成Servlet源代码。
Web容器将产生的源代码进行编译。
Web容器加载编译后的代码并执行。
把执行结果响应至客户端。
JSP页面可以含有HTML标记,当客户通过浏览器请求一个JSP页面时,Tomcat服务器将该JSP 页面中的HTML标记直接发送给客户的浏览器,由客户的浏览器负责执行这些HTML标记。
而JSP 页面中的变量声明、程序片以及表达式由Tomcat服务器处理后,再将有关的结果用文本方式发送给客户端的浏览器。
JSP页面中的HTML标记是页面的静态部分,即不需要服务器做任何处理,直接发送给客户的信息。
以下介绍 JSP页面中使用的HTML标记。
表单的一般格式如下:
" name="表单的名字">
数据提交手段部分
参考链接:HTML input 标签 | 菜鸟教程 (runoob.com)
在表单中用Input标记来指定表单中数据的输入方式以及表单的提交键。
其基本格式如下:
输入对象的GUI类型" name= "名字" >
服务器通过属性name指定的名字来获取"输入对象的GUI类型"中提交的数据。
"输入对象的GUI类型"可以是:text(文本框)、checkbox(检查框)、submit(提交键)、hidden(隐藏)等 .
- <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
- <%
- String path = request.getContextPath();
- String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
- %>
-
- HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
- <html>
- <head>
- <base href="<%=basePath%>">
-
- <title>My JSP 'index.jsp' starting pagetitle>
- <meta http-equiv="pragma" content="no-cache">
- <meta http-equiv="cache-control" content="no-cache">
- <meta http-equiv="expires" content="0">
- <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
- <meta http-equiv="description" content="This is my page">
-
- head>
-
- <body>
- <form action="receive.jsp" method=post name=form>
- <P>请输入下列信息:
- <BR>输入您的姓名:<Input type="text" name="name" value="张三">BR>
- <BR>选择性别:<Input type="radio" name="R" value="男" checked="default">男
- <Input type="radio" name="R" value="女">女
- BR>
- <BR>选择您喜欢的歌手:
- <Input type="checkbox" name="superstar" value="张歌手" >张歌手
- <Input type="checkbox" name="superstar" value="李歌手" >李歌手
- <Input type="checkbox" name="superstar" value="刘歌手" >刘歌手
- <Input type="checkbox" name="superstar" value="王歌手" >王歌手
- BR>
- <Input type="hidden" value="这是隐藏信息" name="secret">
- <Input type="submit" value="提交" name="submit">
- form>
-
- body>
- html>
receive.jsp页面
- <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
- <%@ page contentType="text/html;Charset=utf-8"%>
- <%
- String path = request.getContextPath();
- String basePath = request.getScheme() + "://"
- + request.getServerName() + ":" + request.getServerPort()
- + path + "/";
- %>
-
- HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
- <html>
- <head>
- <base href="<%=basePath%>">
-
- <title>My JSP 'receive.jsp' starting pagetitle>
- head>
-
- <body>
-
- <%
- request.setCharacterEncoding("utf-8");
- String yourName = request.getParameter("name"); //获取text提交的值
- String yourSex = request.getParameter("R"); //获取radio提交的值
- String secretMess = request.getParameter("secret"); //获取hidden提交的值
- String personName[] = request.getParameterValues("superstar");
- //获取checkbox提交的值
- out.println("<P> 您的姓名:" + yourName + "P>");
- out.println("<P> 您的性别:" + yourSex + "P>");
- out.println("<P> 您喜欢的歌手:");
- if (personName == null) {
- out.print("一个都不喜欢");
- } else {
- for (int k = 0; k < personName.length; k++) {
- out.println(" " + personName[k]);
- }
- }
- out.println("<P> hidden提交的值:" + secretMess);
- %>
- body>
- html>
获取表单提交的数据: