JavaWeb面试小练习(上)

JavaWeb房屋租赁管理系统(servlet+jsp+mysql) columnsetVALUES (‘174’, ‘押金退款档案表’, ‘9’, ‘0’, null, ‘1’);columnsetVALUES (‘175’, ‘交费记录’, ‘0’, ‘615’, ‘选择’, ‘1’);columnsetVALUES (‘176’, ‘交费记录’, ‘1’, ‘900’, ‘费用期间’, ‘1’);columnsetVALUES (‘177’, ‘交费记录’, ‘2’, ‘1515’, ‘科目名称’, ‘1’);columnset。 阅读详情

最近看到几道关于JavaWeb的题目,我通过结合自己前面的学习和翻阅资料整合了以下几个内容方便大家了解熟悉,如有错误希望大家能够多多指正。

1、自定义Servlet的三种方式及其区别?

1.1 实现Servlet接口

实现Servlet接口需要实现接口中的方法(不要问,问就是java之父对我们接口有意见)。其基本的方法如下代码块展示:

//Servlet的生命周期:从Servlet被创建到Servlet被销毁的过程
//宗旨:一次创建,到处服务
//一个Servlet只会有一个对象,以服务所有的请求
/*
 * 1.实例化(使用构造方法创建对象)
 * 2.初始化  执行init方法
 * 3.服务     执行service方法
 * 4.销毁    执行destroy方法
 */

1.2 继承类

创建servlet的第二种方法在于继承GenericServlet类。它实现Servlet接口除了service方法。当然这种方法很少使用便是。

public class ServletDemo2 extends GenericServlet {

    @Override
    public void service(ServletRequest arg0, ServletResponse arg1)
            throws ServletException, IOException {
        System.out.println("heihei");

    }
}

1.3 继承HttpServlet

继承HttpServlet类时,要重写doGet或者doPost方法。

public class ServletDemo3 extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("hello");
    }
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("en");
        doGet(req,resp);
    }
}

总结:

  • 很明显,实现接口Servlet时需要重写其生命周期全部的方法,非常繁琐。
  • 继承 GenericServlet 创建 Servlet,只需要重写 service() 方法即可,大大减少了创建 Servlet 的工作量。
  • HttpServlet 是 GenericServlet 的子类,它在 GenericServlet 的基础上专门针对 HTPP 协议进行了处理。所以后者对于我们进行HTTP协议时,就需要手动封装HTTP请求信息和响应信息。前者通过对应的doGet和doPost方法,能够专门处理HTTP协议请求,省去客户—服务器端之间因为协议而额外需要手动配置的问题。

2、写出Servlet的三大作用域,并分别说明各自的特点。

首先,作用域规定变量的有效期限,其用处在于共享数据。

2.1 request

它表示的是一个请求,只要发出一起请求就会创建一个request。其变量有效范围为当前的请求周期。

**请求周期:**就是指从http请求发起,到服务器处理结束,返回响应的整个过程。

2.2 session

服务器会对每一个回话创建一个session对象,所有session中的数据可以为当前会话提供所有servlet共享。

**当前会话:**就是指用户从浏览器开始到浏览器关闭的过程,这其中会包括很多的响应情况如刷新,发送数据等等。那么换句话说,如果浏览器一直不关闭,实际上服务器就知道这些请求由一个客户端发起而来。

2.3 Application

如果把变量放到application里,就说明它的作用域是application,它的有效范围是整个应用。

整个应用:从应用启动,到应用关闭结束。当然一个服务器有可能会部署两个或者多个,当你关闭服务器时,以上所有应用全部关闭。所以事实上,你可以很生动的认为如果服务器另一边的企业没有倒闭,那么实际上application里的变量就会一直被所有用户所使用共享

对象名称对象类型
requestHttpServletRequest
sessionHttpSession
applicationServletContext

3、filter 和 servlet 在生命周期上的区别

filter顾名思义就是过滤,过滤器的意思。它是一段可复用的代码。我们在客户端请求到达servlet之前,通过拦截Httpservlet对其进行处理;也可以在HttpServletResponse返回给客户端之前,对其再次进行处理。

Servlet是一种运行在服务端的Java程序,可以用来收集来自用户表单的数据输入,并将来自数据库或者其他来源的数据呈现给客户端,还可以动态的生成网页。

