java web知识总结——【华清远见】

servlet

  • Java web主要用的是sun公司制定的一种用于web服务器的功能的组件—servlet。

  • 做Javaweb项目需要创建javaweb工程,和以往创建普通的Java项目不同,这个需要需要创建maven web项目,我自认为创建maven web项目非常重要,其中需要很多细节需要注意,因为我在创建maven web项目时有很多次都要创建好几次才会创建成功。以下是创建maven web项目的步骤

    • 选择maven项目 ,选择项目的模板为maven-archetype-webapp.

    • 设置项目的名字等信息

    • 设置maven的路径

    • 项目创建成功之后需要进行修改,找到项目结构,添加java, resources目录

    • 新建文件夹,设置文件夹类型

    • 删除原来低版本的web.xml文件

    • 增加4.0版本的web.xml

    • 安装配置tomcat 服务器

      • java web项目运行,需要运行在支持java web项目的服务器上,常见的java web服务器:

        tomcat

        JBoss

        Resin

        Jetty

    • 单击右侧的add configuration , 打开配置窗口

    • 选择tomcat

    • 选择tomcat的路径

    • 修改项目的请求路径

    • 项目启动成功之后,访问的url:

    • 修改控制台乱码:

servlet的配置

要继承父类HttpServlet,在这里我也出现很多问题,继承父类时有时候会创建不上,经过我自己去网上查阅才知道我的servlet包没有导入进去,我的最终解决方案File–>Project Structure–>Libraries–>点左边的"+"–>Java–>tomcat–>lib–>servlet-api.jar,导入jar包后问题得以解决。

servlet类

servlet的一般有四个步骤:这四个步骤对于我来说很实用,每次都会按照这个思路进行编写代码

  • 设置编码方式
  • 获取参数
  • 处理数据
  • 响应结果

web.xml配置

<servlet> 
    <!--给servlet命名--> 
    <servlet-name>login</servlet-name> 
    <!--servlet的类名--> 
    <servlet-class>action.LoginServlet</servlet-class> 
</servlet> 
<servlet-mapping> 
    <!--使用servlet的名字, 通过这个名字,找到servlet对应的类--> 
    <servlet-name>login</servlet-name> 
    <!--servlet对应的url地址 , 通过在浏览器中使用这个地址 ① 浏览器地址栏输入这个地址 ② form的action , 表单提交使用 ③ 超链接中使用 --> 
    <url-pattern>/login</url-pattern> 
</servlet-mapping>

servlet的执行方式

  • 1.建立连接(ip:port):首先浏览器里面的通信模块先跟服务器的通信模块建立连接
  • 2.发送请求(请求数据包):是浏览器发请求给服务器的通信模块
  • 3.tomcat解析请求数据包。将请求的参数保存在request对象中,创建一个response对象。
  • 4.tomcat容器创建servlet对象
  • 5.调用service方法即service(request,response)
  • 6.将响应数据打包
  • 7.响应结果(响应数据包)
  • 8.浏览器,解析响应结果,渲染到网页中
  • 9.关闭连接

浏览器的缓存方式

  • 服务器端:分为静态内容和动态内容

  • 浏览器端:给定一个url地址,如果是静态内容就找缓存,缓存有就不再访问服务器了,目的是为了减少和服务器的交互。如果不希望访问缓存的内容,那么每次访问的时候就给url地址带不同的参数。如果是动态内容,就访问服务器。

jsp

jsp是一种运行在服务器端的页面, 它里面包含html, 嵌入一些java语言, 在服务器(tomcat)上经过解析转换, 输出为html页面。

jsp不需要配置,直接用他的路径和文件名进行访问,jsp的本质还是servlet。

转发和重定向

转发的就是一个请求处理了一部分功能,然后开始另一个请求处理剩下的功能,其本质就是一个请求。转发是共享request,response对象 ,因此可以把需要转发的数据保存在request对象中。浏览器的地址栏地址保存不变。(显示第一个请求的地址)

一下是转发的代码:

