《JavaWeb学习-Servlet-JSP》

Servlet项目创建总体流程:

1、建Maven项目(导入Maven依赖)

    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>javax.servlet-api</artifactId>
      <version>3.1.0</version>
    </dependency>
    
    <dependency>
      <groupId>javax.servlet.jsp</groupId>
      <artifactId>javax.servlet.jsp-api</artifactId>
      <version>2.3.1</version>
    </dependency>

2、编写Servlet项目(首先编写一个普通类,然后实现HttpServlet接口)
重写doGet和doPost方法或者只重写service方法
3、编写Servlet的映射(在web.xml中)

  <!--注册Servlet,一个Servlet对应一个Servlet-mapping-->
  <servlet>
    <servlet-name>helloservlet</servlet-name> <!--名字随便取,但是要和mapping中的对应-->
    <servlet-class>com.su.servlet.MyServlet</servlet-class> <!--servlet类的全限定名-->
  </servlet>
  <!--Servlet的请求路径-->
  <servlet-mapping>
    <servlet-name>helloservlet</servlet-name>
    <url-pattern>/hello</url-pattern> <!--自己定义一个请求的路径-->
  </servlet-mapping>

为什么需要映射:我们写的是Java程序,但是要通过浏览器访问,而浏览器需要连接Web服务器,所以需要web服务器中注册我们写的Servlet,还需给他一个浏览器能够访问的路径。
4、配置Tomcat,并启动
整体逻辑: Servlet是由web服务器调用(tomcat)
浏览器向web服务器发送Http请求,web容器产生请求和响应两个对象
通过浏览器输入的访问地址找到web.xml中配置的servlet,再找到配置的servlet中的对应的类。
在这里插入图片描述

ServletContext

web容器在启动的时候,会为每个web程序都创建一个对应的ServletContext对象,它代表了当前的web应用

  • 共享数据
    在servlet中保存的数据,可以在另外一个servlet中拿到
    在这里插入图片描述
  • 获取初始化参数
  • 请求转发
    在这里插入图片描述
    A找到B,B找到C,C再转发给B,B再转发给A,A始终没有看到C,所以转发的时候路径不会发生改变
  • 读取properties文件。通过getServletContexr().getResourcesAsStream(文件的相对路径)将文件转为流,再用properties加载。

web服务器接收到客户端的请求,针对这个请求,分别创建一个代表请求的HttpServletRequest对象,代表响应的一个HttpServletResponse;

  • 如果要获得客户端请求过来的参数:找HttpServletRequest
  • 如果要给客户端响应一些信息,找HttpServletResponse

重定向: 一个web资源(B)收到客户端(A)请求后,他(B)会通知客户端(A)去访问另外一个web资源(C),这个过程叫重定向


JSP

  1. 四个可以保存数据的内置对象:
  • pageContext:保存的数据只在一个页面中有效
  • request:保存的数据只在一次请求中有效,请求转发会携带这个数据
  • session:保存的数据只在一次会话中有效,从打开浏览器到关闭浏览器
  • application(相当于Servlet中的servletContext):保存的数据只在服务器中有效,从打开服务器到关闭服务器
  1. <%=%>和${}的区别:如果值不存在,前者会输出null,后者会过滤掉,不输出
  2. JSTL表达式:为了弥补HTML标签的不足;它自定义许多标签,可以供我们使用,标签的功能和Java代码一样

JavaBean

  1. javaBean通常被称为实体类,一般用来和数据库的字段做映射(ORM);
    ORM:对象关系映射
  • 表–>类
  • 字段–>属性
  • 行记录–>对象
  1. JavaBean有特定的写法:
  • 必须有一个无参构造
  • 属性必须私有化
  • 必须有对应的get/set方法

MVC三层架构

什么是MVC:Model view Controller – >(模型,视图,控制器)
在这里插入图片描述
Model

  • 业务处理:业务逻辑(Service层)
  • 数据持久层:CRUD(Dao层)

View

  • 展示数据
  • 提供链接发起Servlet请求(a,form,img…)

Controller(Servlet)

  • 接收用户的请求:(req:请求参数、Session信息…)
  • 交给业务层处理对应的代码
  • 控制视图的跳转

例子(登陆操作): 登陆–>接受用户的登陆请求–>处理用户的请求(获取用户的参数,username,password)–>交给业务层处理登陆业务(判断用户名密码是否正确:事务)–> Dao层查询用户名和密码是否正确


Filter(重点,和Servlet类似,实现过滤器接口,导java.servlet的包)

  1. Filter:过滤器,用来过滤网站的数据,可以有多个过滤器;
  • 处理中文乱码
  • 登陆验证…
    在这里插入图片描述
  1. Filter实现步骤
  • 创建项目、导包
  • 编写过滤器
  • 在web.xml中配置Filter,和Servlet类似(filter + filter-mapping)
  1. 实现接口的三个方法,init()方法是随web服务器启动,就已经启动了,随时等待过滤对象出现;destory()方法是随web服务器关闭的时候,过滤会销毁;重点是doFilter()方法,要在这个方法中调用chain.doFilter(),才可以让请求继续走,如果不写,程序到这里就被拦截停止,需要注意以下两点:
  • 过滤中的所有代码,在过滤特定请求的时候都会执行
  • 必须要让过滤器继续通行
    在这里插入图片描述

Tip

  1. classpath:类路径,main下的java和resources里的文件通过maven编译后会放在target里的classes中,注意如果java中有其他类型的文件,要在pom.xml中配置<build过滤。
  2. 响应状态码:200–>请求响应成功,3xx–>请求重定向,4xx–>找不到资源,5xx–>服务器代码错误,502–>网关错误
  3. 重定向和转发的区别
  • 相同点:页面都会跳转
  • 不同点:重定向Url会发生变化
  1. Session和cookie的区别:
  • Cookie是把用户的数据写给用户的浏览器,浏览器保存(可以保存多个)
  • Session把用户的数据写到用户独占Session中,服务端保存(保存重要的信息,减少服务资源的浪费)
  • Session对象由服务端创建

Session使用场景

  • 保存一个登陆用户的信息
  • 购物车信息
  • 在整个网站中经常会使用的数据,我们将它保存在Session中
  1. EL表达式: ${}
  • 获取数据
  • 执行运算
  • 获取web开发的常用对象
  1. JDBC固定步骤
  • 加载驱动 – Class.forName(数据库驱动)
  • 连接数据库 – DriverManager.getConnection(url, usename, password),返回Connection对象,即代表了数据库
  • 向数据库发送SQL的对象Statement – connection.createStatement(),但这是不安全的,会导致SQL注入问题,一般使用preparedStatement
  • 编写SQL
  • 执行SQL – statement.excute…,具体方法根据SQL语句来执行
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值