filter生命周期各个方法执行调用顺序原理如下:
在这里插入图片描述

而servlet的调用方法可以参考我前面写的博客:Servlet学习Notebook

在这里插入图片描述

  • 在客户端首次发送第一个请求时,首先由容器解析请求。根据请求中找到对应的Servlet。首先判断该类的对象是否存在,如果存在则调取初始化方法。在Object中调用Service()方法,由Service()判断客户端的请求方式。处理方式完成后,作出相应的结果返回给客户端,单词请求处理完毕。
  • 再次请求时,同样判断其对象是否存在,但是不再调用init()方法,而是直接调取Service()方法。
  • 当服务器关闭时,调取destroy()方法进行销毁。

4、表单提交的方式及区别

表单提交方式有GET/POST请求

其中有以下区别:

  • 数据类型

GET请求的数据会附加在URL后面,以?分割URL和传输的数据。多个参数要用&拼接,URL编码格式多为ASCll码。而POST请求会把请求的数据放置在HTTP请求包的包体中进行传输。

通过上面的解释,如果对于GET请求时,实际开发上传输的数据就要受到URL长度的限制。

  • 传输数据

GET传输的数据不超过2KB,POST传输的数据较大,一般不受限制

  • 安全性

由于数据类型的差异,GET请求的数据会暴露在地址栏中,而POST不会。
所以综上所述: get安全性非常低,post安全性较高。

5.jsp 有哪些内置对象? 作用分别是什么

具体的博客内容请访问我的博客:JSP—NoteBook。

JSP中⼀共预先定义了9个对象,分别为:request、response、session、application、out、 pagecontext、config、page、exception,具体的情况可以根据后面的博客翻阅即可。

总结

以上就是今天对Java Web部分内容的回顾复习,大家有需要的地方可以多多关注我的博客,谢谢大家!

python进阶练习之——❤️ **题目:**字符串日期转换为易读的日期格式。 **程序分析:**看看就得了,dateutil是个第三方库。 from dateutil import parser dt = parser.parse("Aug 28 2015 12:00AM") print (dt) ????小白练手专栏,适合刚入手的新人欢迎订阅编程小白进阶 ????有什么不明白的欢迎私信或留言,得到细致讲解。另外想要进阶的朋友可以关注练手项目专栏 ????另外想学JavaWeb进厂的同学可以看看这个专栏:传送们 ????是个面试和 阅读详情

相关推荐

python二级练习和考试复习

