Java(web阶段)小结

一、Java web

web资源可以简单的分为:静态web资源和动态web资源。

  • 静态web资源:例如:html页面,一般都是一些不会变动的数据。
    • 相对应的就是静态web发开技术:例如:HTML、CSS等。
  • 动态web资源:一般指的是,在web页面中,因时间不同,或者操作不同等等原因,所导致的人浏览的数据也将各不相同。
    • 相对应的动态web开发技术:JavaScript、JSP、Servlet等等
    • 动态web资源开发技术统称为Java Web。

二、HTTP协议和Servlet的执行

  • HTTP协议建立连接
  • 发送请求(get和post两种请求方式)
  • tomcat容器内部解析请求数据包,然后将请求数据存放在request对象当中,并同时创建了一个response对象。
  • tomcat容器创建servlet对象。
  • 调用重写之后的service(req,resp)中的方法。
  • 将响应数据包打包发送
  • 浏览器解析响应数据包,并展示在当前页面。
  • 断开连接。

三、客户端的缓存

1、一般来说,如果该内容为静态内容,那么就会直接去寻找缓存,就不需要去访问服务器了。
2、如果需要访问的内容为动态内容,这需要访问服务器获得动态内容资源。

当自己不想访问已经缓存好的内容的时候,就可以在url地址后面加上一些不同的参数,让请求参数进行变化,这样就会去访问服务器,获得新的资源。

四、 servlet地址的配置

在个人实际使用当中,一般都会先去获取请求地址。然后再对请求地址进行判断,判断该用户接下来会进行的操作。

1.获取地址常用的三种方法

  1. getContextPath( )
  2. getServletPath( )
  3. getRequestURI( )
