book5 – 后端


abbrlink: ‘0’

book5 – 后端

这里记录的是后端的学习 !

一、动态网页基础JSP

1.动态网页

2.CS与BS

2.1简述B/S架构与C/S架构的区别

C/S架构与C/S架构如果对服务端升了级,那么所有的客户端都要升级;而B/S架构则只需要开发维护服务器上的代码

3.开发第一个Web项目

3.1Tomcat目录中有哪些子目录?各有什么作用?如何启动或关闭服务?

  1. bin:存放Tomcat服务器所有可执行命令;
  2. conf:配置文件;
  3. logs:运行日志文件;
  4. temp:运行临时文件;
  5. webapp:Web应用程序存放目录;
  6. work:存放由JSP生成的Servlet文件(.java),以及编译产生的字节码文件(.class);bin中的startup.bat和shutdown.bat分别控制服务启动和管理服务

3.2使用Tomcat开发一个Web项目时,Web项目默认存放在Tomcat的哪个目录下?能否更换此目录?

webapp;可以,通过server.xml配置虚拟路径来找到

3.3Web项目的目录结构有什么要求?

  1. 在webapp目录中新建项目文件夹;
  2. 并在其中新建WEB-INF文件夹;再在WEB-INF中新建classes、lib文件夹和web.xml文件;
  3. 在web.xml中输入相关内容

3.4如何修改Tomcat的端口号?

在conf中server.xml中修改

3.5简述如何使用Tomcat手动部署一个Web项目,并通过项目中的JSP文件输出HelloWorld

3.6如何在Eclipse中集成Tomcat

3.7简述如何使用Eclipse集成Tomcat部署一个Web项目,并通过项目中的JSP文件输出HelloWorld

3.8能否通过www.hellolanqiao.com的形式访问本地项目

可以,需要配置虚拟主机

3.9Tomcat添加管理员

conf下的Tomcat-user.xml下的标签中添加

3.10JSP执行流程

  1. 第一次请求JSP页面时的流程
    a.将接收到的index.jsp翻译成与之对应的Java文件
    b.再将翻译后的Java文件,翻译成与之对应的CLASS文件
    c.执行CLASS文件
    (第一次运行JSP项目时,会经历上述的“翻译”以及“编译”过程,速度会慢一些,而再次运行时则会变得很快;)
  2. 第二次请求JSP页面
    (因为已经存在翻译后的Java文件以及编译后的CLASS文件,就不用再次“翻译”及“编译”,而是直接执行CLASS文件即可。但需要注意,如果修改了JSP文件,则会再次重新执行“翻译”及“编译”的整个过程,相当于一个新的JSP的执行流程。)

3.11Tomcat和JDK的关系

  1. JDK用来开发Java程序;Tomcat用来发布Java程序[运行]
  2. 两者须有版本匹配,如:1.6与7.0;1.7与8.0;1.8与9.0;

3.12什么是Web服务根目录、子目录、相对目录

  • 根目录:这个项目最外层的引用;
  • 子目录:一个目录下含有的目录;
  • 相对目录:不以"/"开头,相对于当前web资源目录的,路径

3.13如何配置虚拟目录?

有两种方式:

  1. 通过server.xml,在元素中,增加并配置元素
  2. 通过自定义.xml文件配置,conf/Catalina/localhost下新建"项目名.xml",配置元素

3.14 如何通过Eclipse设置JSP文件的默认编码及文本内容编码?

  1. windows-Preferences-web-JSP File:Encoding:UTF-8
  2. Windows-Preferences-General-Workspace:Text file encoding:UTF-8

4.HTTP协议

二、JSP基础语法

1.JSP页面元素

1.1JSP中有几种Scriptlet?各自的作用是什么

三种。

  1. <%...%>:用于定义局部变量,编写Java语句;
  2. <%!...%>:用于定义全局变量,定义方法;
  3. <%=...%>:用于输出等号后面的表达式值;

1.2JSP中有几种注释?各有什么特点

三种。

  1. <!-- -->HTML注释,客户端能看见;
  2. <%-- --%>JSP注释,浏览器看不见;
  3. Java注释:<% //单行 %><% /*多行*/ %>

1.3对于get和post请求,各如何编码

