00 00JSP学习之JSP入门

1 JSP概述

1、什么是JSP
JSP(Java Server Pages)是JavaWeb服务器得动态资源,它与html页面得作用是相同的,显示数据和读取数据。JSP其实就是一个Servlet。
2、JSP的作用
(1)Servlet
|——缺点:不适合设置html响应体,需要大量的response.getWriter().print(content);
|——优点:动态资源,可以编程。
(2)HTML
|——缺点:HTML是静态页面,不能包含动态信息
|——优点:不用为输出html标签而发愁
(3)JSP
|——优点:在原有HTML页面基础上添加Java脚本,构成JSP页面。
3、JSP和Servlet的分工

(1)JSP
|——作为请求发起发起页面,例如显示表单、超链接。
|——作为请求结束页面,例如显示数据。
(2)Servlet
|——作为请求中处理数据的环节。
4、JSP的组成
(1)JSP = html + Java脚本(代码片段) + JSP动态标签(指令)
(2)jsp中无需创建即可使用的对象一共有9个,被称为9大内置对象,例如:request对象、out对象
(3)3中Java脚本
|——<%...%>:java代码片段(常用),用于定义0-N条Java语句。当成Java方法来看。
|——<%=...%>:Java表达式,用于输出(常用),用于输出一条表达式(或变量)的结果。
|——<%!...%>:声明,用来创建类的成员变量和成员方法(基本不用)。当作类来看。

2 JSP中Java脚本的演示

<!--  它是jsp指令,也是一种特殊的标签 -->
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    
<!-- java代码片段 -->
<%
String path = request.getContextPath();  //获取项目名
/*
http://localhost:8080/jsplearn/
*/
String basePath = request.getScheme() + "://"+ request.getServerName() + ":" + request.getServerPort() + path + "/"; 
%>
<!DOCTYPE html>
<html>
<head>
<!-- 向页面输出basePath,即在每个锚标签 前加basePath,用处不大,知道就可 -->
<base href="<%=basePath %>">  
<meta charset="UTF-8">
<title>FOOL!!!</title>
</head>
<body>
HHY fool!!!!<br>
<%
String str = "HHY big FOOL";
%>
<%
out.print(str);
%><br>

<%!
//项目中慎用
String str = "HHY FOLL!!!";
public void fun(){
	System.out.print(str);
}
%>

<%=str %><br>
<%=this.str %><br>
<table align="center" border="1" width="60%">
	<tr>
		<th id="name">姓名</th>
		<th id="description">描述</th>
	</tr>
<%
for(int i = 0; i < 10; i++){
%>
	<tr>
		<td name="hhy">HHY</td>
		<td name="description">FOOL</td>
	</tr>
<%
}
%>
	
</table>

</body>
</html>

3 JSP和Servlet分工的案例


result.jsp代码:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Result</title>
</head>
<body>
<%
int n = (Integer)request.getAttribute("result");
%>
<%=n %>
</body>
</html>

form.jsp代码

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Form</title>
</head>
<body>
<form action="/jsplearn/AServlet" method="POST">
Integer1: <input type="text" name="int1"><br>
Integer2: <input type="text" name="int2"><br>
<input type="submit" value="submit">
</form>
</body>
</html>

AServlet.java代码

package org.lks.servlet;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class AServlet
 */
@WebServlet("/AServlet")
public class AServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public AServlet() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		response.getWriter().append("Served at: ").append(request.getContextPath());
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		String str1 = request.getParameter("int1");
		String str2 = request.getParameter("int2");
		
		try {
			if(str1.matches("\\d+")) {
				int n1 = Integer.parseInt(str1);
				request.setAttribute("result", n1);
				if(str2.matches("\\d+")) {
					int n2 = Integer.parseInt(str2);
					int sum = n1 + n2;
					request.setAttribute("result", sum);
				}else {
					throw new NumberFormatException("the second number is not a Integer!");
				}
			}else {
				throw new NumberFormatException("the first number is not a Integer!");
			}
		}catch(Exception e) {
			throw e;
		}
		request.getRequestDispatcher("/jsp00/result.jsp").forward(request, response);
	}

}

4 JSP原理

JSP其实就是一种特殊的Servlet。
(1)当jsp页面第一次被访问时,服务器会把jsp编译成java文件(这个java其实就是一个servlet类)。
(2)然后再把java文件编译成.class文件
(3)然后创建该类对象
(4)最后调用它的service()方法
(5)第二次请求同一jsp时,直接调用service()方法。
以下为客户端第一次访问JSP时得过程。

在tomcat的work目录下可以找到jsp对应的.java源代码。

查看java对应得java文件:
(1)java脚本
(2)html

5 JSP中的注释

<%-- ... --%>:当服务器把jsp编译成java文件时已经忽略了注释部分。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值