主要内容:
1.JSP基础
2.Cookie
3.HttpSession
==========================================
JSP基础
1.jsp的作用
*Servlet:
>缺点:不适合设置html响应体,需要大量的response.getWriter().print("html");
>优点:动态资源,可以编程。
*html:
>缺点:html是静态页面,不能包含动态信息
>优点:不用为输出html标签而发愁
*jsp:(Java Server Pages)
>优点:在原有的html基础之上添加了java脚本,构成jsp页面。
2.jsp和Servlet的分工:
*JSP:
>作为请求发起页面,例如显示表单、超链接。
>作为请求结束页面,例如显示数据。
*Servlet:
>作为请求中处理数据的环节。
3.jsp的组成
*jsp=html + java脚本 + jsp标签(指令)
*jsp中无需创建即可使用的对象一共有9个,被称之为9大内置对象。例如:request对象、out对象
*3种java脚本:
> <%...%>:java 代码片段(常用),用于定义0~N条Java语句!---->方法里能写什么它就能放什么。
> <%=...%>:Java表达式,用于输出(常用),用于输出一条表达式(或变量)的结果。--->response.getWriter().print(...);这里能放什么,它就可以放什么!
> <%!...%>:声明,用来创建类的成员变量和成员方法(基本不用,但容易被考到)。--->类体中可以放什么,它就可以放什么。
class MyClass{
成员;
方法;
构造器;
构造代码块;
静态块;
内部类;
}
案例:演示jsp中java脚本的使用!
<!-- 它是jsp指令,也是一种特殊的标签! --> <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <!-- Java代码的片段 --> <% String path = request.getContextPath();//获取项目名 /* http://localhost:8080/XJS_JSP/ */ String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; //获取协议名+服务器名+服务器端口号+path项目名+ %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <!-- 向页面输出basePath --> <base href="<%=basePath%>"> <title>My JSP ‘index.jsp‘ starting page</title> <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"> <!-- <link rel="stylesheet" type="text/css" href="styles.css"> --> </head> <body> This is my JSP page. <br> <% int a=10; %> <br> <% out.print(a); %> <%=a %><!-- 输出 --> </body> </html>
案例:演示jsp与servlet分工!
form.jsp
1 form.jsp 2 3 <form action="/XJS_JSP/AServlet" method="post"> 4 整数1:<input type="text" name="num1" value=""> 5 整数2:<input type="text" name="num2" value=""> 6 <input type="submit" value="提交"> 7 </form>
result.jsp
1 <body> 2 结果是:<%=request.getAttribute("sum") %> 3 </body>
AServlet.java
1 public class AServlet extends HttpServlet { 2 public void doPost(HttpServletRequest request, HttpServletResponse response) 3 throws ServletException, IOException { 4 String num1=request.getParameter("num1"); 5 Integer n1 = Integer.valueOf(num1); 6 String num2 = request.getParameter("num2"); 7 Integer n2 = Integer.valueOf(num2); 8 int c=n1+n2; 9 request.setAttribute("sum", c); 10 //转发到a.jsp 11 RequestDispatcher rd=request.getRequestDispatcher("/result.jsp"); 12 rd.forward(request, response); 13 } 14 15 }
4.jsp原理(理解)
*jsp其实是一种特殊的Servlet
>当jsp页面第一次被访问时,服务器会把jsp编译成java 文件(这个java其实是一个servlet类)
>然后再把java编译成.class文件
>然后创建该类对象
>最后调用它的service()方法
>第二次请求同一jsp时,直接调用service()方法。
*在tomcat的work目录下可以找到jsp对应的.java源代码。
*查看jsp对应的java文件:
>java脚本
>html
在这些源文件中的jspService()方法中,已经声明过了jsp的9大内置对象 ,以及对内置对象的赋值,然后你就可以在jsp中直接使用内置对象了。
5.jsp注释
* <%-- ... --%>:当服务器把jsp编译成Java文件时已经忽略了注释部分!不会在客户端浏览器显示!!!
<!-- HTML注释 -->会出现在编译后的Java代码中,也会发送到客户端的F12开发人员(源码界面),但不会在页面显示!!!