java web部分学习小结(华清远见)

java web部分学习小结(华清远见)

1、Servlet

web服务器通常只能处理静态的资源(html , css , img , js…) , 为了解决一些动态的处理数据 ,就需要对web服务器的功能进行扩展,servlet就是用于处理动态数据的组件规范。

组件: 符合一定规范 ,完成部分功能的软件模块。这些软件模块需要放在容器中进行运行。

容器:符合一定规范 , 能够运行组件的一种软件。 比如:tomcat …

servlet规范: 使用servlet的时候,自定义的类是HttpServlet的子类 ,那么就是符合servlet的规范。

Servlet 的开发步骤
  • 新建符合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程序。

maven web项目的创建

1、选择maven项目 ,选择项目的模板为maven-archetype-webapp

2、设置项目的名字、路径等信息

3、创建好meven项目后,添加java, resources目录

4、导入项目所需要的jar包:mysql驱动, servlet-api 的jar包

4、配置好新版本的web.xml文件

5、安装配置tomcat服务器,一切正常完成后,项目就创建完成了。

中文编码设置

中文编码设置需要设置请求的编码格式和响应的编码格式:

resp.setContentType("text/html;character=UTF-8");
req.setCharacterEncoding("UTF-8");
Servlet 的生命周期
  • 容器启动或者第一次访问servlet的时候,会执行init方法,一个生命周期内只执行一次。
  • 容器结束运行的时候,执行destroy方法,一个生命周期内容只执行一次。
  • servlet被访问的时候,反复执行service(doXXX)
Servlet 的url映射方式

tomcat 优先查找 servlet ,如果没有符合的 servlet , 那么就找静态资源,如果也没有静态资源被找到,就404.

  • /life :精确地址,没有扩展名,以/开始
  • /life.do: 精确地址,有扩展名,以 / 开始
  • *.do , 通配符 + 扩展名,所有以.do结尾的请求,都会被拦截,不以/开始。
  • / , 拦截所有请求,但不拦截jsp
  • /* , 拦截所有请求
jsp的使用

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

jsp 不需要配置, 直接用它的路径和文件名进行访问。

jsp sun 公司制定的一种用于服务器动态页面的技术规范 , 也是一种组件, 依赖于 tomcat 进行运行。

  • servlet + html : 数据的处理和数据的显示
  • servlet + jsp: 数据处理(servlet) , 数据展示(jsp-- 嵌套java使用)
    • servlet 做数据显示的时候,不方便(编写, 维护都不方便)
    • jsp:让数据的处理和数据的展示进行分离

jsp的本质是servlet,当第一个访问一个jsp页面的时候, 会将jsp文件,

对应生成一个servlet类。html , js , css这种内容就用输出语句拼接,

其他和java相关的内容,就按java的方式转换。

转发和重定向

转发:

​ 转发的就是一个请求处理了一部分功能,然后开始另一个请求处理剩下的功能 ,其本质就是一个请求。

​ 转发是共享request,response对象 ,因此可以把需要转发的数据保存在request对象中,浏览器的地址栏地址保存不变。(显示第一个请求的地址)

RequestDispatcher requestDispatcher=req.getRequestDispatcher("show.jsp"); requestDispatcher.forward(req,resp);

重定向:
重定向是一个请求的功能完成了,然后开启另一个请求,做另一个功能。 本质是两个请求。(第一个请求是我们主动发的, 第二个请求是浏览器收到302代码和重定向的url地址, 然后浏览器主动发送的请求。)

重定向因为是两个不同的请求,所以是两个不同的request对象,因此不能共享数据。

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

resp.sendRedirect("show.jsp"); // 重定向
el表达式

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

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

el表达式: ${reques对象中保存的key},其本质上是在调用get方法,所以对象必须提供正确的get方法。

<h1>emp:${emp}</h1>

el表达式可以参与运算:

<h1>el表达式的运算</h1> 
条件运算: ${age1 > 18 } <br> 
逻辑运算: ${age1 > 18 || false} <br> 
判空: ${empty emp1} <br> 
算术运算: ${age1 + 20 }
jstl标签

jstl标签的使用必须引入要使用的标签库

<%@ taglib prefix=“c” uri=“http://java.sun.com/jsp/jstl/core” %>

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

prefix=“c” , prefix 前缀 , 表示在使用的标签的前面都要加上c: ,解决命名冲突 。

jstl标签可以使用流程控制,包括循环、分支等。

cookie的使用

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

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

    • cookie : 客户端状态管理的技术
    • session:服务器端状态管理技术
  • session中保存数据

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

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

  • session中获取数据,返回值是objec

    session.getAttribute("loginname");
    
  • session中删除数据

    session.removeAttribute("loginname");
    
  • 设置session无效

    session.invalidate();
    
jsp的内置对象
  • request : 请求
  • session : 会话
  • out : 输出语句
  • response : 响应结果
  • page : 类似于this
  • pageContext : 有效范围只在当前的jsp页面上。
  • application: ServletContext
  • config : servlet的数据
  • exception: 异常
java web作用域
  • pageContext :只在当前页面有效
  • request : 请求期间有效
  • session: 会话期间有效
  • application : 程序运行期间有效
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值