如果你的web项目名称为Application,在浏览器中请求的路径为(http://localhost:8080/Application/homework/user.jsp)

那么,使用以上三种方法将会得到一下结果。
--方法1:getContextPath( )--
结果:/Application
--方法2:getServletPath( )--
结果:/homework/user.jsp
--方法3:getRequestURI( )--
结果:/Application/homework/user.jsp

要根据不同的需求,合理的运用方法,才能是自己的代码更加合理,也能让自己的思维更加清晰。

2.配置web.xml文件

    <servlet>
        <servlet-name>user</servlet-name>
        <!--资源地址-->
        <servlet-class>action.Servlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>user</servlet-name>
        <!--通过*来模糊匹配当前的操作,并且必须是".do"为后缀名  -->
        <url-pattern>*.do</url-pattern>
    </servlet-mapping>

3.getServletPath( )

  • 通过获取请求地址,再通过请求的地址来进行一个判断。
    • 例如:
      if(req.getServletPath().equals("/add.do")){ 
      	System.out.println("添加操作");
       }
      

这种方法自己也使用的较多,也是较为好用的一种判断用户操作的一个方式。特别对于JDBC的操作来说,该方法更是锦上添花。

五、Servlet的生命周期

  • Tomcat容器一旦启动,就会创建servlet对象。
    -创建Servlet对象的时候,就会进行init初始化。这个过程只执行一次。
  • 然后客户端每次发送请求的时候,都会执行service(doGet/doPost),
  • 最后Tomcat容器运行结束的时候,执行destroy方法,这个过程也是只执行一次。

六、转发或者重定向

  • 两者定义的区别:
    (a)请求转发:当服务器接收到客户端请求之后,会将客户端的请求转发给目标地址,最后再将目标地址的返回数据结果反馈到客户端。(这一系列过程都发生在服务器内部)
    (b)重定向:当服务器接收到客户端请求之后,会反馈客户端一个临时响应头,在这个临时响应头中包含了,客户端需要再次发送请求的url地址,客户端就会将请求再次发送到新的url地址上去,最终从新的url地址中反馈得到数据结果。

  • 数据共享不同
    (a)请求转发:整个过程是在服务器上实现的,所以客户端只需要发送一次请求,并且在这个过程中,请求和返回的数据结果都是共享的。
    (b)重定向:因为客户端需要先从服务器得到临时响应头,再从临时响应头中获取目标url地址,并再次发送请求,因此,发送的请求不同,所以得到的数据也是不同。

  • 最终 URL 地址不同
    (a)请求转发:因为整个过程是在服务器端执行,并得到数据结果,所以整个请求过程的url地址不会改变。
    (b)重定向:因为客户端需要先向服务器发送一次请求并“询问”自己如果想要获得目标信息所需要访问的url地址,所以整个过程的url地址也将会改变从最终跳转的地址。

七、el表达式

el表达式是方便于我们获取数据,并转发到jsp页面上的数据的一种表达语言。

它的语法规则:${变量} , ${对象.属性}

<%-- el表达式: ${reques对象中保存的key} --%> 
				<h1>user:${user}</h1>
<%-- ${emp.eno} 
    1、emp对象的属性值的获取
	2、对象.属性名 (要求,属性必须提供了正确的get方法。) 
	3、el表达式中,如果获取数据值是null, 那么就不显示内容
 --%>

八、jstl标签

1.需要先导入库

<dependency> 
	<groupId>taglibs</groupId> 
	<artifactId>standard</artifactId> 
	<version>1.1.2</version> 
</dependency> 
<!-- https://mvnrepository.com/artifact/jstl/jstl -->
 <dependency> 
 	<groupId>jstl</groupId> 
 	<artifactId>jstl</artifactId> 
 	<version>1.2</version> 
</dependency>

2.在jsp页面引入标签库

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
  • 然后我们就可以正常的使用了。
  • 需要注意的是jstl需要引入的taglib的标签。
<%--taglib指令 prefix="c" , prefix 前缀 , 表示在使用的标签的前面都要加上c: ,解决命名冲突 --%> 
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%@ taglib prefix="f" uri="http://java.sun.com/jsp/jstl/fmt" %>
  • jstl使用的方法,个人感觉有点类似c的感觉(但是也只是个人感觉)
    在这里插入图片描述

九、cookie的使用

其实对于cookie的使用,个人感觉还是了解就行,因为cookie目前对于自己来说还是比较容易就上手的。
  • cookie中存储的是String类型,而且cokie中的存贮数据大小也有限。
  • 在我们的浏览器中也可以设置禁用cookie,查看cookie数据或者删除cookie数据。
  • cookie的也可以设置有效期,一旦有效期过后,cookie会被浏览器清除掉。

十、session

  • 状态管理:
    • cookie:客户端状态管理技术
    • session:服务器端状态管理技术

  • 在session中保存数据:
    • 把数据存入session中,使用setSession(“名字”,数据) ,存入的方式类是以键值对的形式。
    • session中取出数据,getSession(“名字”)

  • session在会话期间才会有效:
    • 在会话期间的时候,session中保存的数据,所有请求都可以共享。
    • 客户端向服务器端发送请求的时候,就会创建session对象。若用户关闭浏览器(客户端),那么session对象就会失效。
    • 设置session有效期
      • session.setMaxInactiveInterval(60) :是以秒作为单位。

1、其实在目前个人的使用当中,request对象使用的会相较于session对象多一点。
2、但是,request对象是每请求一次,就是一个全新的对象,所以request并不能达到数据的共享。但是我们可以通过对request对象的转发,从而实现数据的共享。


# 十一、过滤器

过滤器的执行过程:
1、就是访问请求的同时,需要先进行过滤器的配置。
2、然后再对过滤器路径的请求,进入过滤器中去执行。
3、执行结束之后,根据相应的要求,去判断是否满足要求。
4、最后达到一个过滤的效果。


十二、java web作用域

java web作用域:pageContext、request、session和application。

  • pageContext:只在当前页面有效
  • request:请求期间有效
  • session:会话期间有效
  • application: 程序运行期间有效

十三、ajax(异步请求)

ajax:就是通过jquery中的ajax函数,将异步请求发送,发送之后再将获取的数据使用jquery同步到浏览器中来。


  • 前端
<script src="js/jquery.js"></script> <script> 
$("button").click(function () { //ajax函数, 参数是json格式 
	let args = $("form").serialize();// key=value&key=value.... 	
	$.ajax({ 
			url: "hobby", // 请求的url 
			data: args, // 请求参数 
			type: "get", // 请求的方式 
			dataType: "json",// 期待的响应结果的格式 
			success:function (res) {//成功之后, // res ==> {"success":true} 
			if(res.success){
 					alert("成功") 
 					}else{
 					alert("失败了") 
 					} 
			 } 
 	}) 
 }) 
 </script>

  • 后端
// 响应结果: json格式的结果 {key:value, key1:value1} 
// *** application/json: 表示响应结果是json格式 
// *** text/html :表示响应结果是html格式 		
resp.setContentType("application/json;charset=utf-8"); 	
resp.getWriter().println("{\"success\" :true}");

目前异步个人,因为初学的原因,使用还是不太熟练。但是在练习的过程当中,发现使用ajax(异步请求)会比之前使用jsp方便很多,而且对代码整体逻辑来讲也更加合理。


1、以上就是自己在Java Web中学习总结的一些知识点,也是自己使用较为频繁,遇到问题最多的地方。
2、在整Web学习的过程中,自己也渐渐对前后端的概念更加清晰,对整体逻辑设计、处理也更加合理。
3、举个简单例子来讲,如果我面前有一个需求。以前的我,面对需求我可能会无从下手,但是在系统的学习了web阶段之后,现在自己能明确,自己应该先做什么,怎么去实现这个过程,最后这么把数据在浏览器中去体现出来。这也是我在整个web阶段进步最大的一点。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值