1.什么是JSP
Java Server Pages:Java服务器端页面,和servlet一样,用于动态web技术
最大的特点:
- 写JSP就像在写HTML
- 区别:
- HTML只给用户提供静态的数据
- JSP页面中可以嵌入Java代码,为用户提供动态数据
2. JSP原理
思路:看一下JSP到底是怎么执行的
- 代码层面没有任何问题
- 服务器内部工作
- Tomcat中有一个work目录;
- IDEA中使用Tomcat的会在IDEA的tomcat中产生一个work目录。找到我们想要找的web项目下的jsp。我们会发现页面转变成了Java程序
- 浏览器向服务器发送请求,不管访问什么资源,其实都是在访问Servlet
- JSP最终也会被转换成为一个Java类;
- JSP本质上就是一个Servlet
//初始化 public void _jspInit(){ } //销毁 public void _jspDestroy(){ } //JSPService public void _jspService(.HttpServletRequest request,final javax.servlet.http.HttpServletResponse response){ }
1.判断请求
2.内置了一些对象
final javax.servlet.jsp.PageContext pageContext;//页面上下文 javax.servlet.http.HttpSession session = null;//session final javax.servlet.ServletContext application;//applicationContext final javax.servlet.ServletConfig config;//config javax.servlet.jsp.JspWriter out = null;//out final javax.lang.Object page = this;//page:代表当前页 HttpServletRequest request;//请求 final javax.servlet.http.HttpServletResponse response//响应 javax.servlet.jsp.JspWriter _jsp_out = null; javax.servlet.jsp.PageContext _jspx_page_context = null;
3.输出页面前的增加代码
response.setContentType("text/html");//设置响应的页面类型 pageContext = _jspFactory.getPageContext(this, request, response,null,true,8192,true); _jsp_page_context = pageContext; application = pageContext.getServletContext(); config = pageContext.getServletConfig(); session = pageContext.getSession(); out = pageContext.getOut(); _jspx_out = out;
4.以上的这些对象我们可以在JSP页面中直接使用
<% String name = "hhh"; %> name : <%=name%>
在JSP中只要是Java代码就会原封不动的输出;如果是HTML代码,就会被转换成
out.write("<html>\r\n");
这样的格式输出
- 我们导入源码后发现它继承了一个HttpJspBase。这个包是在org.apache.jasper.runtime下
3. JSP基础语法
任何语言都有自己的语言,Java中有,JSP作为java技术的一种应用,它拥有一些自己扩充的语法(了解),Java所有语法都支持!
JSP表达式
<%-- JSP表达式 作用:用来将程序的输出,输出到客户端 --%> <%= new java.util.Date()%>
JSP脚本片段
<%--jsp 脚本片段--%> <% int s = 0; for (int i = 0; i <= 100 ; i++) { s += i; } out.println("<h1>s=" + s +"</h1>"); %>
脚本片段的再实现
<% int x = 10; out.println(x); %> <h1>hhh</h1> <% /*这里如果还是x的话会报错*/ int y =20; out.println(y); %> <%--在代码中嵌入HTML元素--%> <% for (int i = 0; i <3 ; i++) { %> <%--EL表达式--%> <%--<%=i%>也可以写成${=i}--%> <h1>Hello,<%=i%></h1> <% } %>
JSP声明
<%! static{ System.out.println("LoadingServlet!"); } private int globalVar = 0; public void hxl(){ System.out.println("进入了这个方法!"); } %>
JSP声明:会被编译到JSP生成Java的类中,其他的就会被生成到_jspService方法中
在Jsp嵌入Java代码即可。
<%%> <%=%> <%!%> <%--注释--%>
JSP的注释不会在客户端显示,但是HTML的注释不会显示。