首先要知道Tomcat服务器,默认使用的编码方式是ISO-8859-1

  • 如果是以get方式提交表达(或URL地址传递的方式)
    1. 分别把每个参数的编码方式从ISO-8859-1转变为UTF-8
      //将name的编码方式,从ISO-8859-1转为UTF-8
      String name = request.getParameter("uname");
      name = new String(name.getBytes("ISO-8859-1"), "UTF-8");
      //将pwd的编码方式,从ISO-8859-1转为UTF-8
      String pwd = request.getParameter("upwd");
      pwd = new String(pwd.getBytes("ISO-8859-1"), "UTF-8");
    2. 修改Tomcat配置,一次性地将所有通过get方式传递的参数编码都设置为UTF-8。具体修改方式如下:打开Tomcat的conf目录,在server.xml的第64行附近的元素中,加入URIEncoding="UTF-8",如下:
      <Connector connectionTimeout="20000" port="8888" protocol="HTTP/1.1" redirectPort="8443" URIEcoding="UTF-8" />
  • 如果是以post方式提交表单,可以通过在服务器端加入request。setCharacterEncoding("UTF-8")来设置编码

    1.4简述请求转发和重定向的区别

    1. 请求次数:重定向是浏览器发送一个请求并收到响应后再次向一个新地址发出请求,转发是服务器收到请求后为了完成响应跳转到一个新的地址;重定向至少请求两次,转发请求一次;
    2. 地址栏不同:重定向地址栏会发生变化,转发地址栏不会发生变化;
    3. 是否共享数据:重定向请求不共享数据,转发一次请求共享数据(在request级别使用信息共享,使用重定向必然出错);
    4. 跳转限制:重定向可以跳转到任意URL,转发只能跳转本站资源;
    5. 发生行为不同:重定向是客户端行为,转发是服务器行为。

1.5怎么判断用户请求时是第一次?如果客户端和服务端断开,怎么才能连到上一次操作?

通过Session中的isNew()可以判断是否是新用户,可以用Cookie来保存信息到客户端,可以连接到上次操作

1.6简述Session和Cookie的区别

  1. 数据存放位置不同:Cookie数据存放在客户端浏览器上,Session数据放在服务器上;
  2. 安全程度不同:Cookie不是很安全,别人可以分析存放在本地的Cookie并进行Cookie欺骗,考虑到安全,应当使用Session;
  3. 性能使用程度不同:Session会在一定时间内保存在服务器上,当访问增多,会比较占用你服务器上的性能,考虑到减轻服务器性能方面,应当使用Cookie;
  4. 数据库存储大小不同:单个Cookie保存的数据不能超过4k,很多浏览器都限制一个站点最多保存20个Cookie,而Session则存储于服务器端。

1.7什么情况下会造成“表单重复提交”?应如何解决?

  1. 提交表单以后不做其他操作,直接刷新页面,表单会提交多次;
    • 原因:Servlet处理完请求后,直接转发到目标页面,这样整个业务只发送了一次请求,那么当你在浏览器中点击刷新会一直都会刷新之前的请求;
    • 解决方法:不用转发到另一页面,采用重定向的方式跳转到目标页面
  2. 在提交表单时,如果网速较差,可能会导致点击提交按钮多次,这种情况也会导致表单重复提交。
    • 解决方法:点击提交按钮之后,使按钮不可用,通过js完成
  3. 表单提交成功以后,直接点击浏览器上回退按钮,不刷新页面,然后点击提交按钮,再次提交表单。
    • 根本原因:因为服务器在处理请求时,不会检查是否为重复提交的请求。
    • 解决方案:

      使用一个token的机制:

      token就是令牌的意思;
      服务器在处理请求之前先来检查浏览器的token;
      token由服务器来创建,并交给浏览器,浏览器在向服务器发送请求时需要带着这个token;
      服务器处理请求前检查token是否正确,如果正确,则正常处理,否则返回一个错误页面
      服务器创建的token只能使用一次
      token一般使用一个唯一的标识

1.8JSP如何处理json?

在数据传输过程中,json是以文本,即字符串的形式传递的,js操作的是对象,所以JSP处理json数据需要把json转化为json对象,可以使用gjson、jackjson、fastjson等工具

1.9什么情况下需要使用session?

如果希望在增加属性以后,能够在跳转后的任何页面(无论是请求转发、重定向或超链接跳转),甚至是项目中任何一个页面都能获取到该属性值,就可以使用Session的作用域来实现

1.10获取JSP页面的元素和值有哪几种方式

    //js中
    getElementByName(""); //1. 
    getElementById(""); //2.
    //Servlet中
    getParameter("name"),return String,取元素,1
    getParameterValues("name"),return String[],取值,2

1.11简述JSP的执行原理

  1. 客户端通过浏览器向服务端发出请求,在该请求中包含了请求的资源路径,这样当服务器接收到该请求后就可以知道被请求的内容
  2. 服务器根据接收到的客户端的请求来加载响应的JSP文件;
  3. Web服务器中的JSP引擎会将被加载的JSP文件转化为Servlet;
  4. JSP引擎将生成的Servlet代码编译成CLASS文件
  5. 服务器执行这个CLASS文件
  6. 最后服务器将执行结果发送给浏览器

