jsp个人学习比较
page指令:
通常位于jsp的顶端,一个页面可以有多个page指令,相当于import<>
<%@page 属性="" 属性=""%>
language:jsp页面使用的脚本语言;默认值java
import:通过该属性来引用脚本语言中使用到的类文件。
contentType:用来指定jsp页面所采用的编码方式;默认值:text/html,ISO-8859-1(纯英文编码);
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
JSP注释:<%-- 注释--%>
html注释<!-- 注释-->
JSP脚本语法格式:<%java代码%>
JSP声明:<%!java代码%>
JSP获取:<%= 变量/方法%>(不用;结束)
JSP生命周期:jspService()方法被调用来处理客户端的请求,jsp引擎会创建多个线程;
--------------------------------------------------------------------------------------------
JSP内置对象:
request请求对象 (作用域Request)--------》服务器跳转有效,客户端刷新跳转无效,
String str = request.getHeader(String name):获得名字为name的头信息内容
String str = request.getMethod();获得post或者get。
类型:javax.servlet.ServletRequest;
可以跨越forward前后两个页面,只要刷新页面,存储的值会重新计算,对于重定向,里面的值不能跨越两个页面
如果变量存储到pageContext开始,到jsp页面结束,都可以使用此变量;
若吧变量存储到request里,作用域是Request,此变量的范围是当前的请求周期;
请求周期:从http发出请求,到服务器处理结束,返回响应的整个过程,forward跳转多个jsp页面,在这个页面里都可以使用此变量;
response相应对象 (作用域Page)类型:javax.servlet.ServletRspanose;
reponse.setHeader("refresh","2")2秒刷新一次
reponse.setHeader("refresh","2;URL=page3.jsp");2秒后跳转
pageContext页面上下文对象 (作用域Page):类型:javax.servlet.PageContext;
pageContext.forward(String);
session会话对象 (作用域Session)---------》跳转有效,新开浏览器无效
如果把变量存到session里,范围是当前会话:从打开浏览器到关闭浏览器叫一个会话过程,
这个过程包含多个请求,多个响应;只要浏览器不关闭,就可以拿到存储在session里的变量
session id = session.getId();获取id
session.getLasetAccessedTime();获得最后访问时间
session.isNew():这个session是否是新的
session.invalidate();把session的属性设置全部清空
类型:javax.servlet.HttpSession
application应用程序对象 (作用域Application)--------》所有用户有效,重启服务器无效
如果把变量存储到application里,作用域是Applicaion,她的有效范围是这个应用,除非关闭服务器;
getRealPath(path)获得真实路径
getContextPath();获得虚拟路径
getIntiParameter(String);在web.xml中添加初始化参数
<context-param>
<param-name> </param-name>
<param-value> </param-value>
<context-param>
类型:javax.servlet.ServletContext;
out输出对象 (作用域Page)
out.println();打印所有,将所打印的内容转化为字符串打印到页面
out.write();打印字符串/Object,如果是整数,打印整数的asc码
后台打印:System.out.print();
类型:javax.servlet.jsp.JspWrite;
config配置对象 (作用域Page)
getInitParameterNames()获取初始化参数名字
getInitParameter(String name);获取初始化参数的值
类型:javax.servlet.ServletConfig;
page页面对象 (作用域Page) --------->pageContext:一个页面有效,跳转无效
类型:javax.lang.Object;
exception例外对象 (作用域Page)
类型:javax.lang.Throwable;
都可以(设置、获取、删除属性)
JSP指令:
path:包名
basePath:网络路径
<jsp:forward page="Test2.jsp"></jsp:forward>转向跳转
---------------------------------------------------------------------------------------------
MVC:
jsp显示:V:视图层,view,展示给用户看
servlet:C:controller:控制层,调用dao的方法:request,response,session,application;
dao:方法:M:model,模型层,sqlServlerce,add(),delele(),query(),update();
-----------------------------------------------------------------------------------------------
include:将一个外部文件嵌入当前jsp文件中,同事解析这个页面的jsp语句
include:动态和include:静态的,
<%@include file="Test6.jsp"%>静态的,两个页面合成一个页面,共享变量,在底层生成一个。java文件,一个。class文件
<jsp:include page="Test6.jsp"></jsp:include>动态的,不能共享变量,但可以通过传参方式获取值;生成两个.java文件,两个.class文件
JSP的底层是servlet,遇到html代码,用out.write()打印,遇到java代码原样输出,方法原样输出;
<a href ="myservlet.do?method=login">登录</a>问号传方法
servlet自启动:启动的标志:执行init();启动服务时启动servlet;
<servlet>
<servlet-name>UserServlet</servlet-name>
<display-name>This is the display name of my J2EE component</display-name>
<description>This is the description of my J2EE component</description>
<servlet-class>com.james.controller.UserServlet</servlet-class>
<init-param>
<param-name>username</param-name>
<param-value>liulun</param-value>
</init-param>
<init-param>
<param-name>url</param-name>
<param-value>jdbc:mysql://localhost:3306/databasename</param-value>
</init-param>
<init-param>
<param-name>driver</param-name>
<param-value>com.mysql.jdbc.Driver</param-value>
</init-param>
<init-param>
<param-name>pw</param-name>
<param-value>123</param-value>
</init-param>
<load-on-startup>1</load-on-startup>//1自启动拿到密码
</servlet>
taglib指令: