J2EE之JSP整理

JSP属于主流的动态网页脚本技术。

J2EE之JSP整理_第1张图片
一个简单的login.jsp

<% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getSe - CSDN博客

本次整理大概目录是: 

1. JSP三大指令(page,include, taglib)

2. JSP四脚本元素(注释、脚本、表达式和声明)

3. JSP九大对象 (out,request,response,exception,application,page,pageContext,session,config)

4. JSP七大动作(include,useBean, getProperty, setProperty, forward, param, plugin)

5.jsp状态管理( html,cookie)

6.jsp实现应用技术两种方式(model1和model2)


一、JSP三大指令:

1.page指令:页面指令

J2EE之JSP整理_第2张图片

这里的import指的是引用类文件

language描述指定jsp页面使用的脚本语言(默认值如java)

contentType指定编码方式,默认值如text/html;charser=utf-8

2.include指令:包含指令

将一个外部文件嵌入到当前jsp文件中,解析这个页面的jsp语句。

eg.<%@ include file="somefile.jsp" %>


3. taglib指令:标签库指令

描述了要使用的JSP标签库,使用标签库定义新的自定义标签,在jsp页面中启用定制行为。

<%@ taglib prefix="myprefix" uri="taglib/mytag.tld" %>


二、JSP脚本元素:JSP脚本元素可以将Java代码嵌入到JSP页面里,这些Java代码将出现在由当前JSP页面生成的Servlet中,使JSP将静态内容与动态内容分离出来。

这里的jsp脚本元素又包含注释、脚本、表达式和声明四种。

1.jsp注释

html注释(客户端可见):

jsp注释(客户端不可见):<%--注释--%>

jsp脚本注释://....    /*...*/


2. jsp脚本:其实就是在jsp页面的java代码

 语法:<% java代码 %> 

       脚本的本质:就是将代码插入到Servlet的service()方法中。

例如:<% out.println("welcome");%>


3. jsp表达式:在jsp页面中执行的表达式

 语法:<%= expression %>

        例如:<%=user.getName() %>


4. jsp声明:在jsp页面定义变量或者方法

    语法:<%! code %>

    声明的本质:其实就是将声明的变量加入到Servlet类(在任何方法之外),方法就成了Servlet()的方法。

例如:

<%! string s="hello";                          //声明变量

int add(int x,int y){ return x+y;}   %>   //声明方法

   

      你好,<%=s%>                               //jsp表达式

     x+y= <%=add(10,5)%>                  //表达式

   


如果是用表达式和脚本形式分别输出九九乘法表这种,

表达式形式指的是在<%!...%>声明中声明方法或者变量计算值,然后返回,再由一个表达式<%=...%>来输出

而脚本形式指的是在<%!...%>声明中就直接java代码输出了


三 .jsp九大内置对象:是web容器创建的一组对象,不需要使用new就可以使用的内置对象。

out、request、response、session、application、page、pageContext、exception、config

