1.动态网页开发基础
1.1动态网页和静态网页的区别
1.2B/S架构和C/S架构的区别
B/S架构 | C/S架构 | |
软件安装 | 浏览器 | 需要专门的客户端应用 |
升级维护 | 客户端需维护 | 客户端需要单独维护和升级 |
平台相关 | 与操作系统平台的关系最小化 | 对客户端操作系统一般有限制 |
性能安全 | 在响应速度和安全性上需要花费更多设计成果 | 能充分发挥客户端处理能力,客户端响应更快 |
1.3Tomcat的安装配置
1.31Tomcat的下载教程:
https://blog.youkuaiyun.com/weixin_56236018/article/details/120067893?spm=1001.2014.3001.5501
1.4Maven的安装配置
1.41Maven的下载教程:
https://blog.youkuaiyun.com/weixin_56236018/article/details/120081776?spm=1001.2014.3001.5501
1.5 Idea集成Tomcat和maven搭建
1.51TomCat的搭建:
https://blog.youkuaiyun.com/weixin_56236018/article/details/120086227?spm=1001.2014.3001.5501
1.52Maven的搭建:
https://blog.youkuaiyun.com/weixin_56236018/article/details/120081776?spm=1001.2014.3001.5501
1.53Maven 4.0的搭建:(建议)
https://blog.youkuaiyun.com/weixin_56236018/article/details/120095786?spm=1001.2014.3001.5501
1.6JSP
1.61JSP页面组成
静态内容:
page指令
属性 | 描述 |
lauguage | 指定JSP页面使用的脚本语言,默认为:“Java” |
import | 通过该属性引用脚本语言中使用到的类文件 |
contentType | 用于指定MIME类型和JSP页面回应时所采用的字符编码格式,默认为“text/html;charset=UTF-8” |
JSP脚本元素
在JSP页面中,将脚本(scriplet),表达式(expression),声明(declaration)统称为JSP脚本元素,用于在JSP页面种嵌入JAVA代码,实现页面的动态处理
脚本
语法:<% java代码%>
表达式
语法:<%= 变量名或表达式%>
展示:
声明:
在编写JSP页面时,需要注释Java的变量或方法,需要声明来实现
语法:<%! 声明代码%>
JSP的注释:
1.HTML注释方法:在客户端浏览器查看源码中可见
2.JSP注释标记:<%-- 注释内容--%>,在客户端浏览器中查看源代码不可见
3.在JSP脚本中使用注释:同Java,分为单行注释和多行注释
1.7常见错误排查
1.7.1 404错误:路径错误
1.7.2 500错误
代码错误
2.JSP数据交互(一)
2.1JSP 9大内置对象
2.1.1 JSP依赖导入

2.2 内置对象之out
out对象用于向浏览器输出数据。eg:
2.3 内置对象之request
2.3.1:从tomcat引入jar包
request 对象是 javax.servlet.httpServletRequest类型的对象,是最常用的JSP内置对象之一。 该对 象代表了客户端的请求信息,主要用于接受通过HTTP协议传送到服务器的数据。(包括头信息、 系统信息、请求方式以及请求参数等)。request对象的作用域为一次请求。
常用方法:
方法名称
|
说明
|
String getParameter(String
name)
|
根据页面变淡组件名称获取页面提交数据
|
String[]
getParameterValues(String
name)
|
获取一组以相同名称命名的表单组件提交的数据
|
void
setCharacterEncoding(Strin
charset)
|
指定每个请求的编码,在调用
request.getParameter()
方法
之前进行设定,可以解决中文乱码问题
|
RequestDispatcher
getRequestDispatcher(String
path)
|
返回一个
javax.servlet.RequestDispatcher
对象,该对象的
forword()
方法用于转发请求
|



