2019蓝旭暑假后端第一次讨论班之序章

各位小伙伴大家好,欢迎参加暑期后端培训之第一节课~~

话不多说,让我们开始吧。

 

这一学期,我们先学习了基本环境的搭建配置。

学习了java的基本知识,多态、异常处理、容器、io流等等。

学习了jsp,知道了jsp是由html+java+jsp自己一些标签构成,后面在和前端partner合项目时候,就把他们写的html套入jsp中的html标签就好了。

学习了servlet的基本知识,学习了如何写一个servlet,以及怎么配置servlet。

学习了MVC的开发理念,如果对这个还不是很了解的同学,不用着急,可以先根据模版一步步套,在后端中分为哪几个包,每个包是在做什么,他们之间数据如何交互的,等到实际写出一个具体项目那时候你可能就突然懂了。

学习了sql基本语句,select,insert,delete,update这四个sql语句(一定一定要熟练掌握,去年我暑假学习时候因为sql语句出了好多bug,后来找了很久发现就是sql写错了)。

最后带大家做了一个小demo,可能大家对于这个项目还有很多不懂得地方,后面几节课我们会一起慢慢学的~

 

今天主要学习以下几点:

1. switch case语句

2.servlet的四大作用域

3.filter过滤器

 

一、switch case

相信大家在java课中已经了解了这个语句,今天我们学习下这个在实际编码时候的用法。

switch(变量){
case 变量值1:
    //;
    break;
case 变量值2:
    //...;
    break;
  ...
case default:
    //...;
    break;
}

首先需要注意的是,switch其实是java的语法糖,在java1.7之前,是不支持变量为String类型的,只支持byte short char int四种数据类型.后来在1.7中引入了String类型。但对于编译器来说,switch只支持整型,任何类型比较最后都是转化为整型,String类型正是通过调用hashcode()方法来实现的。(感兴趣的同学可以看https://blog.csdn.net/guohengcook/article/details/81267768这篇博客)。

 

回到正题,来看看switch在实际编码时候用到的一些地方

比如说前台传来一个flag值,你要根据这个flag判断调用哪个函数,是登录函数还是注册函数,又或者是增删改查的哪一个

protected void doPost(HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws javax.servlet.ServletException, IOException {
    int flag = Integer.parseInt(request.getParameter("flag"));

    //根据flag判断跳转哪个函数,如果是1执行登录函数,2执行注册函数
    switch (flag) {
        case 1:{
            login();
            break;
        }
        case 2:{
            regist();
            break;
        }
    }

}

private void login(){
    System.out.println("login hello");
}

private void regist(){
    System.out.println("regist hello");
}

 

这样在jsp中提交数据的action的地址就可以根据需要执行同一个servlet的不同函数,而不是每一个功能都要单独写一个servlet。

比如说你就不用登录写一个servlet,注册又写一个servlet,又配置一遍servlet的url

 

二、四大作用域

pageContext当前页面有效(较少使用)

request一次请求(常用)

session会话期间有效(常用)

application服务器运行期间有效

在servlet处理完一些逻辑之后,使用域对象往前台返回数据。

比如说,前端传来一个登录请求,带有用户信息,后端验证正确后,可以使用session把这个信息存储下来,之后使用的话从session中获取

常用

request.setAttribute(key,value);(key为String类型,value为Object类型)

request.getAttribute(key);(注意返回的是Object类型)

session.setAttribute(key,value);

request.getAttribute(key)

 

在jsp中,后面会学习el表达式和jstl标签,这时候可以在jsp拿到servlet传来的值,然后再使用css,js进行数据呈现。

 

三、filter过滤器

filter用于拦截用户请求,在服务器作出响应前,可以在拦截后修改request和response,这样实现很多开发者想得到的功能。

一个过滤器是一个可以传送请求或修改响应的对象。过滤器并不是servlet,他们并不实际创建一个请求。他们是请求到达一个servlet前的预处理程序,和/或响应离开servlet后的后处理程序。一个过滤器能够:

·在一个servlet被调用前截获该调用

·在一个servlet被调用前检查请求

·修改在实际请求中提供了可定制请求对象的请求头和请求数据

·修改在实际响应中提供了可定制响应对象的响应头和响应数据

·在一个servlet被调用之后截获该调用

 

filter和servlet在编写时候类似,分为创建和配置两步

我们需要重写doFilter方法,然后在web.xml中配置这个filter

创建一个filter

在web.xml中配置

<filter>
    <filter-name>filterTest</filter-name>
    <filter-class>com.lp.filter.MyFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>filterTest</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

*代表通配符,这样就可以实现在访问每个资源之前先跑到filter中,执行我们想要的功能

 

举个栗子:处理中文乱码

写上这三行代码,改变request、response消息头实现乱码处理

request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");

本来我们可能需要在每个servlet的doPost方法里写上这三行,但是通过filter就可以实现,只用写在一个地方,每次访问时候调用一下,减少代码冗余。

当然filter还有好多其他用法,比如说拦截没有登录的用户(在filter中,拿session里登录时候放进去的对象,如果为空,则没有登录)大家可以自己去学习。

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值