1. out :  向客户端输出数据,字节流。

  void println()(打印)

  void clear() (清除)

  void close()

     eg.   <% out.println(" hello");    %>

      eg.  <%   i=2;    out.println(i); %>

      eg.<% out.println("
");   %>


2.  request:  (常用)用户发送请求

String getParameter(String name):   得到表单参数名name的值String[] getParameterValues(String name):  得到String[]复选框时常用用setAttribute(String name,Object obj):设置属性名为name,属性值为obj.getAttribute(String name);得到属性值. 


3.response:服务器响应请求

封装jsp产生的回应,然后发送到客户端以响应客户的请求.重定向跳转任意界面.(服务器跳转)

addCookie(Cookie cookie)

sendRedirect("/wel.jsp"):跳转到指定页面


4. session:客户端与服务器的一次对话

用于保存用户信息,跟踪用户行为,当前打开的浏览器内,多个页面共享数据. session对象指的是客户端与服务器的一次会话,从客户连到服务器的一个WebApplication开始,直到客户端与服务器断开连接为止.它是HttpSession类的实例.

服务器的内存中保存着不同用户的session

一个用户有唯一的session,需要的信息保存在session中

setAttribute(String name,Object obj):设置属性名为name,属性值为obj.getAttribute(String name):得到属性值.

session的生命周期:(某次会话当中通过超链接打开的新页面,同一次会话,只要当前会话页面没有全部关闭,重新打开新的浏览器的窗口访问同一项目资料属于同一次会话)

①加载,实例化    ②初始化 init()     ③处理请求 service()     ④卸载destroy()

session的销毁:①调用session.invalidate()      ②session过期(超时,可设置时间)     ③服务器重新启动


5. Application:实现了用户间数据的共享,可存放全局变量。

它开始于服务器的启动,直到服务器的关闭。在此期间,此对象将一直存在;这样在用户的前后连接或不同用户之间的连接中,可以对此对象的同一属性进行操作;在任何地方对此对象属性的操作,都将影响到其他用户对此的访问。它是ServletContext类的实例。

session,application,request的区别:

session尽量少,因为过多session会影响程序的执行效率.它主要用于保存登录信息(用户信息,权限,资源)即频繁使用的信息。

application:用于多个浏览器之间共享数据,多个用户共享该对象,可以做计数器。它的用法与session完全一样。

数据范围:application(服务器关闭时失效)>session(浏览器关闭时失效)>request(只能用于两个跳转页面之间)


6. page对象:指向当前的jsp页面本身

      相当于java中的this。

      数据范围:page

7. pageContext对象:可访问jsp页面内所有对象及名字空间,只对当前jsp页面有效

         例如:可访问本页所在session,也可取本页所在application的某一属性值

8. Config对象:jsp对应的servlet的配置,可以得到web.xml中的初始化参数。

9. Exception对象:代表运行时的异常。

           在会发生异常的页面加入指令:<%@ page errorPage="处理错误的页面.jsp"%>

          在处理异常的页面写入:<%@ page isErrorPage="true"%>


四 .jsp七大动作:

1 include 动态包含(分别编译)。

 指令操作: <%@ include file="url" %>    适用于页面不经常变化的

动作操作:    适用于页面经常变化的

 flush属性: 用true ,表示页面可刷新。默认为false;

J2EE之JSP整理_第3张图片


2. usebean:作用域默认为page(本页面有效).

(此处是JavaBean在jsp中的使用       https://www.jianshu.com/p/c589bb11a77b)


3. getProperty:用于从对象中取出属性值, 此处的name为useBean动作中的id


4.  setProperty:用于设置对象的属性值,此处的name为useBean动作中的id

与表单有关:

与request有关:

常与一起使用,作为其子标签

1).可添加其他参数,则在跳转后的页面可以接收到加入的其他参数的值

 

2.)可修改原来的参数值


6. forward动作:服务器内部转发

等同于<%  request.getRequestDispatcher("/url").forward(request,response);  %>

7.  plugin动作:用于指定在客户端运行的插件    


五、jsp状态管理:

  (1)http协议的无状态性

   (2)cookie(客户端技术):web服务器保存在客户端的一系列文本信息

保存用户状态两大机制:

Session(服务端):会话控制,在服务端保存的一个数据结构,Session 对象存储特定用户会话所需的属性及配置信息,用来跟踪用户的状态,这个数据可以保存在集群、数据库、文件中;抽象概念。

Cookie(客户端):客户端保存用户信息的一种机制,用来记录用户的一些信息,也是实现Session的一种方式。真实存在。


六、jsp实现应用程序技术两种方式

      1.model1:架构简单,适合小型项目开发,jsp职责不明确

J2EE之JSP整理_第4张图片

2.model2(MVC):jsp职责较明确,适合大型项目开发(model view controller)

J2EE之JSP整理_第5张图片

JavaBean:model

JSP:View

Servlet:Controller


------------------------------------------------------------------------------------------------------------------

一些常考的点:

1. jsp三大指令

2. 九大内置对象

3 .session的概念

4 .session的生命周期

5.session和cookie

6 .表单两种提交方式对比(get和post):

       get:明文方式通过url提交,适合小数据,数据小于2kB,用于搜索查询,效率高,安全性低,(提交的数据会显示在地址)。

       post:将用户提交信息封装于html header内,适合提交数据量大的、安全性高的用户信息(注册修改上传等,注册数据不会显示在地址)

7. jsp两种页面跳转方式:   

 请求重定向:(客户端行为)response.sendRedirect()     本质上等同于两次请求,前一              次请求对象不会保存,地址栏的url会改变。(登录失败)(重拨)

 请求转发:(服务器行为)requese.getRequestDispatcher().forward(request,response)  试一次请求,转发后请求对象会保存,地址栏的url地址不变(登录成功,转发到另一个页面)

8.jsp七大动作


-------------------------------------------------------------------------------------------------------------------

附:

J2EE之JSP整理_第6张图片
login_success.jsp
J2EE之JSP整理_第7张图片
login_failure.jsp

你可能感兴趣的:(J2EE之JSP整理)