目录标题求水仙花数最大最小整数分别统计输入中字母、数字的个数换钱的交易详解 求水仙花数 N=int(input()) for i in range(100,N+1): sum3=(i//100)**3+(i%10)**3+((i//10)%10)**3 if sum3==i: print(i) 最大最小整数 num=int(input()) nums=[int(i) for i in input().split(' ')] print("%d %d"%(max(nums)

肥学的博客 610

JavaWeb基础学习一无框架项目小练习

使用servlet和mysql还有java弄一个原生的javaWeb小项目,无框架

qq_35515283的博客 2340

python进阶练习之——列表详解❤️

**题目:**列表使用实例。 #list #新建列表 testList=[10086,'中国移动',[1,2,4,5]] #访问列表长度 print (len(testList) ) #到列表结尾 print (testList[1:]) #向列表添加元素 testList.append('i\'m new here!') print (len(testList) ) print (testList[-1] ) #弹出列表的最后一个元素 print (te

肥学的博客 656

Java Web学习(8):阶段小项目练习

一输出圆的信息        项目描述:编写一个JSP页面中声明圆的半径和计算方法,然后使用表达式,实现输出圆的半径,直径,面积和 周长的相关信息。        JSP实现代码: <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> 项目练习一

life is wonderful 6626

python进阶练习之——计算复读次数❤️

**题目:**计算字符串中子串出现的次数。 s1='xuebixuebixuebixuebixuebixuebixuebixue' s2='xuebi' print(s1.count(s2)) ????小白练手专栏,适合刚入手的新人欢迎订阅编程小白进阶 ????有什么不明白的欢迎私信或留言,得到细致讲解。另外想要进阶的朋友可以关注练手项目专栏 ????另外想学JavaWeb进厂的同学可以看看这个专栏:传送们 ????是个面试和考研的算法练习我们一起加油上岸之路 ...

肥学的博客 705

python进阶练习之——磁盘写入II❤️

**题目:**从键盘输入一个字符串,将小写字母全部转换成大写字母,然后输出到一个磁盘文件"test"中保存。 if __name__ == '__main__': fp = open('test.txt','w') string = input('please input a string:\n') string = string.upper() fp.write(string) fp = open('test.txt','r') print (fp.rea

肥学的博客 619

JavaWeb 小练习(新手上路,大佬体谅)

JavaWeb 小练习(新手上路,大佬体谅) 练习要求: 编写用户登录页面login.jsp,实现用户登录,单击“提交”按钮后由process.jsp页面进行处理, 当用户输入的用户名或密码有误时,在该页面停留3秒后,自动返回到用户登录页面; 当用户输入的用户名和密码正确时(正确的用户名为“师大学生”,密码为“123456”),重定向到 简单四则运算页面input.jsp,用户输入两个数并单击“提...

weixin_46610759的博客 434

python进阶练习之——磁盘写入❤️

**题目:**从键盘输入一些字符,逐个把它们写到磁盘文件上,直到输入一个 # 为止。 if __name__ == '__main__': from sys import stdout filename = input('输入文件名:\n') fp = open(filename,"w") ch = input('输入字符串:\n') while ch != '#': fp.write(ch) stdout.write(ch)

肥学的博客 1250

Java面试笔试题--javaweb--练习2

148,AJAX有哪些有点和缺点? 优点:         1、最大的一点是页面无刷新,用户的体验非常好。         2、使用异步方式与服务器通信,具有更加迅速的响应能力。         3、可以把以前一些服务器负担的工作转嫁到客户端,利用客户端闲置的能力来处理,减轻服务器和带宽的负担,节约空间和宽带租用成本。并且减轻服务器的负担,ajax的原则是“按需取数据”,可以最大程度的减少...

evior 236

python练习题

从 0 开始计数,输出指定字符串 A = “hello”在字符串 B = “hi how are you hello world, hello yoyo!有个列表 [“hello”, “world”, “yoyo”],如何把列表里面的字符串联起来,得到字符串 “hello_world_yoyo”?已知一个字符串为 “hello_world_yoyo”,如何得到一个队列 [“hello”,”world”,”yoyo”]📣小白练手专栏,适合刚入手的新人和想考python二级欢迎订阅。

肥学的博客 479

python二级练习和考试复习(数字加密游戏)

本文来自:想考python二级和python小白学习的肥友专栏欢迎大家一起学习。 链接:传送门 编程程序,从键盘任意输入1个4位数,将该数字中的每位数与7相乘,然后取乘积结果的个位数对该数字进行替换,最后得到1个新的4位数。 解答: n = int(input('任意输入1个4位数:')) if 1000<=n<=9999: a=n%10 b=(n-a)%100/10 c=(n-a-10*b)%1000/100 d=(n-a-10*b-100*c)%10000/1000 a=a*7%1.

肥学的博客 4309

Java的学习方法

Java的学习方法?今天朗沃小刘小编来谈谈java的学习方法,对于java课程的学习小刘想说,因为Java是一种面向对象的编程语言,刚接触的时候可能会感觉比较抽象,上课的时候认真听老师讲解,一些概念知识慢慢去理解,课后多做练习,熟能生巧,哪怕是你的记性再好,课后不去强化练习也没用,只有多练了,当你在做项目时你才能很熟练的写出你想要代码。学习Java时每天必须保证一定量的练习,学习编程语言需要一个比较漫长的阶段,不能一步登天,这需要一个过程,在这个过程中慢慢积累经验,扎实基础。Java的学习方法说完,我们来.

pupu0416的博客 242

简单的JavaWeb项目,适合入门练习

简单的JavaWeb项目,适合入门练习,用的jdbc连接oracle

Java面试与笔试--JavaWeb--练习1

51、说一说Servlet的生命周期?         Servlet有良好的生存期的定义,包括加载和实例化、初始化、处理请求以及服务结束。这个生存期由javax.servlet.Servlet接口的init(),service()和destroy方法表达。         Servlet被服务器实例化后,容器运行其init方法,请求到达时运行其service方法,service方法自动派遣运...

evior 235

六款Javaweb练手项目

六款Javaweb练手项目

《商用密码应用与安全性评估》第四章密码应用安全性评估实施要点4.1密码应用方案设计

密码应用方案设计

qq_40442137的博客 1471

历经30天,javaweb经典小项目

面试前的准备 老实说,我自己平常没事就会看一些面试题,所以我都是直接去面的。不过我还是要建议大家如果准备面试的话,需要做以下准备 背题:看一看最近的面经文,了解现在公司都在面什么类型的题,准备一些常见题,开背吧!如果一些基础的 js 都不会那问题就有点小大了。 算法:做一些算法题,leetcode 上面的一二三星就够了,前端算法很简单,基本都是初中数学的难度吧。 项目:项目回顾,把你做的项目从技术架构到源码都要做到足够了解,至少面试的时候不要被面试官问住了。并且要体现出你在工作中的作用,体现出自

m0_57700563的博客 377

告别LM2596!用LM5175打造400W自动升降压数控电源(附完整电路图与代码)

本文详细介绍了如何利用LM5175芯片设计400W自动升降压数控电源,替代传统的LM2596方案。通过四开关Buck-Boost拓扑结构,LM5175实现了高达98%的转换效率和400W大功率输出,支持无缝升降压切换。文章涵盖芯片选型、电路设计、PCB布局及STM32数控实现,为工程师提供完整的实践指南。

weixin_27032989的博客 598

大学生必学练习题 - Java 语言经典50例(1),javaweb面试题大汇总

A 针上套有 64 个大小不等的圆盘,按照大的在下、小的在上的顺序排列,要把这 64 个圆盘从 A 针移动到 C 针上,每次只能移动一个圆盘,移动过程可以借助 B 针。可想而知,有限数量的商品在同一时刻被很多倍的请求同时来减库存,减库存又分为“拍下减库存”“付款减库存”以及预扣等几种,在大并发更新的过程中都要保证数据的准确性,其难度可想而知。例如第3项是第1项和第2项之和,即 0+1=1,第4项是第2项和第3项之和,即 1+1=2。它是这样一个数列 0,1,1,2,3,5,8,13,21,…

2401_84424990的博客 647

Maxwell个人初学经验及资料分享

前段时间学习了课题组基于Maxwell所建立的模型,因为以前从来没有使用过,只是按照一步一步记忆了操作,但总觉得不熟悉,我想是缺乏对这个软件整体的了解,真正想上手只会这一个模型也没有办法扩展。但是我感觉这些有限元分析软件学习起来应该有一些共性,基于以前对COMSOL学习的一点经验,我就在官网和其他网站找了一些学习资源构成一条基础入门之路,也可能有更好的资源,仅代表个人观点做一下分享。以上就是本人对该软件初步学习的一点理解,跟着这样的操作不到一个星期就能初步的掌握。...

怎么又是萝卜的博客 5631

【赛题解析&命令脚本配置】2023年全国职业院校技能大赛GZ073网络系统管理赛项赛题第10套模块A:网络构建 & (五)网络运维配置+(六)SDN网络配置-命令配置

【赛题解析&命令脚本配置】2023年全国职业院校技能大赛GZ073网络系统管理赛项赛题第10套模块A:网络构建 & (五)网络运维配置+(六)SDN网络配置-命令配置

君逍遥o 809

Java零基础入行课程大纲详解(一)

Java零基础入行课程大纲,不知道如何学习的同学可以借鉴。需要免费获取相关资料可以私信。

tianyajsg的专栏 1656

MATLAB算法实战应用案例精讲-【数模应用】校准曲线(附MATLAB、python和R语言代码实现)

模型校准曲线(Calibration Curve),也称为可靠性曲线(Reliability Curve)或概率校准曲线(Probability Calibration Curve),是一种评估分类模型输出概率准确性的图形工具。它可以帮助我们理解模型的预测概率是否与实际标签的分布一致。校准曲线通常包括以下步骤:计算模型预测概率:对于测试集中的每个样本,模型会输出一个概率值,表示样本属于正类的概率。将数据分桶:将这些概率值分成若干个等宽的桶(例如10个桶),每个桶中的样本具有相似的预测概率。

qq_36130719的博客 557
上一篇: @RequestMapping注解(3)
下一篇: SpringMVC页面导航的几种方式(4)
Xiao艾扶
博客等级 码龄7年 187粉丝 93原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Xiao艾扶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值