参考
连接数据库:需要在lib中添加依赖
搭建java web的开发环境
- jdk环境
- tomcat服务器
- Eclipes
tomcat简介
tomcat是apache的一个开源项目,是一种常见的web服务器,jsp/servelet的容器。
安装成功之后,运行omcat/bin/startup.sh, windows下是运行startup.bat。访问localhost:8080。是一个带有猫的页面,证明成功。
tomcat服务器目录结构
/bin :binary(二进制的缩写),存放各种平台下启动和停止tomcat的命令文件,如startup.bat,shutdown.bat
/conf:存放tomcat的各种配置文件
/lib:存放tomcat服务器所需的第三方驱动各种jar文件
/log:存放在tomcat的日志文件
/temp:tomcat运行时用于存放临时文件
/webapps:当发布web应用时,默认会将web应用的文件发布到此目录中
/work:tomcat把由jsp生成的servlet放在此目录下
第一个java web项目(手动)
初始化
- 在webapps中创建项目目录,比如webapps/myhome
- 编写index.jsp
- 创建WEB-INF目录
- 运行
- 能够访问localhost:8080/myhome/index.jsp
WEB-INF目录结构
- WEB-INF是java的web应用的安全目录。—也就是客户端无法访问,只有服务端可以访问的目录。
- web.xml:项目部署文件。
- classes文件夹,用来放置*.class文件。
- lib文件夹,用来存放需要的jar包。
eclipes集成tomcat
环境配置:
配jre
进入preference => java => install jres配置(推荐你自己安装的jre)集成tomcat
进入preference => server => runtime enviroment
使用eclipes编写第一个web程序
new => project => web => dynamic web project 创建一个名叫mytest的项目
默认会产生一些项目结构。
在其中的WebRoot(或者WebContent)根目录内创建index.jsp, 在里面可以写一个hello world测试一下。
保存之后点击tab栏中的运行tomcat,(第一次运行需要选择你对应的tomcat版本),运行之后下面的控制台会给出一系列的提示信息,若没有报错,则可以在浏览器中访问localhost:8080/mytest/index.jsp,就可以看到你写的hello world啦。
修改tomcat服务器默认端口
修改conf/server.xml
|
|
修改完后重启tomcat就OK惹。
jsp
jsp简介
jsp全名为java server pages,其根本是一个简化的servelet设计,他实现了在Java中使用html标签。jsp动态网页技术标准也是javaee的标准。jsp和serbelet一样,是在服务器端执行的。
特点
- java平台
- 安全性高
- 适合开发大型的,企业级的web应用程序
基础语法
指令
- page: 通常用于页面的顶端,同一个页面有多个page指令
|
|
- include:讲一个外部文件嵌入到当前jsp文件中,同时解析这个页面中的jsp语句
- taglib:使用标签库定义新的自定义标签,在jsp页面中启用定制行为
注释
- html注释:
|
|
- jsp注释
|
|
- jsp脚本注释
|
|
jsp脚本
- 在html中插入jsp脚本
|
|
- jsp声明
在jsp页面中定义变量或方法:
|
|
- 表达式
语法:
|
|
- jsp页面的生命周期
用户发出请求index.jsp=>判断用户是否是第一次请求=>若是,jsp引擎把该文件转化为一个servelet,生成字节码文件并执行jspInit(),若不是,则直接访问字节码文件=>解析执行,jspService()
jspService()方法被调用来处理客户端的请求。对每一个请求,jsp引擎创建一个新的线程来处理该请求。如果有多个客户端同时请求改jsp文件,则jsp引擎会创建多个线程。每个客户端请求对应一个线程。以多线程方式执行可以大大降低系统的资源需求,提高系统的并发量及相应时间。但也要注意多线程带来的同步问题,由于Servelet始终驻于内存,所以相应是非常快的。
- 阶段项目
分别使用脚本和html打印99乘法表:
|
|
jsp内置对象
内置对象简介
jsp内置对象是web容器创建的一组对象,不使用new关键字就可以使用的内置对象。
例如:
常见的jsp内置对象:
- out
- request
- response
- session
- application
- page/pageContext/exception/config
web程序的请求与相应模式
用户发送请求(request)
服务器给用户相应(response)
out
out对象是JspWriter类的实例,是向客户端输出内容常量的对象。
常用方法:
void println()
向客户端打印字符串void clear()
清除缓冲区的内容,如果在flush之后调用会跑出异常void clearBuffer()
清楚缓冲区内容,在flush之后不会抛出异常void flush()
将缓冲区内容输出到客户端int getBufferSize()
返回缓冲区的字节数大小,如果不设缓冲区则为0int getRemaining()
返回缓冲区还有多少可用boolean isAutoFlush()
返回缓冲区满时,是自动清空还是抛出异常void close()
关闭输出流
request/response
get和post区别
- get:以明文的方式通过URL提交数据,数据在URL中可以看到。提交的数据最多不超过2kb。安全性较低但是效率比post方式高。适合提交数据量不大、安全性不高的数据,比如搜索、查询。
- post:将用户提交的信息封装在HTML HEADER内。适合提交数据量大,安全性高大用户信息,比如注册、修改、上传等。
request对象
客户端的请求信息被封装在request对象中,通过它才能了解到客户的需求,然后做出相应。它是HttpServletRequest类等实例。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()
返回接受请求都服务器主机名
|
|
|
|
|
|
response对象
response对象包含了相应客户请求的有关信息,但在jsp中很少直接用它。它是HttpServletResponse类的实力。response对象具有页面作用域,即访问一个页面时,该页面内的response对象只能对这次访问有效,其他页面的response对象对当前页面无效。常用方法:
String getCharacterEncoding()
返回相应用的是何种字符编码void setContentType(String type)
设置相应的mime类型PrintWriter getWriter()
返回可以想客户端输出字符的一个对象sendRedirect(java.lang.String location)
重新定向客户端的请求
|
|
请求转发与请求重定向
请求重定向:客户端行为,
response.sendRedirect()
,从本质上讲等同于两次请求,前一次的请求对象不会保存,地址栏的URL会改变。请求转发:服务器行为,
request.getRequestDispatcher().forward(req,resp);
是一次请求,转发后请求对象会保存,地址栏URL不会改变。
session
什么是session
- session表示客户端与服务器的一次会话。
- web中的session指的是用户在浏览某个网站时,从进入网站到浏览器关闭所经过的这段时间,也就是用户浏览这个网站所花费的时间。
- 从上述定义来看,session实际上时一个特定的时间概念。
- 在服务器的内存中保存着不同用户的session。
session对象
- 是一个jsp内置对象
- session对象在第一个jsp页面被装载时自动创建,完成会话期管理。
- 从一个客户打开浏览器并连接到服务器开始,到关闭浏览器离开这个服务器结束,被称为一个会话。
- 当一个客户访问一个服务器时,可能会在服务器的几个页面之间切换,服务器应当通过某种方法知道这是一个客户,就需要session对象。
- session对象时HttpSession类的实例。
session对象常用方法:
long getCreationTime()
:返回session创建时间(ms)public String getId()
:返回session创建时jsp引擎为它设的唯一id号public Object setAttribute(String name, Object value)
:使用指定名称将对象绑定到此对话public Object getAttribute(String name)
:返回与此对话中的指定名称绑定在一起的对象,如果没有对象绑定在该名称下,则返回nullString[] getValueNames()
:返回一个包含此session中所有可用属性的数组int getMaxInactiveInterval()
:返回两次请求间隔多长时间此session被取消
session的生命周期
- 创建:当客户端第一次访问某个jsp或者servlet时候,服务器会为当前会话创建一个SessionId,每次客户端向服务端发送请求时,都会将此SessionId携带过去,服务端会对此SessionId进行校验。
- 活动:除非本次会话的所有页面都关闭后再重新访问某个jsp或者servlet将会创建新的会话。
- 销毁:1、session.invalidate() 2、Session过期 3、服务器重启