1.12会话跟踪有哪些?它们的区别是什么

会话跟踪:从用户进入一个网站浏览器到退出这个网站。进行显示,或关闭浏览器称为一次会话。会话跟踪就是指在这个过程中浏览器与服务器的多次请求保持数据共享的状态的技术。

  1. 通过URL重写地址传递参数。它可以把会话ID编码在URL中,即使浏览器禁用了cookie也可以实现会话跟踪(url?名=值&名=值)
  2. 通过隐藏表单域提交适合大量数据存储的会话应用,通过form提交
  3. 通过cookie保存在浏览器缓存。通过名值对保存在浏览器中,可以设置cookie的过期时间属性来指定cookie的有效期。当下次浏览器发出请求时,会检索其保存的cookie。应用于自动登录、记录浏览过的商品。由于之能保存在浏览器的文本中。容易泄露个人信息,有时用户会禁用掉cookie
  4. 通过session保存在服务器。通过sessionID传递浏览器与服务器之间与该会话相关的所有信息。当关闭浏览器时,会话对象也会被销毁,sessionID会消失

1.13服务器端怎么判断浏览器是否支持Cookie?

Tomcat判断客户端是否支持cookie的依据是请求中是否含有cookie

1.14有哪几种方式可将JSP页面的值传到后台?

  1. 通过ajax:传给后台的数据通过json封装起来,再用ajax通过json传到后台
  2. 如果数值在传给后台之前需要校验,可以在form中的onsubmit调用js方法进行校验,js的方法返回值为true时,触发action,返回false时,action不起作用,这是action请求方法;
  3. 通过dom获取标签,触发标签的submit方法,直接提交数据到后台

1.15在JSP的父页面中如何取到子页面的表单元素值

  1. 通过ajax请求到子页面,子页面获取参数id使用java和js变量交互后,返回需要的模板信息
  2. 使用iframe引入子页面,然后通过$(iframe.contents().find("#"+id)[0]).val();

1.16定义一个String类型的字符串,在重定向后能否获得这个数据

不能。转发才共享,重定向不共享。

1.17HTTP状态码404和500各是什么意思?

404:无法找到指定位置的资源
500:服务器内部错误,如代码出错

1.18如何输出一个特定编码的字符串?例如建ISO-8859-1格式的字符串,输出为GBK格式的字符串

详见1.3

1.19 简述JSP的九大内置对象、三大指令、七大动作的具体功能

三大指令:

    1. page指令
      1).指定页面编码;
      2).导入包
    1. include指令:静态包含(统一编码)<%@include file="include.jsp"%>
    1. taglib

七大动作:

  1. include动态包含(分别编译):它总是会检查所含文件中的变化,适合用于包含动态页面,并且可以带参数
  2. useBean动作(jsp页面使用JavaBean的第二种方式):作用域默认为page(本页面有效)
  3. getProProperty动作(name为useBean动作中的id):从对象中取出属性
  4. setProperty动作(name为useBean中的id):为对象设置属性值
  5. param动作(传递参数):到达跳转页面可以通过request.getParameter("参数名")方式取出参数值;
  6. forward动作:跳转页面:
  7. plugin动作:<jsp:plugin>:用于指定在客户端运行的插件

jsp九大内置对象:

  1. out:向客户端输出数据,字节流
  2. request:接收客户端的Http请求;
  3. response:封装jsp产生的回应,然后发送到客户端以响应客户端请求,重定向跳转到任意界面(服务器跳转)
  4. session:用于保存用户信息,跟踪用户行为,当前打开的浏览器内,多个页面共享数据,session对象指的是客户端与服务端的一次会话,从客户连接到服务器的一个WebApplication开始,直到客户端与服务端断开连接为止,它是HTTPSession类的实例
  5. application:实现了用户间的数据共享,可存放全局变量,它开始于服务器的启动,直到服务器的关闭,在此期间,此对象将一直存在;这样在用户的前后连接或不同用户之间的连接中,可以对此对象的同一属性进行操作;在任何地方对此对象属性的操作,都将影响到其他用户对此对象的访问。服务器的启动和关闭决定了application对象的生命,它是ServletContext类的实例。
  6. page对象代表jsp这个实例本身,即当前页面有效,相当于Java中的this,数据范围:page<session<application
  7. exception:代表运行时的异常
  8. pageContext对象:pageContext对象提供了对JSP页面内所有的对象及名字空间的访问,也就是说它可以访问到本页所在的session,也可以取本页面所在的application的某一属性值,它相当于页面中所有功能的集大成者,它的本类名也叫pageContext。
  9. config:jsp对应的servlet的配置,可以得到web.xml中的初始化参数

