指令 page 是对jsp页面的全局属性的设置
include file
把其中某一个页面 path bashPath 注释起来
动作 jsp:include page 把指定页面内容加载到本页面
jsp:forward 转发 用作跳转页面
jsp中标签 可以书写java代码
<% %> 用来声明变量 局部变量 为什么不变? 每刷新一次页面 service 方法
总会调用一次 相当变量重复的声明赋值
<%! %> 声明变量 全局变量 刷新页面 变量自增会发生改变
<%= %> 把代码中的内容 书写的jsp页面中 后面的java代码不需要分号结束
jsp内置对象 ? jsp再去加载服务器自动创建的对象 不需要人为的创建
9 个内置对象
request response application session pageContext page exception out config
application session request page 内置对象的作用域
全局 会话 一次请求 当前页面
application session request pageContext 域对象 setAttribute getAttribute
当request发生改变 比如又创建新的request对象 原来request中的内容找不到了
页面跳转
转发
特点 地址栏不改变 一个request对象 原来request中的内容一样可以拿到
方式<jsp:forward> request.getResquestDispatcher("url").forward(request,response);
重定向
特点 地址栏发生改变 创新新的request对象 原来request中的内容找不到
方式 <a></a> 超链接 html页面的标签
response.sendRedirect("url"); java代码
js location.href
location.replace
转发和重定向在实现页面跳转过程中 页面传值的问题
两个页面之间的传值 多个页面考虑使用session
转发 因为没有产生新的request对象 可以把传值的内容放到request中
可以利用request.setAttribute()
跳转后的页面可以利用request.getAttribute() 查看传递的值
重定向 因为地址栏是改变的 可以使用拼接地址栏的方式传值
问号后面拼接key值和对应的value值 多个key值之间使用“&” 连接
url?key=value&key1=value1.....
由于request对象会发生改变 放在request对象中的内容在跳转后的页面中拿不到
---------------------------------------------------------------------------------------
servlet 什么是servlet java文件 运行在服务器端
实际上指的是按照servlet标准去编写的java类
它可以处理web应用中的请求 由服务器调用执行
具体的执行细节 (执行过程由servlet容器去执行)
servlet容器 servlet它所在的运行环境
tomcat 类似的看做servlet 容器
可以完成事情 处理浏览器客户端请求
实现流程 客户端发出请求--》服务器端接受请求 ---》请求是一个jsp页面 服务器找到页面响应给客户端 找不到页面 404
如果请求是访问servlet servlet容器先去找对应的servlet 找到后执行这个servlet,把执行后的结果 返回给浏览器 找不到 404
请求响应过程 主要的控制器就是servlet容器
servlet 特点
标准的Java类 符合java的语法规范
可以处理web请求 处理http请求
servlet是持久的 servlet由servlet容器加载之后 就会保留在服务器 下次执行不需要加载
加载 指的是servlet被加载到JVM里面
servlet是平台无关的 是可扩展的
javax.servlet.Servlet
Servlet接口 这是servlet结构的核心
定义的所有的servlet都必须直接或间接的实现这一个接口
servlet/JSP Name 相当于servlet起别名 任意取名
servlet/JSP Mapping URL 浏览器访问该servlet的url地址 任意取名字
这个名字必须以“/”开头 / 指的就是服务器项目路径
web.xml
每创建一个servlet,都会想web.xml配置文件中去加入一下内容
<servlet></servlet> 代表一个servlet文件
<servlet-name> servlet别名 任意取
<servlt-class> servlet类名 创建时命名的
<servlet-mapping> 对应于<servlet> 一一对应
<servlet-name> servlet别名 任意取
这两处出现的这个别名必须一致
<url-pattern> 浏览器访问url地址
浏览器输入url地址 服务器接收后
先访问web.xml<url-pattern>
获取到别名<servlet-name>
会去<servlet> 找到对应的别名
进而找到要访问的servlet类文件
jsp servlet 两者联系和区别
jsp--->servlet--->java类文件
servlet能完成jsp同样可以实现
jsp 实现的servlet也可以实现
jsp很好的去实现页面的开发与设计
servlet 主要是处理业务逻辑 由服务器直接调用
创建servlet 在地址栏 当前工程下/servlet/loginServlet
doget dopost
把当前系统时间写入到页面中
所有servlet都要直接或间接的实现Servlet接口
自定义Servlet 继承HttpServlet 即可
创建servlet方式一
手动 去创建一个Servlet
创建一个JAVA 类 继承HttpServlet
重写doget dopost方法
手动配置web.xml配置文件
创建servlet方式二
Myeclipse新建servlet
如何用servlet获取表单提交的数据?
request getParameter()
-----------------------------------------------------
Servlet API 方法
Servlet接口
五个方法
servlet生命周期相关 init() service() destory()
getServletInfo() 获取跟Servlet相关的信息
Servlet生命周期 创建-销毁
初始化阶段 init() 服务器启动只会执行一次 要么被自动装载 要么就是第一次访问
1、servlet容器启动后会自动装载某些Servlet init()
创建servlet <load-on-startup> 总是小的值要先被装载 代表优先级高 (这两个值都要为正数)
: load-on-startup
The load-on-startup element indicates that this servlet should be loaded (instantiated and have its
init() called) on the startup of the web application. The optional contents of these element must be
an integer indicating the order in which the servlet should be loaded. If the value is a negative
integer, or the element is not present, the container is free to load the servlet whenever it chooses.
If the value is a positive integer or 0, the container must load and initialize the servlet as the
application is deployed. The container must guarantee that servlets marked with lower integers are
loaded before servlets marked with higher integers. The container may choose the order of
loading of servlets with the same load-on-start-up value.
-----------------------------------------------
请求响应的阶段 service()
处理用户请求 先调用service() 调用doget dopost
销毁 destory()
---------------------------
servlet 生命周期
init() 初始化阶段
service() 请求响应阶段 去调用doget dopost
destory() 终止阶段 销毁
getServletConfig() 获取config 对象
获取servlet参数相关
getInitParameter()
getInitParameterNames()
getServletContext() 获取application对象
servlet创建时传入参数
需要使用、 <init-param>
设置参数名 <param-name>
设置参数的值 <param-value>
servlet 加载
服务器启动 自动加载某些servlet
<load-on-startup> 对应的值 代表优先级
当请求访问对应的servlet ,服务器会加载
当servlet文件更新的时候,也会重新加载
先调用销毁的方法 在加载
servlet生命周期中 init()只会去执行一次
写一个servlet 记录这个servlet访问次数 每次执行时访问指定的servlet即可
application 怎么获取这个对象?
init() 自动加载
servlet数据库的连接操作
DriveName 驱动名 Class.forname();
url 数据库地址
登录数据库 用户名 username
密码 password
放入配置文件中
init() 读取响应的配置文件(i/o) 获取到与数据库连接有关的数据