中文乱码问题解决:
post请求:
Tomcat对请求数据
默认采用ISO-8859-1字符集进行解码。
治本:修改tomcat配置文件server.xml,添加URIEncoding="utf-8
2.4 内置对象之response
2.4.1 response对象
response内置对象工作原理
response常用方法
方法名称 | 说明 |
void addCookie(Cookie cookie) | 向客户端添加Cookie |
void setContentType(String type) | 设置HTTP相应的cententType类型 |
void setCharacterEncoding(String charset) | 设置响应所采取的字符编码类型 |
void sendRedirect(String location) | 将请求重新定位到一个新的URL上(重定向) |
2.4.2 转发和重定向
相同点:都可以进行页面跳转
不同点:
转发request.getRequestDispatch("路径").foward(request.response):可以携带请求参数,是一次性请求,转发的动作是服务器行为,地址栏是不会发生变化。
重定向response.sendRedirect("路径") 可以理解为可以理解为客户端发送了两次请求,第一次请求携带的数据丢失,地址栏会发生变化,是客户端行为。若需要传递参数,需要显示在路径后拼接参数
转发和重定向登录课堂演示:登陆成功转发成功页面,失败重定向到登录页面。
2.5 JSP内置对象session
2.5.1 session对象
浏览器和Web服务器之间是使用HTTP协议进行通信的,HTTP协议是一种基于请求/响应模式的无状态的访问协议。“无状态”就是指每一个HTTP请求都是独立的。服务器不会保存以往的请求和会话记录。因此当一个客户端发送请求到Web服务器时,无论其是否是第一次来访,服务器都会把它当做第一次来对待。
session:会话,指在一段时间内,一个用户与Web服务器的一串相关的交互过程,他可以包含浏览器与服务器之间的多次请求、响应过程。使用session可以保存当前每个用户的会话状态信息,一个用户对应一个信息。
每个session对象都与一个浏览器窗口对应 ,重新开启一个浏览器窗口,可以重新创建一个session对象(不同版本浏览器可能有所差别)。
通过超链接打开的新窗口,新窗口的session与其父窗口的session相同。
浏览器关闭时,会话失效
方法名称 | 说明 |
---|---|
String getId() | 获取sessionid |
void setMaxInactiveInterval(int interval) | 设置session过期时间,单位为秒 |
int getMaxInactiveInterval() | 获取session过期时间,单位为秒 |
void invalidate() | 设置session对象失效 |
void setAttribute(String key,Object value) | 以key/value的形式将对象保存到session中 |
Object getAttribute(String key) | 通过key获取session中保存的对象 |
void removeAttribute(String key) | 从session中删除指定key对应的对象 |
2.5.2 使用session对象实现权限控制
访问控制流程
2.5.3会话的失效
会话超市
三种方法:
1.通过session.setMaxInactiveInterval()方法设值,单位为秒
2.在项目的web.xml中设置,单位为分钟
<session-config>
<session-timeout>10</session-timeout>
</session-config>
3.在Tomcat服务器设置,/conf/web.xml中找到<session-config>元素,其中<session-timeout>元素中的30就是默认时间,单位是分钟,可以修改其值
手动设置会话失效
调用session.invalidate()方法,主要应用于用户注销的场合,该会话失效
若只想清空会话中绑定的某个数据对象,可以调用session.removeAttribute(String key)方法,将指定的对象从会话中清除,会话依然有效。
2.5.4 关于session的一点理解
session内置对象:作用域:一次会话,也就是说从浏览器打开到关闭。
session作用:存数据
为什么不用request存放数据,而用session呢?
答:request的作用域是一次请求。例如,先访问a.jsp,再访问b.jsp,这是两次请求,request里的数据不能共享,此时用session
能解决数据不能共享的问题。只要在某个页面存放了session数据,a.jsp和b.jsp都可以拿到.
不同的浏览器之间session不能共享
2.6 include指令
JSP提供了文件引用指令include。我们可以将一些可以重用的内容写入一个单独的文件中,然后通过include指令引用改文件,缓解代码冗余的问题,并方便代码的修改。
3. JSP数据交互(二)
3.1 JSP内置对象application
3.1.1 application对象
application对象类似于系统的“全局变量”,用于同一个应用内的所有用户之间的数据共享。
常用方法:
方法名称 | 说明 |
---|---|
void setAttribute(String key,Object value) | 以key/value的形式将对象存储到application中 |
Object getAttribute(String key) | 通过key获取application中存储的对象 |
String getRealPath(String path) | 返回相对路径的真实路径 |
JSP常用内置对象
内置对象名称 | 说明 |
---|---|
out对象 | 用于向客户端输出数据 |
request对象 | 主要用于处理客户端请求的数据信息 |
response对象 | 用于响应客户端请求并向客户端输出信息 |
session对象 | 用于记录会话状态的相关信息 |
application对象 | 类似于全局变量,用于实现web应用中的资源共享 |
3.1.2 JSP的其他内置对象(了解):
pageContext:提供了在JSP运行时访问和其相关的环境信息的能力。通过pageContext对象可以访问和当前JSP页面相关联的所有作用域(当前页作用域),以及一些页面属性
- 常用方法:
- ServletRequest getRequest():获得request对象
- ServletResponse getResponse():获得response对象
- HttpSession getSession:获得session对象
- JspWriter getOut():获得out对象
- void setAttribute():保存属性
- Object getAttribute():获得属性
- void include():请求指定的资源,并将目标资源的响应结果包含在调用页面的响应中
page:表示当前页面,类似于Java中的this。在JSP页面中,很少使用page对象
config:用于存放JSP编译后的初始数据。与page对象一样,在JSP页面中很少使用
exception:表示JSP页面运行时产生的异常和错误信息,该对象只有在错误页面(page指令中设定isErrorPage为true的页面)中才能够使用
3.2对象的作用域
在JSP中,提供了四种作用域,分别是page作用域、request作用域、session作用域和application作用域
3.2.1 page作用域
page作用域指单一JSP页面的范围,page作用域内的对象只能在创建该对象的页面中访问。page作用域可以使用pageContext对象的setAttribute()和getAttribute()方法进行访问。page作用域在客户端每次请求jsp页面时创建,在服务器发送响应或请求转发到其他页面或资源后失效。
3.2.2 request作用域
request作用域:一次请求,与客户端的请求绑定在一起。其作用域范围比page大,可以通过调用request对象的setAttribute()和getAttribute()方法进行访问。request作用域在页面转发中同样有效,通过调用RequestDispatcher的forward()方法进行转发,或调用其include()方法将页面包含,都可以共享request作用域。
每次新请求都会创建一个新的request作用域,请求结束时该作用域失效。
3.2.3 session作用域
session作用域:一次会话,即浏览器打开到关闭。在会话有效期内,只要将数据绑定到session作用域中,则该数据可以被本次会话中的其他页面所访问。可以通过session.setAttribute() 和session.getAttribute()方法进行访问其作用域。
3.2.4 application作用域
application作用域:整个web应用,即从tomcat启动到停止,被该应用下的所有用户共享。通过application.setAttribute() 和application.getAttribute()方法进行访问