// 3. 转发到show.jsp
// **** 转发的目的是把数据传输到jsp页面上,让jsp页面可以使用 
req.setAttribute("emp" , emp);
req.setAttribute("emps" , emps); 
req.setAttribute("nowtime" , nowTime); 
req.setAttribute("age" , age); 
req.setAttribute("emp1" , emp1); 
req.setAttribute("age1" , age1); 
RequestDispatcher requestDispatcher = req.getRequestDispatcher("show.jsp"); 
requestDispatcher.forward(req,resp);

重定向是一个请求的功能完成了,然后开启另一个请求,做另一个功能。 本质是两个请求。(第一个请求是我们主动发的, 第二个请求是浏览器收到302代码和重定向的url地址, 然后浏览器主动发送的请求。)重定向因为是两个不同的请求,所以是两个不同的request对象,因此不能共享数据。

浏览器地址栏的地址是显示重定向的地址。(显示第二个请求的地址)

resp.sendRedirect("show.jsp"); // 重定向

el表达式

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

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

cookie

  • cookie:用于保存客户端的状态的计数。 当我们有多次请求的时候,这个多次请求被看做一个整体,这个整体中有些数据需要保存的时候,可以使用cookie,把数据保存在浏览器中。

  • cookie的使用方式

    • 服务器端代码中,创建cookie对象,在response中添加cookie
    • 客户端访问服务器的时候,会将把当前访问路径有关的cookie发送到服务器端
    • 服务器端可以在request中获取到cookie数据,然后对这些数据进行使用
    • 浏览器可以设置禁用cookie,或者用户可以删除cookie数据,用户可以查看到cookie数据,所以重要数据不能直接保存在cookie中。
    • cookie中存储的是string , 并且存储的数据大小也有限。
    • cookie 可以设置有效期,过期之后,cookie会被浏览器清除掉。

session

session中保存数据:

getSession(): 规则就是如果有就根据sessionid获取session对象,如果没有就直接创建一个session对象。

getSession(boolean) : true, 同getSession()功能, false , 如果找不到session对象,就返回null.

// **** 登录成功的位置 
HttpSession session = req.getSession(); // 获取session对象 
session.setAttribute("loginname" , name); // 把数据保存在session对 象中

session中获取数据

        // 获取session中的数据: 返回值是Object 
          Object loginname = session.getAttribute("loginname");

session中删除数据

// 删除session中的数据: 
session.removeAttribute("loginname");

session默认在会话期间有效

**发请求(和服务器开始会话):**服务器会创建一个session对象,然后浏览器中保存这个session对象的sessionid(cookie:jsession)

**会话期间:**session中的数据,所有请求都可以共享;request对象是每一次请求,都是一个单独的新的对象,所以request不能共享数据。可以通过request对象的转发,来实现request中的数据共享。(servlet转发到对应的jsp)

**关闭浏览器:**关闭浏览器的时候cookie保存的session就消失了,session对象就无效了,会话结束。

**session会话超时:**可以设置session的有效期,如果没有设置session的有效期,默认的有效期是30分钟。

// 设置session的有效期 
// setMaxInactiveInterval(秒) 
session.setMaxInactiveInterval(60);

设置session无效:一般在退出系统的时候,需要清空session中保存的数据,使用invalidate方法,让session失效。

// 设置session无效 
session.invalidate();

cookie和session的区别

cookie:客户端状态管理的jis

session:服务器端状态管理技术

过滤器(Filter)

过滤器类型:过滤器是sun提供一个组件, 需要依赖于tomcat容器运行。

**过滤器的执行过程:**访问请求的时候,先根据过滤器的配置,符号过滤器路径的请求,则先进入到过滤器中执行,执行结束之后,再根据情况,看是否需要进入到ervle中。

学习总结

在本阶段的学习中,可以由一下一句话概括"一讲就懂,一点就通,一做就废",其实由刚开始学习Java的焦虑和不解已经在慢慢的试着去解决和适应了,以前遇到不会的问题不知道如何下手解决,慢慢的跟着老师的步伐就已经开始学会"找错"了,在课堂上和平时如果遇到由bug我会先试着调试自己解决,实在不会的我会再问老师和同学,在这一点上我感觉刚开始学习有点进步。还有就是最先开始接触Java代码时我心里有点抵触,在后面老师和同学的帮助下我已经调整了心态,也渐渐的爱上了敲代码,特别是在解决错误成功的喜悦。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值