JSP入门(一)

简介: JSP入门()(一)

JSP入门


1.JSP概述


1. 什么是JSP


  • JSP(Java Server Pages)是JavaWeb服务器端的动态资源。它与html页面的作用是相同的,显示数据和获取数据。


2. JSP的组成


  • JSP = html + Java脚本(代码片段) + JSP动态标签


  • jsp中无需创建即可使用的对象一共有9个,被称之为内置对象,例如:request对象、out对象


  • 3种java脚本


①<%...%>:java代码片段(常用)用于定义0–N条java语句!方法内能写什么,它就可以放什么


②<%=…%>:java表达式,用于输出一条表达式(或变量)的结果


③<%!...%>:声明,用来创建类的成员变量和成员方法(基本不用,但容易被考到)


20190412154928614.png

3. Jsp和Servlet分工[掌握]


  • JSP


①作为请求发起页面,例如显示表单、超链接


②作为请求结束页面,例如显示数据


  • Servlet:作为请求数据的环节


4. 小案例

20190311205615386.png

form.jsp


<body>
  <form action="/jsp/AServlet" method="post">
   整数1:<input type="text" name="num1"/></br>
   整数2:<input type="text" name="num2"/><br>
   <input type="submit" value="提交"/>
   </form>
  </body>

 

AServlet


public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  // 获取参数
  String s1 = request.getParameter("num1");
  String s2 = request.getParameter("num2");
  // 转换成int类型
  int num1 = Integer.parseInt(s1);
  int num2 = Integer.parseInt(s2);
  int sum = num1 + num2;
  // 把结果保存到request域中
  request.setAttribute("result", sum);
  // 转换到result.jsp
  request.getRequestDispatcher("/jsp/result.jsp").forward(request,response);
  }


result.jsp


<body>
   <% 
   Integer result=(Integer)request.getAttribute("result");
   %>
   <%=result%>
</body>


5. Jsp原理

20181103133534215.png

20181103133548537.png

20181103133607297.png



①.html数据都会在out.write()中出现,而且是在双引号内,即当前字符串输入给客户端


②.<% %>中的数据会原封不动的入到"真身"中,它一定是一条合法的java语法


③.<%=…%>中的数据会放到out.println()中,但没有双引号,那么就不会输出字符串,而是输出变量


6. Jsp注释


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


Cookie


  1. Cookie[重要] Cookie是不能跨浏览器


  • Cookie是由服务器创建,然后通过响应发送给客户端的一个键值对。客户端会保存Cookie,并会标注出Cookie的来源(哪个服务器的Cookie)。当客户端向服务器发出请求时会把所有这个服务器Cookie包含在请求中发送给服务器,这样服务器就可以识别客户端了!


1. 精通


  • response.addCookie():方法向浏览器保存Cookie


  • request.getCookies()方法获取浏览器归还的Cookie


  • getName():得到当前Cookie的名字


  • getValue():得到当前Cookie的值


2.Cookie第一例:


①一个jsp保存cookie,a.jsp


<h1>保存Cookie</h1>
    <%
    //创建cookie
    Cookie cookie1=new Cookie("aaa","AAA");
    //往相应对象中添加cookie(服务器给浏览器)
    response.addCookie(cookie1);
    Cookie cookie2=new Cookie("bbb","BBB");
    response.addCookie(cookie2);
    %>


②另一个jsp获取浏览器归还的Cookie b.jsp


<h1>获取Cookie</h1>
<% 
Cookie[]cookies=request.getCookies();
if(cookies!=null){
  for(Cookie c:cookies){
  out.print(c.getName()+"="+c.getValue()+"<br/>");
  } 
}
%>


3.Cookie的生命 掌握


  • cookie.setMaxAge(-1):cookie的maxAge属性的默认值就是-1,表示只在浏览器内存中存活。一旦关闭浏览器窗口,那么cookie就会消失[ <0 表示只要浏览器关闭,cookie就消失]


  • cookie.setMaxAge(60*60):表示cookie对象可存活1小时。当生命大于0时,浏览器会把Cookie保存到硬盘上,就算关闭浏览器,就算重启客户端电脑,cookie也会存活1小时;[ 以秒为单位 ]


  • cookie.setMaxAge(0):cookie生命等于0是一个特殊的值,它表示cookie被作废!也就是说,如果原来浏览器已经保存了这个Cookie,那么可以通过Cookie的setMaxAge(0)来删除这个Cookie。无论是在浏览器内存中,还是在客户端硬盘上都会删除这个Cookie。


4. Cookie的路径(path)


1.Cookie的path并不是设置这个Cookie在客户端保存路径!!


2.Cookie的path由服务器创建Cookie时创建


3.当浏览器访问服务器的路径,如果包含某个Cookie路径,那么久会归还这个Cookie。例如:


a. Cookie.path=/day11_1/;  
b. Cookie.path=/day11_1/jsps/; 
c. Cookie.path=/day11_1/jsps/cookie


①访问=/day11_1/index.jsp时,归还aCookie


②访问=/day11_1/jsps/a.jsp时,归还aCookie、bCookie


③访问=/day11_1/jsps/cookie/b.jsp时,归还aCookie、bCookie、cCookie


Session


3HttpSession[重要]


1.HttpSession概述


  • HttpSession是由JavaWeb提供的,用来会话跟踪类。session是服务器端对象,保存在服务器端!


  • HttpSession是Servlet三大域对象之一(request、session、application[ServletContext])


  • session底层依赖Cookie,或是URL重写


