Web基础(二)----JSP入门

一、servlet输出动态页面

package com.ken.demo;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class HtmlServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;

	protected void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		response.setContentType("text/html;charset=utf-8");
		PrintWriter writer = response.getWriter();
		// 动态的响应页面
		writer.write("");
		writer.write("");
		writer.write("");
		writer.write("");
		writer.write("Insert title here");
		writer.write("");
		writer.write("");
		writer.write("

这个页面很繁琐

"); writer.write(""); writer.write(""); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } }

二、jsp的来源

Web基础(二)----JSP入门_第1张图片

三、jsp脚本和注释

3.1 脚本

1)<%java代码%> ----- 内部的java代码翻译到service方法的内部

2)<%=java变量或表达式> ----- 会被翻译成service方法内部out.print()

3)<%!java代码%> ---- 会被翻译成servlet的成员的内容

3.1.1 <%java代码%>

创建index.jsp
<%@ page language="java" contentType="text/html; charset=UTF-16"
	pageEncoding="UTF-16"%>




Insert title here


	<%
		int i = 0;
		System.out.print(i);
	%>

访问index.jsp

Web基础(二)----JSP入门_第2张图片
Web基础(二)----JSP入门_第3张图片

3.1.2 <%=java变量或表达式>

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




Insert title here


	<%
		int i = 0;
		System.out.print(i);
	%>
	
	<%=i %>

Web基础(二)----JSP入门_第4张图片

3.1.3 <%!java代码%>

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




Insert title here


	<%
		int i = 0;
		System.out.print(i);
	%>

	<%=i%>
	<%=1 + 1%>

	<%!
		String str = "hello china";
	%>
	<%=str%>

3.2 jsp注释

不同的注释可见范围是不同

1)Html注释:---可见范围 jsp源码、翻译后的servlet、页面 显示html源码

2)java注释://单行注释  /*多行注释*/ --可见范围 jsp源码 翻译后的servlet

3)jsp注释:<%--注释内容--%>----- 可见范围 jsp源码可见

四、jsp运行原理

jsp本质就是servlet(面试)

jsp在第一次被访问时会被Web容器翻译成servlet,再执行

过程:

第一次访问---->helloServlet.jsp---->helloServlet_jsp.java---->编译运行

PS:被翻译后的servlet在Tomcat的work目录中可以找到

Web基础(二)----JSP入门_第5张图片

Web基础(二)----JSP入门_第6张图片
这个类继承了httpServlet,里面有对应的init(), destroy(), service()等方法。
Web基础(二)----JSP入门_第7张图片
Web基础(二)----JSP入门_第8张图片
jsp脚本里写的东西都会在这里以java代码出现。
带感叹号的脚本会变成成员变量,不带感叹号的脚本就是局部变量。
Web基础(二)----JSP入门_第9张图片
Web基础(二)----JSP入门_第10张图片
我们到tomcat的conf包下找到web.xml
Web基础(二)----JSP入门_第11张图片
Web基础(二)----JSP入门_第12张图片
Web基础(二)----JSP入门_第13张图片
可以看出来,访问jsp是通过servlet的。
再说jsp运行原理:
当你访问服务端的某个jsp,这个jsp如果是第一次被访问,会去tomcat容器的work目录下找有没有和它对应的servlet的java文件。有,则直接用这个servlet响应;没有,则把这个jsp翻译成对应的servlet的java文件,再响应。

你可能感兴趣的:(Web基础)