初入Java后端之jsp

  • JSP是啥?

JSP其实是一种综合HTML、XHTML、XML的代码,能够动态地创建网页,与Java servlet密不可分。JSP页面实质也是一个HTML页面,只不过它包含了用于产生动态网页内容的Java代码。

  • JSP结构

结构和下面的处理很相关(自己画的可能比较丑,能看懂就行)

  • JSP处理  

JSP向web server发出请求,web服务器的组件调用Servlet,执行servlet类(Java的一种类),然后servlet将处理结果嵌入HTTP response并生成HTML,返回给服务器。

  • JSP生命周期

从其被创建到最终被销毁的时间就可以简单的理解成生命周期

代码实例:

public void jspInit(){
  // 初始化代码
}

public void jspDestroy()
{
   // 清理代码
}

生命周期内则是一些服务器处理代码

  • JSP语法注意(仅个人,不代表全部)

声明:<%! int i = 0; %>

表达式:<%= 表达式 %>    例:<%= (new java.util.Date()).toLocaleString()%>

指令标签的使用:

格式:<%@ directive attribute="value" %> 

例:<%@ include file="文件相对 url 地址" %>

<jsp:directive.include file="文件相对 url 地址" />

行为标签

行为标签主要有这10种,使用很简单,查看用法即可

例如:实例化对象并设置属性

<jsp:useBean id="myName" ... />
...
<jsp:setProperty name="myName" property="someProperty" .../>
  • JSP隐藏(内置)对象

request对象

常用方法 方法介绍
String getParameter(String name) 返回name指定参数的参数值
String[] getParameterValues(String name) 返回包含参数name的所有值的数组
void setAttribute(String,Object) 存储此请求中的属性
Object getAttribute(String name) 返回指定属性的属性值
String getContentType() 得到请求体的MIME类型
String getProtocol() 返回请求用的协议类型及版本号
String getServerName() 返回接受请求的服务器主机名
int getServerPort() 返回服务器接受此请求所用的端口号
String getCharacterEncoding() 返回字符编码方式
void setCharacterEncoding() 设置请求的字符编码方式
int getContentLength() 返回请求体的长度(以字节数)
String getRemoteAddr() 返回发送此请求的客户端IP地址
String getRealPath(String path) 返回一虚拟路径的真实路径
String request.getContextPath() 返回上下文路径

request的一个重要用途就是获取客户端的基本信息。下面用程序来测试作用:

<%@ page contentType="text/html;charset=UTF-8" language="java" pageEncoding="gb2312" %>
<html>
  <head>
    <title>requestTest</title>
  </head>
  <body>
  提交方法:<%= request.getMethod()%><br>
  请求的URL地址:<%=request.getRequestURI()%><br>
  协议名称:<%=request.getProtocol()%><br>
  客户端请求服务器文件的路径:<%=request.getServletPath()%><br>
  URL的查询部分:<%=request.getQueryString()%><br>
  服务器的名称:<%=request.getServerName()%><br>
  服务器的端口号:<%=request.getServerPort()%><br>
  远程客户端的IP地址:<%=request.getRemoteAddr()%>
  </body>
</html>

response对象

response与request是一对相对应的内置对象,response可以理解为客户端的响应

response对象的功能分为以下四种:

(1)设置响应头信息

(2)发送状态码

(3)设置响应正文

(4)重定向

设置响应头信息

使用该方法设置的响应头最终会发送给客户端浏览器!

(1)response.setHeader(“content-type”, “text/html;charset=utf-8”):设置content-type响应头,该头的作用是告诉浏览器响应内容为html类型,编码为utf-8。而且同时会设置response的字符流编码为utf-8,即response.setCharaceterEncoding(“utf-8”);

(2)response.setHeader("Refresh","5; URL=http://www.baidu.com"):5秒后自动跳转到百度主页。

设置状态码及其他方法

(1)response.setContentType("text/html;charset=utf-8"):等同与调用response.setHeader(“content-type”, “text/html;charset=utf-8”);

(2)response.setCharacterEncoding(“utf-8”):设置字符响应流的字符编码为utf-8;

(3)response.setStatus(200):设置状态码;

(4)response.sendError(404, “您要查找的资源不存在”):当发送错误状态码时,Tomcat会跳转到固定的错误页面去,但可以显示错误信息。

重定向

response.setHeader("Location", "http://www.baidu.com");

和response.sendRedirect("http://www.baidu.com")两种方法

session对象

session的生命周期:当用户访问某个页面到关闭浏览器,这段使时间。

session和cookie:session和cookie对象是一一对应关系。JSP引擎会将创建好的session对象存放在对应的cookie中。

主要方法:
1. getAttribute( String name )
获取指定名字name相联系的信息.

2. getAttributeNames()
返回Session对象中存储的每一个属性对象,其结果为一个类举的实例.

3. getCreationTime()
返回Session被创建的时间.最小单位为千分之一秒.

4. getId()
此方法返回惟一的标识,这些标识为每个Session而产生.当只有一个单一的值与一个Session联合时,或当日志信息与先前的Session有关时,它被当做键名用.

5. GetLastAccessedTime()
返回当前Session对象最后被客户发送的时间,最单位为千分之一秒.

6. GetMaxInactiveInterval()
返回总时间(秒),负值表示Session永远不会超时.该时间为该Session对象的生存时间.

7. removeAttribute( String name )
删除与提定名字name的相联系的信息.

8. setAttribute( String name , java.lang.Object value )
设置指定名字name的属性值value,并将之存储在Session对象中.

session一般应用在判断用户是否登录

实例:

<%@page contentType="text/html;charset=GB2312"%>
<html>
  <head>  </head>
  <body>
  <%String s = session.getId(); //获取session ID号  %>
    <p>你的session对象ID是:</p>
<%=s %>  <%!
    int Num = 0; //定义前面要加!号
    synchronized void countPeople() { //同步方法
      Num++;
    }
  %>
  <%
    if (session.isNew()) { //判断是否为新用户
      countPeople();
      String str = String.valueOf(Num);
      session.setAttribute("count", str); //将str 添加到session对象中
    }
  %>
    <p> 
你是第<%=(String)session.getAttribute("count")%>个访问本站的人
    </p>
    <!--将session对象的count值取出-->
  </body>
</html>

application对象

application常用的方法

  • public void setAttribute(String name,Object value)使用指定名称讲对象绑定到此会话。

  • public Object gerAttribute(String name)返回与此会话中的指定名称绑定在一起的对象,如果没有对象绑定在该名称下,则放回null
  • Enumeration getAttributeNames()返回所有可用属性名的枚举
  • Strring getServerInfo()返回jsp(Servlet)引擎及版本号

其他四个对象

  • out(JspWriter):等同与response.getWriter(),用来向客户端发送文本数据;
  • config(ServletConfig):对应“真身”中的ServletConfig;
  • page(当前JSP的真身类型):当前JSP页面的“this”,即当前对象,引用为Object类型;
  • pageContext(PageContext):页面上下文对象,它是最后一个没讲的域对象;
  • exception(Throwable):只有在错误页面中可以使用这个对象;

个人JSP学得较浅,各类书籍对jsp的介绍也不同,可参考书籍《JSP从零开始学(刘鑫)》《head first servlet & jsp》

猜你喜欢

转载自blog.csdn.net/chachapaofan/article/details/82659915