JavaWeb阶段总结
JavaWeb的学习意味着我们对于JavaEE的学习进入了一个新的阶段,从单独的java基础学习和前端学习等内容进入了前后端结合的小项目实现。这一部分是比较复杂且繁琐的,知识内容大多已经在前面的内容中学习过了,更多的是学习如何去创建与实现一个项目,并掌握项目开发的思维和方法,细细体会和感受过程。
Servlet
servlet是我们在JavaWeb的学习中必不可少的一个内容。
其是sun公司制定的一种用于扩展web服务器的功能的组件规范。
开发步骤
-
新建符合java web项目的工程
-
servlet 类 继承 HttpServlet
-
重写service方法
-
service(HttpServletRequest request , HttpServletResponse)
-
request : 请求
-
response :响应
-
-
java web工程中的web.xml文件
-
web.xml 的文件名不能修改(tomcat找web.xml)
-
将java的类 和 浏览器访问的地址做一个映射
-
浏览器没法办法直接访问java类中的方法 , 所以需要java类映射到一个浏览器能访问的url地址。
-
-
打包(idea帮助完成) ;把web项目运行需要的文件内容按指定文件结构保存。
-
部署(在idea中可以完成);把打包好的web程序放到tomcat容器中,然后运行tomcat容器的时候,才能访问我们的web程序。
-
启动容器, 然后可以通过浏览器访问访问web程序。
servlet类的创建
servlet类的创建主要是继承HttpServlet类,对其进行重写。
如下代码
public class 类名 extends HttpServlet { @Override //重写 protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { //设置中文编码 resp.setContentType("text/html;Charset=UTF-8"); req.setCharacterEncoding("utf-8") } }
一些servlet类中的方法
-
getParameter():request对象的方法,获取请求参数,返回值为String类型
-
getWriter():response对象的方法,得到输出流,将其作为相应结果输出。
-
getContextPath():request对象的方法,得到项目名
-
getRequestURL():request对象的方法,得到响应地址
-
getServletPath():request对象的方法,得到servlet的访问地址
servlet的配置
创建好servlet类的文件之后,在web.xml中对servlet进行配置,保证其能够在浏览器中使用,主要方法如下:
<servlet> <servlet-name>servlet名</servlet-name> <servlet-class>包名.类名</servlet-class> </servlet> <servlet-mapping> <servlet-name>servlet名</servlet-name> <url-pattern>浏览器中要输入的地址</url-pattern> </servlet-mapping>
服务器优先找web.xml中的servlet的路径,如果找不到就找静态资源,如果还找不到,就404
服务器优先精确匹配,如果没有符合要求的,就模糊匹配
地址命名要尽量避免特殊的后缀名,如.jsp、.css、.js等
下面是servlet的url映射方式:
-
/:模糊匹配,除了jsp之外,都会被匹配到
-
/*:模糊匹配,所有地址都会被匹配到
-
*.xx:按后缀名进行匹配
-
/url:精确地址
-
/url.do:精确地址
servlet的生命周期
-
容器启动或者第一次访问servlet的时候,会执行init方法,一个生命周期内只执行一次
-
容器结束运行的时候,执行destroy方法, 一个生命周期内容只执行一次
-
servlet被访问的时候, 反复执行service(doXXX)
Maven
Maven是一款服务于Java平台的自动化构建工具,其作为Java项目管理的工具不仅可以用作包的管理,还有许多的插件,支持了整个项目的开发、打包、测试及部署等一系列的行为,简化了项目开发复杂的过程与时间成本。
JSP
jsp是一种运行在服务器端的页面, 它里面包含html,嵌入一些java语言,在服务器(tomcat)上经过解析转换,输出为html页面。jsp不需要配置,直接用它的路径和文件名进行访问。jsp是sun公司制定的一种用于服务器动态页面的技术规范,也是一种组件,依赖于tomcat进行运行。
jsp页面写java相关内容
添加需要包,避免jsp内置对象使用的时候,不提示对应函数
java内容的语法规则为“ <%java内容%> ”
jsp运行
jsp的本质是servlet
-
当第一个访问一个jsp页面的时候,会将jsp文件,对应生成一个servlet类
-
html,js ,css这种内容就用输出语句拼接
-
其他和java相关的内容,就按java的方式转换
jsp中的内置对象
-
request : 请求
-
session : 会话
-
out : 输出语句
-
response : 响应结果
-
page : 类似于this
-
pageContext : 有效范围只在当前的jsp页面上
-
config : servlet的数据
-
exception: 异常
转发 & 重定向
转发
转发的就是一个请求处理了一部分功能,然后开始另一个请求处理剩下的功能,其本质就是一个请求。
转发是共享request,response对象 ,因此可以把需要转发的数据保存在request对象中。
浏览器的地址栏地址保存不变。(显示第一个请求的地址)
方法为
requestDispatcher.forward(req,resp);
重定向
重定向是一个请求的功能完成了,然后开启另一个请求,做另一个功能。 本质是两个请求。(第一个请求是我们主动发的, 第二个请求是浏览器收到302代码和重定向的url地址, 然后浏览器主动发送的请求)
重定向因为是两个不同的请求,所以是两个不同的request对象,因此不能共享数据。
浏览器地址栏的地址是显示重定向的地址。(显示第二个请求的地址)
方法为
resp.sendRedirect("第二个请求的地址.jsp");
el表达式
jsp页面上,用于方便的获取到转发到jsp页面上的数据的一种表达式语言
语法规则为:${变量}、${对象,属性}
标签库
即jstl标签,使用之前需要导入jstl的包
在需要的jsp中引入标签库,方法为
<%@ taglib prefix="标签名" uri="标签库位置" %>
用于解决命名冲突的问题
cookie
客户端状态管理技术
用于保存客户端的状态的计数。当我们有多次请求的时候,这个多次请求被看做一个整体,这个整体中有些数据需要保存的时候,可以使用cookie,把数据保存在浏览器中
cookie的使用
-
服务器端代码中,创建cookie对象,在response中添加cookie
-
客户端访问服务器的时候,会将把当前访问路径有关的cookie发送到服务器端
-
服务器端可以在request中获取到cookie数据,然后对这些数据进行使用
-
浏览器可以设置禁用cookie,或者用户可以删除cookie数据,用户可以查看到cookie数据,所以重要数据不能直接保存在cookie中
-
cookie中存储的是string , 并且存储的数据大小也有限
-
cookie 可以设置有效期,过期之后,cookie会被浏览器清除掉
session
服务器端状态管理技术
在一次会话的多次请求间共享数据,将数据保存在服务器端的对象中
session的使用
-
保存数据
getSession(): 规则就是如果有就根据session-id获取session对象,如果没有就直接创建一个session对象
-
获取数据
getAttribute():session对象的方法,用于获取session中的数据,返回值是object
-
删除数据
removeAttribute():session对象的方法,用于删除session中的数据
-
session默认在会话期间有效
-
session会话超时
-
如果没有设置session的有效期, 默认的有效期是30分钟
-
可以设置session的有效期,方法为:
setMaxInactiveInterval(秒):session对象的方法
-
-
设置session无效
一般在退出系统的时候,需要清空session中保存的数据,使用方法让session失效,方法为:
invalidate():session对象的方法
过滤器
过滤器类型: 过滤器是sun提供一个组件, 需要依赖于服务器(tomcat)容器运行
过滤器的执行过程:访问请求的时候,先根据过滤器的配置,符号过滤器路径的请求,则先进入到过滤器中执行,执行结束之后,再根据情况,看是否需要进入到servlet中
过滤器的使用
通过继承HttpFileter类,对其进行重写
过滤器的配置
配置情况如下
<filter> <filter-name>命名</filter-name> <filter-class>对应包.对应类</filter-class> </filter> <filter-mapping> <filter-name>命名</filter-name> <url-pattern>地址</url-pattern> </filter-mapping>
监听器
监听器在后台工作,可以设置需要监听的内容
监听器的使用
通过ServletRequsetListener接口,对其进行重写
监听器的配置
配置情况如下
<listener> <listener-class>对应包.对应类</listener-class> </listener>
Java Web作用域
-
pageContext :只在当前页面有效
-
request : 请求期间有效
-
session: 会话期间有效
-
application : 程序运行期间有效
异步请求
即ajax,网页的局部更新
使用jquery的ajax函数,实现异步请求的发送,获取到数据之后,使用jquery将数据渲染到网页上
ajax的使用
-
后端
在方法前加上如下注释,让前端可以获取url请求
@WebServlet("/url名")
-
前端
在js中通过如下代码实现请求
$("button").click(function () { let 请求参数 = $("对应的键").serialize(); console.log(args) $.ajax({ url: "后端中的url名", data: 请求参数, type: "请求方式", dataType: "期待相应的结果", success:function (res) { if(res.success){ alert("成功") }else{ alert("失败了") } } }) })