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指令:页面指令
这里的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; 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职责不明确 2.model2(MVC):jsp职责较明确,适合大型项目开发(model view controller) 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七大动作 ------------------------------------------------------------------------------------------------------------------- 附: