通过web访问的程序,用户有网、浏览器就行。
eg.京东、天猫
tomcat的bin
文件夹中存在一份.bat文件和相对应的.sh文件,一个是为了在window系统上执行的文件,另一个是linux下的批处理文件。例如:startup.bat和startup.sh
在lib
目录中,jar包就是别人已经写好的一些类,然后将这些类进行打包,你可以将这些jar包引入你的项目中,然后就可以直接使用这些jar包中的类和属性以及方法。
课上示范:创建项目、弄tomcat、改路径名字、改index名字、导包
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
text/html
:表明这是一个文本文件
utf-8
:字符集支持中文
当前 JSP 页面与静态引入的文件紧密结合为一个 Servlet。这些文件可以是 JSP 页面、HTML 页面、文本文件等。
<%@ include file="haha.jsp"%>
<%@ include file="haha.txt"%>
<%@ include file="haha.html"%>
使用标签库定义新的自定义标签,在 JSP 页面中启用定制行为。
<%@ taglib uri="uri" prefix="prefixOfTag" %>
课上示范
语法:
<% java代码 %>
例如:
<% out.println("大家好") %>
语法:
<%! java代码 %>
例如:
<%!
String s="小吴";
int add(int x,int y)
{
return x+y;
}
%>
课上示范:
out.print()
与out.println()
的区别???println()
虽然看似是换行,但转成网页之后,这种换行被认为是空格,所以输出的内容仍然在一行,用空格分隔,但右键点击页面查看源代码时,却能看出换行竟然对源代码起作用了。如果在页面上需要换行的话,可以使用
<%
out.println("haha"+"
");
out.println(s+"
");
out.println(add(1,2)+"
");
%>
语法:
<%=表达式 %>//表达式不以分号结束
例如:
你好<%=s%><br>
答案是<%=add(1,2)%>
(1)解析JSP文件。
(2)将JSP文件转为servlet。
(3)编译servlet。
jspInit()
方法,把servlet常驻留与内存,下面针对用户每一个请求,分别去创建一个线程,去调用jspService()
方法public void jspInit(){
// 初始化代码
}
//一般来讲程序只初始化一次
jspService()
方法。jspService()
方法需要一个 HttpServletRequest 对象和一个 HttpServletResponse 对象作为它的参数,就像下面这样:void jspService(HttpServletRequest request,
HttpServletResponse response)
{
// 服务端处理代码
}
// jspService() 方法在每个 request 中被调用一次并且负责产生与之相对应的 response
jspDestroy()
方法,比如释放数据库连接或者关闭文件夹等等。jspDestroy()
方法的格式如下:public void jspDestroy()
{
// 清理代码
}
内置对象简介
jsp内置对象是web容器创建的一组对象,不使用new关键字创建就可以使用
out对象是JspWriter类的实例,是向客户端输出内容常用的对象
常用方法:
void println() //向客户端打印字符串
void clear() //清除缓冲区的内容,在 flush 之后调用会抛出异常
void clearBuffer() //清除缓冲区的内容,在 flush 之后调用不会抛出异常
void flush() //将缓冲区内容输出到客户端
int getBufferSize() //返回缓冲区字节数的大小,如不设缓冲区则为 0
int getRemaining() //返回缓冲区还剩余多少可用
boolean isAutoFlush() //返回缓冲区满时,是自动清空还是抛出异常
void close() //关闭输出流
注意:
flush
方法把缓冲区内容给到客户端后,缓冲区被提交的部分会被清空,这样我们剩余缓冲区就会变大flush
后面使用clear
方法,会报异常,那么clear
之后的内容就不会被执行flush
,clear
,clearBuffer
的区别???表单提交方式(填在method里面)
方式 | 说明 |
---|---|
get | 以明文方式通过URL提交数据,数据在URL中可以看到。提交的数据最多不能超过2KB。安全性较低,但效率比post高。适合提交数据量不大,安全性不高的数据。比如:搜索,查询 |
post | 将用户提交的信息封装在HTML HEADER内。适合提交数据量大,安全性高的用户信息。比如:注册、修改、上传。 |
request对象:
客户端的请求信息被封装在 request
对象中,通过他才能了解到客户的需求,然后抛出响应。它是HttpServletRequest
类的实例,request
对象具有请求域:即完成客户端的请求之前,该对象一直有效。
常用方法:
String getParameter(String name)//返回此 request 中 name 指定的参数,若不存在则返回 null
String[] getParameterValues(String name)//返回指定名称的参数的所有值,若不存在则返回 null
void setAttribute(String name,Object o)//存储属性
Object getAttribute(String name)//返回名称为 name 的属性值,如果不存在则返回 null
void setCharacterEncoding()//设置 request 的字符编码集名称
String getContentType()//返回 request 主体的 MIME 类型,若未知则返回 null
String getProtocol()//返回此 request 所使用的协议名和版本
int getServerPort()//返回服务器端口号
int getContentLength()//返回 request 主体所包含的字节数,若未知的返回 -1
String getRemoteAddr()//返回客户端的 IP 地址
String getContextPath()//返回 request URI 中指明的上下文路径
response
对象包含了响应客户请求的有关对象,具有作用域:即访问一个页面时,该页面的response
对象只能对这次访问有效,其他页面的response
对象对该页面无效
常用方法:
PrintWriter getWriter()//返回客户端输出字符的一个对象
void setContentType(String type)//设置响应的内容的类型,如果响应还未被提交的话
void sendRedirect(String location)//使用指定的 URL 向客户端发送一个临时的间接响应
注意:
PrintWriter
的对象总是比内置out
对象先输出。除非用out.flush()
提前交上去response.sendRedirect(String location)
,请求重定向到一个页面。重定向之前不能out.flush()
,不然会报错,失效session
表示客户端与服务器的一次会话。eg.Web中的session
指的是用户从打开浏览器到关闭所经过的这段时间session
:为什么要保存?因为当一个客户访问一个服务器时,可能在这个服务器的几个页面切换跳转,需要让服务器知道这是一个用户常用方法:
long getCreationTime()//返回 session 创建时间
public String getId()// 返回 session 创建时 JSP 引擎为他设的唯一 ID 号
public Object setAttribute(String name,Object value)//使用指定名称将对象绑定到此会话
public Object getAttribute(String name)//返回与此会话中的指定名称绑定在一起的对象,如果没有对象绑定在该名称下,返回 null
String[] getValueNames()//返回一个包含此 session 中所有可用属性的数组
int getMaxInactiveInterval()//返回两次请求间隔多长时间此 session 被取消(单位秒)
application
对象实现用户间数据共享,可存放全局变量application
作用域:开始于服务器启动,终止于服务器关闭常用方法:
public void setAttribute(String name,Object value)//使用指定名称将对象绑定到此会话
public Object getAttribute(String name)//返回与此会话中的指定名称绑定在一起的对象,如果没有对象绑定在该名称下,返回 null
Enumeration getAttributeNames()//返回所有可用属性名的枚举
String getServerInfo()//返回 JSP(Servlet)引擎名及版本号
page
对象就是指向当前 JSP 页面本身,有点像类中的 this ,它是 java.lang.Object 类的实例。pageContext
对象提供了对 JSP 页面内所有对象及名字空间的访问,它可以访问到本页所在的 session ,也可以取本页所在的 application 的某一属性值。config
对象是在一个 Servlet 初始化时, JSP 引擎向它传递信息用的,此信息包括 Servlet 初始化时所要用到的参数(通过属性名和属性值构成)以及服务器的有关信息(通过传递一个 ServletContext 对象)。exception
对象是一个异常对象,到一个页面在运行过程中发生了异常,就产生这个对象。如果一个 JSP 页面要应用这个对象,就必须把page
指令中的 isErrorPage
设为 true ,否则无法通过编译。useBeans
,setProperty
,getProperty
动作)语法:
<jsp:useBean id="唯一标志" class="java类名" scope="作用范围" />
语法:
<jsp:setProperty name="JavaBean实例名" property="*" />//与表单有关
<jsp:setProperty name="JavaBean实例名" property="JavaBean属性名" /> //与表单有关
<jsp:setProperty name="JavaBean实例名" property="JavaBean属性名" value=" BeanValue"/>//手工设置
<jsp:setProperty name="JavaBean实例名" property="propertyName" param="request对象中参数名" />//与request参数有关
语法:
<jsp:getProperty name="JavaBean实例名" property="属性名" />
page
//当前页面有效request
//可通过HttpRequest.getAttribute()
方法获得JavaBean对象session
//可通过HttpSession.getAttribute()
方法获得JavaBean对象application
//可通过application.getAttribute()
方法获得JavaBean对象