1.20 session、cookie底层是通过什么实现的?

  • session:服务器创建一个session之后,会在响应头里面将sessionId返回给浏览器。浏览器从响应头中获取sessionId,然后保存在浏览器本地

  • cookie底层实现原理:

    1. 服务器创建cookie对象,把会话数据存到对象中:new Cookie("name", "value");,
    2. 服务器发送cookie信息到浏览器:response.addCookie(cookie);
    3. 浏览器从响应头中得到服务器发送的Cookie,然后保存在浏览器本地
      编程:

1.21在一个JSP中提供一个复选框,可以让用户选择自己喜爱的水果,提交后,在另一个JSP页面输出用户所有选项

1.22在index.jsp中编写两个输入框,用于接收用户输入的两个数,然后通过表单提交跳转到result.jsp。再在result.jsp中比较判断出较大的数字,并显示。

1.23实现以下表单,并在用户单击”注册“按钮后,在另一个JSP中获取各个表单元素的值

1.24<a href="showStudent.jsp?page=2&size=10">学生信息</a>,获取超链接中的page、size参数值

1.25demo01.jsp的部分内容如下:

    <body>
        <%
            Student stu = new Student("张三", 23);
            ...
        %>
    </body>

将demo01.jsp中的stu对象传递到demo02.jsp

1.26实现登录功能。要求:在客户端保存用户名,在服务端保存登录信息

1.27禁止从外部网站提交数据(服务器端只接收本项目中传来的数据)

1.28实现以下功能的网页记录器

1.29实现IP计数器

1.30统计用户在站点的停留时间

1.31实现“万年历”功能

1.32实现“带阴历的万年历”功能

1.33实现“带阴历及备忘录的万年历”功能,图所示是用鼠标单击“1月6日”之后的界面

2.内置对象

2.1简述pageContext、request、session、application四个内置对象的作用域范围

2.2家属JSP九大内置对象、三大指令、七大动作的具体功能

2.3简述session和application的作用

2.4JSP内置对象有哪些?

2.5session底层是通过什么实现的?

三、数据库访问与 JavaBean

1.JDBC

1.1简述JDBC的基本步骤

1.2描述Statement和PreparedStatement两种方式的区别?

1.3描述什么是SQL注入,请用一个例子加以说明

1.4请描述如何在Eclipse中更改新建的JSP页面默认的字符集编码

1.5JDBC连接数据库的步骤,并写出JDBC连接Oracle的示例代码

2.元数据

3.JSP访问数据库

3.1使用PreparedStatement方式,实现一个“部门管理系统”;包括增加部门、修改部门、删除部门、根据部门编号查询一个部门、根据部门名称模糊查询相关部门、查询全部部门等功能

3.2将第一题中的“部门管理系统”用JavaBean进行优化

3.3实现注册功能,并将“头像”以二进制形式写入数据库中

3.4将第3题中的所有注册信息,从数据库中读取,并以表格形式显示

3.5实现第4题中的“删除”和“修改”操作。要求:1)在“删除”时防止“表格重复提交”;2)“修改”操作具体为:单击用户名后,进入用户的详情页,并且可以在该详情页修改信息(规定用户名不能修改)

3.6将选中的图片以二进制形式保存在数据库中

3.7通过调动存储过程,实现登录验证操作

3.8通过调用存储过程,实现注册功能,并将“头像”以二进制形式写入数据库中

3.9将选中的邮件,批量移动至垃圾箱或彻底删除

3.10开发能够“创建视图”的Web页面

3.11使用JavaBean实现一下功能,并将结果显示在JSP上

(1)小写金额转换成大写金额:在页面输入数字格式的金额,单击“转换”按钮后显示对应的大写汉字
(2)空格和回车的转换:用户在<textarea>元素中输入文本,打击“提交”按钮后,将输入内容中的空格和回车转为JSP可以识别的 和<br/>
(3)获取字符串的实际长度:英文、数字及英文符号占1位长度,中文及中文符号占2位长度。用户在<input>中输入文本内容,点击提交后,求文本的实际长度
(4)标题的截取:若文章的标题过长,则在文章列表中显示标题的前60个字符,其余字符用"…"代替
(5)格式化数字为指定长度:输入整数值和长度值,单击“格式化”按钮后,将该整数值格式化为指定长度的位数
(6)格式化数字为分位显示:输入整数值和分位数,单击“格式化”按钮后,将该整数值分位显示
(7)获取汉字的拼音简码:输入汉字,单击“提交”按钮后,显示各个汉字的首字母
(8)判断是否为数字:输入内容,单击“提交”按钮后,判断输入的内容是否为数字
(9)计算两天之差:输入两个日期(字符串类型,如“2016-12-30”),单击“提交”按钮后,显示两个日期相差的天数

4.JavaBean

4.1JavaBean有哪几种类型?各有什么作用?

四、Servlet与MVC设计模式

1.MVC设计模式简介

2.Servlet

填空题:

2.1在Servlet接口中,负责Servlet初始化工作的方法是_init();

2.2在Servlet程序中,当Servlet对象被移除时会被调用的方法是_destroy();

2.3在Servlet开发中,当自定义一个Servlet时,必须继承_GenericServlet或者_HttpServlet类

2.4实现请求重定向的方法是_sendRedirect();它是在_HttpServletResponse接口中定义的方法

2.5如果某个Servlet的映射路径仅仅是一个正斜线(/),那个这个Servlet就是当前Web应用的默认_Servlet

2.6当Tomcat初始化一个Servlet时,会将该Servlet的配置信息封装到_ServletConfig对象中

2.7在Servlet开发中,实现了多个Servlet之间数据共享的对象是_ServletConfig

2.8在Servlet API中,专门用来封装HTTP响应消息的接口是_HttpServletResponse

2.9在web.xml文件中,/xxxxServlet中的第一个’/’表示_项目的根路径

2.10在RequestDispatcher接口中,实现请求转发的方法是_forward();

2.11Servlet接口中负责处理客户端请求的方法是_service()

2.12Servlet就是一种实现了_Servlet接口的类,它由Web容器负责创建并调用

2.13Servlet接口中的init().service()和_destroy()这三个方法称为Servlet生命周期方法

2.14getServletConfig()方法用于返回_ServletConfig对象,该对象包含Servlet的初始化信息

2.15在web.xml文件中,一个元素用于映射一个Servlet的对外访问路径,该路径也称_映射路径

2.16Servlet容器启动时,会为每个Web应用创建一个唯一的_ServletConfig对象代表当前Web应用

2.17在Servlet开发中,要自定义一个Servlet时,可以继承_GenericServlet或HttpServlet类

2.18Servlet接口中的_init()方法载入时进行,且只执行一次,负责对Servlet进行初始化

2.19web.xml文件中/xxxServlet中的“/”表示项目根路径

2.20HttpServlet类中的doGet和doPost方法通常抛出_ServletException

简答题:

2.21简述Servlet2.0和Servlet3.0在实际使用中的不同之处

2.22简述Servlet的生命周期

2.23如何使Servlet的init()方法在Web容器启动时自动执行?

2.24如何给Web容器和具体的Servlet设置初始化参数并获取

2.25简述MVC设计模式及其优势

2.26请描述JSP和Servlet的关系

2.27Servlet的生命周期分哪几个部分?每一个部分分别要执行生命方法?一个Servlet在什么情况下被创建和销毁?

2.28使用Servlet及MVC设计模式优化“部门管理系统”

2.29举例说明,Servlet在什么情况下会产生并发问题?应如何解决?

2.30简单介绍一下request.getAttribute()和request.getParameter()的区别?

2.31请列举出三个HttpServletResponse常用的响应状态码,并说出它们的意义

2.32请简要概括什么是Servlet的多重映射,并列出Servlet多重映射的实现方式

2.33请简述什么是缺省Servlet,以及其作用

2.34请列举Servlet接口中的方法,并分别说明这些方法的特点及其作用

2.35请列举可以获得ServletContext的方法

2.36简述Servlet的执行流程

2.37Servlet是安全的吗?当Service有一个实例变量,doGet和doPost去调用这个变量时,会出现什么问题?你是如何解决的?

2.38有三台服务器,如果在一台服务器上登录了这个用户,其他两台就不能再登录这个用户。要求使用session共享,应如何实现?

2.39Servlet是单例还是多例?有什么好处?

2.40应如何处理Servlet的线程不安全问题?

2.41简述JSP和Servlet的区别?

2.42Servlet和JavaScript、JSP、HTML的区别,它们分别有什么作用?

2.43form表单的值如何在Servlet中获取?

2.44如何创建一个Servlet实例?

程序分析题:

编程题:

2.45使用Servlet生成如图所示的表格,并在项目启动时默认访问

2.46在login.jsp中输入用户名和密码,提交后跳转到LoginServlet.java;再在LoginServlet.java中进行验证,如果验证成功则跳转到success.jsp并提示“登录成功,欢迎您 XX”,否则跳回JSP页面

2.47在login.jsp中输入用户名和密码,提交后跳转到LoginServlet.java;再在LoginServlet.java中将用户名添加到Cookie对象中,然后关闭浏览器,再重新访问login.jsp时,会自动显示上一次输入的用户名信息

思考:如果用户名是中文,如何保存在Cookie对象中?

2.48如图所示,在register.jsp中输入用户信息,提交后跳转到RegisterServlet.java;再在RegisterServlet.java中将用户信息封装到一个JavaBean中,之后再将该JavaBean传递到welcome.jsp中显示