2.HttpSession的作用


  • 会话范围:会话范围是某个用户从首次访问服务器开始,到该用户关闭浏览器结束!


  • 会话:一个用户对服务器的多次连贯性请求!所谓连贯性请求,就是该用户多次请求中间没有关闭浏览器!


  • 服务器会为每个客户端创建一个session对象,session就好比客户在服务器端的账户,它们被服务器保存到一个Map中,这个Map被称之为session缓存!


  • Servlet中得到session对象:HttpSession session = request.getSession();


  • Jsp中得到session对象:session是jsp内置对象之下,不用创建就可以直接使用!


  • session域相关方法


①void setAttribute(String name, Object value);


②Object getAttribute(String name);注意返回一个Object


③void removeAttribute(String name);


3. 案列


案例1:演示session中会话的多次请求中共享数据[了解]


a.jsp


<h1>向session域保存数据</h1>
  <%
  session.setAttribute("aaa", "AAA");
  %>


b.jsp


<h1>获取session中的数据</h1>
    <%
    String s=(String)session.getAttribute("aaa");
    %>
    <%=s %>

 

4.HttpSession原理[理解]


request.getSession()方法:


> 获取Cookie中的JSESSIONID:


如果sessionId不存在,创建session,把session保存起来,把新创建的sessionId保存到Cookie中


如果sessionId存在,通过sessionId查找session对象,如果没有查找到,创建session,把session保存起来,把新创建的sessionId保存到Cookie中


如果sessionId存在,通过sessionId查找到了session对象,那么就不会再创建session对象了。


返回session


  • request.getSession(false)、request.getSession(true)、request.getSession(),后两个方法效果相同


第一个方法:如果session缓存中(如果cookie不存在),不存在session,那么返回null,而不会创建session对象。


20190313213212735.png


5.Session中其他方法[了解]


String getId():获取sessionId;


int getMaxInactiveInterval():获取session可以的最大不活动时间(秒),默认为30分钟。当session在30分钟内没有使用,那么Tomcat会在session池中移除这个session;


void invalidate():让session失效!调用这个方法会被session失效,当session失效后,客户端再次请求,服务器会给客户端创建一个新的session,并在响应中给客户端新session的sessionId;[重要]


boolean isNew():查看session是否为新。当客户端第一次请求时,服务器为客户端创建session,但这时服务器还没有响应客户端,也就是还没有把sessionId响应给客户端时,这时session的状态为新。


6.URL重写 [ 理解 ]


  • 就是把所有的页面中的路径,都使用response.encodeURL("…")处理一下!


session依赖Cookie,目的是让客户端发出请求时归还sessionId,这样才能找到对应的session


如果客户端禁用了Cookie,那么就无法得到sessionId,那么session也就无用了!也可以使用URL重写来替代Cookie

让网站的所有超链接、表单中都添加一个特殊的请求参数,即sessionId

这样服务器可以通过获取请求参数得到sessionId,从而找到session对象。


response.encodeURL(String url) 该方法会对url进行智能的重写:当请求中没有归还sessionid这个cookie,那么该方法会重写url,否则不重写!当然url必须是指向本站的url


<body>
  <a href="/JavaBase/AServlet;JESSIONID=<%=session.getId()%>">点击</a>
  <%
    out.println(response.encodeURL("/JavaBase/AServlet"));
   %>
  </body>


第一次访问


20190526130533905.png

第二次访问


20190526130607798.png

相关文章
QGS
|
11月前
|
XML 开发框架 安全
手摸手入门JSP基础语法
JSP(全称Java Server Pages)是由Sun Microsystems公司主导创建的一种动态网页技术标准。JSP部署于网络服务器上,可以响应客户端发送的请求,并根据请求内容动态地生成HTML、XML或其他格式文档的Web网页,然后返回给请求者。JSP技术以Java语言作为脚本语言,为用户的HTTP请求提供服务,并能与服务器上的其它Java程序共同处理复杂的业务需求。
QGS
60 0
QGS
|
11月前
|
XML JavaScript 前端开发
手搭手入门纯Servlet+JSP+Mybatis+Tomcat9实现Web更删改查
Servlet对象的生命周期 Servlet对象的生命周期是由Tomcat服务器(中间件)全权负责的。 Tomcat服务器(中间件)有通常被称为WEB容器。
QGS
118 0
手搭手入门纯Servlet+JSP+Mybatis+Tomcat9实现Web更删改查
|
存储 缓存 Java
JAVA Web入门之JSP内置对象的解析及使用(超详细必看)
JAVA Web入门之JSP内置对象的解析及使用(超详细必看)
223 0
JAVA Web入门之JSP内置对象的解析及使用(超详细必看)
|
安全 JavaScript 前端开发
Java Web入门之JSP的基本语法解析及实战(超详细 附源码)
Java Web入门之JSP的基本语法解析及实战(超详细 附源码)
228 0
Java Web入门之JSP的基本语法解析及实战(超详细 附源码)
|
XML 前端开发 JavaScript
【JSP入门】只知道HTML却不知道JSP?
今天我们继续来总结学习JSP相关知识,上一篇我们学习了Servlet的基础入门,如果你还对Servlet那么建议你先去看一下上篇文章再回来。
【JSP入门】只知道HTML却不知道JSP?
|
JavaScript Java
JSP中的EL表达式入门
JSP中的EL表达式入门
121 0
|
XML SQL 前端开发
JSP入门(三)
JSP入门(三)
144 0
JSP入门(三)
|
Java 应用服务中间件
JSP入门(二)
JSP入门(二)
124 0
JSP入门(二)
|
Java 应用服务中间件 开发者
JSP 入门|学习笔记
快速学习 JSP 入门
180 0
JSP 入门|学习笔记
|
XML Java 数据格式