2.49在Servlet中获取Web路径和文件真实路径

2.50Servlet实现网站计数器:浏览者每访问一次网站,计数器累加一次

2.51在Servlet中查询emp表中的全部数据,并支持将数据导出到Excel中,如图所示

2.52用Servlet实现带验证码的登录功能(姓名:张三,密码:abc),如图所示

2.53用Servlet实现自动登录功能:输入用户名和密码,并可以选择登录状态的有效期

2.54请按照以下要求设计一个向页面输出汉字的MyServlet

要求如下
1)创建一个MyServlet类,使其继承HttpServlet类并重写该类的doGet()及doPost()方法
2)在doGet()或doPost()方法中,将浏览器编码设置为GBK
3)向浏览器输出“蓝桥软甲学院”

2.55请按以下要求开发登录功能:

1)开发登录login.html页面,页面上包含用户名(username),密码(password)的输入框和登录按钮。当单击“登录”按钮时,表单信息会以post请求方式提交给LoginServlet
2)编写一个LoginServlet类,并重写该类的doPost()方法
3)在doPost()方法中,获取login.html中表单中的信息,当username="lanqiao",password="123"时重定向至welcome.html页面并提示“欢迎您”,否则重定向至login.html页面并提示“用户名或密码有误”

2.56请按一下要求开发“统计网站访问次数”功能

1)新建一个Servlet,并重写doGet和doPost方法
2)在doPost方法中调用doGet方法,在doGet方法中实现统计网站被访问次数的功能,用户每请求一次Servlet,便使访问次数times加1
3)获取ServletContext,通过它的功能记住上一次访问后的次数

2.57编写一个Servlet,获取一下配置文件所设置的字符编码集

3.MVC设计模式案例

五、三层架构

1.什么是三层

1.1三层架构包括哪三层?每层的作用是什么?三层中的每一层,可以分别用哪些技术来实现?

1.2简述MVC模式和三层架构的区别和联系

1.3简述三层中各层之间的关系

1.4使用三层继续优化“部门管理系统”

1.5请描述使用分层模式的优缺点

.使用三层架构开发图书管理系统,要求进行非空、重名、日期格式等校验,具体功能如下

1.6首页为图书列表

1.7单击书名后,进入修改页面

1.8单击“新增图书”按钮后,进入新增页面,新增完毕后跳回“图书列表页面”,如图所示,要求哎刷新时防止表单重复提交

1.9单击“借阅”按钮后,新增借阅信息

1.10单击图书列表页的“归还”按钮后,显示借阅列表;再单击借阅列表页的“归还”按钮后,可以归还图书,并提示用户交费

2.三层间的关系

3.优化三层架构

六、分页与上传下载

1.分页显示

2.文件上传

2.1实现“文件重命名”功能

2.2实现"复制目录"功能

2.3实现“按类型查找文件”功能

2.4实现“替换文件内容”功能

2.5实现“创建/删除目录”功能

2.6实现“设置文件属性“功能

2.7实现“网站计数器”功能,要求将访问人数保存在类路径下的TXT文件中

2.8emp.txt文件中的保存着员工的信息(一条员工信息保存在一行,每行中的信息用空格隔开)。现要求将emp.txt中的员工信息保存在数据库中

2.9实现“备份数据库文件”功能

2.10读取数据库中以二进制形式存储的图片信息(图片名、图片类型、图片),如图所示

2.11将图片路径存储到数据库中

2.12实现“文件加密与解密”

要求加密后的文件必须先解密再读取,否则显示为乱码

2.13实现“XML解析”功能

2.14实现“文件分割”功能,要求分割后的文件格式为“*.part数字”

2.15实现“分割后的文件合并”

2.16使用StreamTokenizer统计文件中的数字总数、汉字总数、其他标记数总字符数等

2.17“将内存中的对象持久化到文件,称为对象的序列化;将文件中的对象恢复到内存中,称为对象的反序列化”。要求实现文件的序列化与反序列化

2.18实现“上传文件到Web服务器”功能,要求限制上传大小为2MB、文件格式必须为图片(png、gif、jepg等)

2.19实现“上传文件到数据库服务器”

2.20实现“批量上传文件到Web服务器“功能,其中”-“可以删除当前行元素、”+“可以新增一个上传按钮

2.21不适用任何组件(如fileUpload等)实现文件上传功能

2.22实现“下载Web服务器中的文件”功能

2.23实现”下载数据库中的文件“功能

2.24实现“防盗链下载”功能:只能从当前项目的“下载”功能下载文件(例如,将下载地址复制到了其他项目,并提供了“下载”功能),否则提示“请登录www.xxx.com进行下载”。

2.25显示下载列表,并隐藏下载文件的真是路径;当鼠标悬浮在下载文件上时,浏览器的状态栏只显示虚拟路径,而非真实路径

2.26实现“批量重命名”功能,#代表文件顺序

2.27实现“批量移动”功能:将一个目录中的所有文件(含子目录)移动到另一个目录中

2.28实现“批量删除指定格式的文件”功能

2.29创建磁盘的索引文件:保存磁盘中所有文件的路径

2.30根据上题创建的索引文件,遍历磁盘中的所有文件(显示所有文件的文件名、文件大小、修改时间)

2.31实现“分类存储文件”功能:将相同格式的文件存储在同一个目录下,格式名即为文件名,分类后的目录结构如图

2.32实现“文件搜索”功能

七、连接池与DbUtils类库

1.数据库连接池

2.commons-dbutils工具类库

2.1分页类包含类的哪些属性?

2.2什么是JNDI?请简要描述JNDI的作用

2.3写出基于Oracle的分页SQL语句

2.4通过JSP及Servlet实现上传照片的功能

2.5在Tomcat中,如何配置和使用数据库连接池?

2.6请描述什么是数据库连接池和使用数据库连接池的好处

2.7什么是数据源?请介绍使用数据源的好处

2.8你都了解哪些数据源?各自的特点是什么?

2.9请简要描述如何使用连接池及分页继续优化“部门管理系统”

八、EL和JSTL

1.EL表达式

1.1在使用EL表达式时,如果不显示指定对象的作用域范围,则系统会按照什么顺序依次查找?

1.2使用JSTL标签之前,需要进行哪些准备工作?

1.3标签有哪几种?应如何使用各种标签

1.4请介绍JSTL中的for Each迭代标签有哪些属性,并简要描述各属性的含义

1.5使用EL和JSTL继续优化第7章练习题中的“部门管理系统”

1.6使用JSTL中生成“网站计数器”

1.7在JSP中生成1-3随机数,并通过JSTL判断

1:未中将;2:再来一次;3:中奖一元话费

1.8请介绍JSTL中迭代标签有哪些属性,并简要描述各个属性的含义

2.JSTL标签及核心标签库

九、自定义标签

1.自定义标签简介

通过传统方式和简单方式两种自定义标签实现以下功能?

1.1版权信息的输出:在JSP中,通过<lq:copyright/>输出预先定义的版权内容

1.2浏览图片:在JSP中,通过<lq:img name="图片路径" />显示指定的图片

1.3文件下载:在JSP中,通过<lq:download name="文件路径" />实现下载功能

1.4数据查询:在JSP中,通过<lq:download colsTitle="列名" querySql="查询SQL" />实现查询功能,查询结果如图所示

1.5生成随机数:在JSP中,通过<lq:random length="长度" />生成随机数

1.6生成导航菜单:在JSP中,通过<lq:menu list="标题集合" />生成导航

2.传统标签

3.简单标签

十、AJAX

1.AJAX的作用

2.使用 JavaScript实现AJAX

简答题:

2.1什么是AJAX?请描述AJAX的技术原理和好处

2.2哪些情况需要使用AJAX?

2.3用JavaScript实现AJAX,需要使用到哪个对象?改对象有哪些常用属性和方法?

2.4请描述jQuery中load()方法的三个回调函数参数分别代表的含义

编程题:

2.5使用jQuery方式的AJAX继续优化“部门管理系统”

2.6实现“考试计时并自动提交试卷”功能:用户进入考试页面后开始倒计时,时间结束后自动提交试卷

2.7实现“自动保存草稿”功能:编辑文本时,每隔三分钟自动保存一次草稿

2.8监测用户名是否已存在:用户输入完用户名时,自动检测用户名是否存在,若存在则给出提示

2.9使用JSP+AJAX+Servlet实现登录功能

2.10实现“带进度条的文件上传”功能

2.11实现“自动匹配关键词”功能:在搜索框中输入部分文字时,下拉框会自动进行关键字匹配,如图。其中,关键词在info表中的title和desc字段里进行匹配

2.12实现“无刷新翻页”功能,要求在翻页时页面无刷新

2.13实现“消息气泡”功能:如果有新增未读消息,则在页面右下角自动弹出

2.14实现“实时天气预报”功能:每隔10分钟从数据库中查询一次最新的天气情况,并通过JSP显示给客户

2.15实现“发送聊天记录”功能:输入聊天内容,单击“发送”按钮后聊天内容弄显示在聊天列表中

2.16实现“级联下拉列表”功能,即相邻的两个下拉列表是父子关系,当改变父下拉列表的值时,子下拉列表的值会随之改变。要求:1)实现省份、城市、区县之间的级联列表;2)省份等数据存放在XML文件中

2.17从一张区域表中读取数据,通过AJAX以树形的形式展现在前台页面。用鼠标单击“所有区域”时,显示所有的片区;单击某一片区时,显示该片区下的省市;点击省份时,显示该省份下的所有市……

3.使 jQuery实现AJAX

4.JSON

5.验证码

十一、过滤器与监听器

1.过滤器

简答题:

1.2简述过滤器的基本功能

1.3简述装饰设计模式的特点

1.4简述Filter实现页面静态化的优点

1.5简述什么是过滤器链

1.6简述配置Filter的元素的作用

1.7列举Filter类中用于获取web.xml文件初始化信息的方法,并分别简述这些方法的作用

1.8简述FilterConfig的getFilterName方法的作用

1.9Servlet、过滤器、拦截器、监听器的区别是什么?

编程题:

1.10判断用户是否在线:登录时,如果某用户正在访问,则提示“该用户已经在线”

1.11实时统计在线人数:后台管理员可以实时查看网站的在线人数

1.12开发“服务器端免登陆监听器”;如果某个IP已经登录过一次,则以后访问就不必再登录

1.13开发“权限验证过滤器”:不同角色的用户有不同的操作权限。如果某一操作违反了用户的角色权限,则提示“当前用户无此操作权限”

1.14请按照以下要求设计一个Filter链,当访问MyServlet程序时,可以顺序输出如下结果

Hello MyFilter

1.15Before

Hello MyFilter

1.16Before

Hello MyServlet
Hello MyFilter02After
Hello MyFilter01After
其中,第一个Filter中输出“Hello MyFilter

1.17Before"及”Hello MyFilter

1.18After“,第二个Filter中输出”Hello MyFilter

1.19Before“及”Hello MyFilter

1.20After“,Servlet中输出”Hello MyServlet“,要求使用Servlet2.5和Servlet3.0两种方式实现

1.21开发“广告弹窗过滤器”;单击网站中的任何超链接时,都会弹出一个广告页面

1.22开发“防盗链过滤器”:若用户没有通过登录页面访问系统,而是直接通过URL访问系统中的某一资源,则给出防盗链提示

1.23用过滤器实现“操作日志”:记录每次访问的用户IP、访问的资源名、访问时间

1.24开发“敏感词语过滤器”:先在一个TXT文件中输入敏感词语(如“混蛋”等不文明词语),多个词语之间用逗号隔开;再开发一个过滤器,如果用户输入的内容中包含了这些敏感字符,则将敏感词替换为*。例如,用户输入“是个混蛋”,则过滤为“是个**”。

1.25开发“身份验证过滤器”:每次访问项目中的资源时,都会先验证用户是否已经登录,如果没有登录,则跳转到登录页面,并提示“请先登录”

1.26开发“字符编码过滤器”:将每次post方式的请求及响应的编码设置为UTF-8

思考:如何统一get方式的编码格式?

1.27利用过滤器开发“网站计数器”,用于统计网站的访问次数

思考:如何解决并发冲突?

1.28开发“禁止缓存过滤器”:浏览网页时不自动缓存,确保数据的实时性

1.29开发“静态页面生成器(过滤器)”:动态页面中需要数据传递,因此会降低访问性能。利用过滤器,将动态页面(.jsp)转为静态页面(.html)并生成

1.30设计一个自动登录的Filter程序

1)已知在客户端保存好了名为lanqiao的cookie用户信息,其形式为usernamepassword,则用户名与密码之间用""分隔
2)编写LoginFilter.java的过滤器,实现自动登录功能

2.监听器

十二、调试

1.使用 Eclipse调试

1.1使用Eclipse调试的快捷键有哪些?

1.2使用Firebug调试的快捷键有哪些?

1.3如何在本地调试远程项目中的程序?

1.4在Eclipse调试模式中,快捷键F5和F6有什么区别?

1.5请下载Chome浏览器,并学习如何在Chrome中调试

1.6调试和测试有什么区别?二者分别在什么场合下应用?

2.使用 Firebug调试

十三、搭建集群服务器与分布式数据库环境

1.集群服务器

1.1如何搭建Tomcat集群服务器环境?

1.2集群服务器中有两个Tomcat服务器A和B,能否rag接收到的请求中,60%由服务器A处理,其余40%由服务器B处理?

1.3集群有什么特点?

1.4如何搭建分布式数据库

1.5什么是数据库链路?

1.6请搭建一个“集群服务器+分布式数据库”环境,要求

1)数据存放在三个不同的数据库中
2)服务器是由三个Tomcat搭建的集群

2.分布式数据库

发表评论

电子邮件地址不会被公开。 必填项已用*标注