目录
GDPUJavaWeb程序设计复习,习题集,重点知识总结,一篇就够了。
实验复习
JavaWeb代码复习,在专栏也可查阅。留意一下登陆界面的操作及mvc的那些重复的代码。大小写要注意。一般来说很多方法都是两个单词拼的,后一个单词的首字母要大写,如doGet、getParameter等。
代码模板
这里的注释用//
jsp部分
1.表单、常用的登陆界面
<form action="某个servlet路径" method="post"> //不写method就是get,不写action就是转到该文件 <input type="text" name="id">
<input type="text" name="name">
<input type="submit" value="查询">//表单提交
</form>
2.请求参数显示在界面上、会话获取、jsp的使用
<%= request.getParameter("username") %>
<%
String m=(String) session.getAttribute("message"); //返回类型object类,记得要转换类型
out.print(m);
%>
3.javabean中标签
<jsp:setProperty property = “属性名称” name="bean对象名" value="常量"/ >
<jsp:setProperty property = “属性名称” name="bean对象名" param="参数名"/ >
<jsp:setProperty property = “*” name="bean对象名" / >
<jsp:getProperty property="属性名称" name="bean对象名"/>
<jsp:useBean id="bean对象名" class="实例化bean对象的类名" scope="page|request|session、application"> </jsp:useBean>
<jsp:useBean id="user" class="com.beans.UserBean" scope="session"/>
<jsp:setProperty name="user" property="*"/>
<jsp:getProperty name="user" property="username"/>
4.EL与JSTL
<c:forEach items="${books}" var="book">
<c:if test="${book.bookPrice > 50}"></c:if>${book.bookName}${book.bookPrice}
</c:forEach>
servlet部分
//注解指向响应路径,对应jsp的action,可以跟类名不同,别弄混
@WebServlet("/loginServlet")
public class LoginServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //看清楚题目是get还是post
response.setContentType("text/html;charset=utf-8");
//获取参数跟会话很重要,注意request.getParameter()要找准表单的name属性
//注:
//getParameter(String name) 方法获取请求参数,返回值是字符串类型。
//如果需要其他类型(如整数或浮点数),需要手动转换。
//setAttribute(String name, Object value) 可以存储任何类型的对象。
//getAttribute(String name) 返回一个 Object 类型,需要进行类型转换。
String username = request.getParameter("username");
double d = Double.parseDouble(request.getParameter("edge"));
HttpSession session = request.getSession();//这句不能忽略,servlet中要实例化这个对象才能用
session.setAttribute("message", "123");
session().setAttribute("user", user);//可以存实例化的对象类型
request.getSession().setAttribute("user", user);
//请求转发forward跟重定向sendRedirect是servlet的大重点
if (username != null && password != null && username.equals(password)) {
request.getRequestDispatcher("loginSuccess.jsp" ).forward(request, response);
} else {
response.sendRedirect("loginFail.jsp");
}
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //get跟post的重新调用
doGet(request, response);
}
JavaBean部分
1.jdbc数据库访问
加载驱动程序:Class.forName
建立连接对象:Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/dbjsp","root","root");
创建语句对象:String sql = "SELECT * FROM student WHERE id=? and name like ?";
PreparedStatement pst = conn.prepareStatement(sql);
pst.setString(1, studentId );
pst.setString(2, "%"+stuname+"%");
ResultSet rs = pst.executeQuery();
获取结果集:while(rs.next()){ stuid=rs.getInt("stu_id");System.out.println(stuid); }
关闭建立的对象
try {
if (rs != null) {
rs.close();
}
if (statement != null) {
statement.close();
}
if (conn != null) {
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
2.VO
//公共类,私有变量、读写
public class Book {
private int bookId;
public Book(int bookId) {
this.bookId = bookId;
}
public int getBookId() {
return bookId;
}
public void setBookId(int bookId) {
this.bookId = bookId;
}
课后巩固习题
1
【单选题】下列说法正确的是( D ) 错的把B/S跟C/S换一下即可
A、在B/S结构中,结果应用软件发生了改变,就必须通知所有的客户端重新安装
B、在C/S结构中,即使应用软件发生了改变,也不用通知客户机升级该软件
C、在C/S结构中,客户机上不需要安装应用软件,只需要使用浏览器即可
D、B/S结构相较于C/S结构服务器负担比较重,快速响应不如C/S结构
答案解析: C/S是胖客户端,B/S是瘦客户端
网络应用程序有C/S(客户机/服务器)与B/S(浏览器/服务器)两种结构,例,QQ就是C/S结构。
1、C/S分为客户机和服务器两层,将应用软件安装在客户机端,通过网络与服务器端相互通信,如果应用软件改动了,必须通知所有的客户端重新安装;
2、B/S也分为客户机和服务器两层,但是客户机上不用安装软件,只需要安装浏览器即可,如,百度查询就是B/S结构应用形式之一。
2
【单选题】
Tomcat安装目录中bin文件夹下存放的文件为( D )
A、系统日志文件
B、Tomcat系统的一些配置文件
C、网站资源文件
D、支持Tomcat运行的常用.exe文件
答案解析:
Tomcat安装目录中重要文件夹或文件内容
(1)bin:支持Tomcat运行的常用.exe文件
(2)conf:Tomcat系统的一些配置文件
(3)logs:系统日志文件
(4)webapps:网站资源文件
3
【单选题】
JSP的全称为( C )
A、Java Script Pages
B、Java Script Page
C、Java Server Pages
D、Java Server Programme
答案解析:
JSP(Java Server Pages)
4
【单选题】
下面关于JSP的说法错误的是( B )
A、JSP是由Sun公司提出的、其他许多公司一起参与建立的一种动态网页技术标准
B、JSP开发的Web应用不能跨平台
C、JSP具备了Java技术面向对象、与平台无关性且安全可靠的优点
D、利用JSP可以很方便地在页面中生成动态的内容
答案解析:
JSP是由Sun公司提出的、其他许多公司一起参与建立的一种动态网页技术标准。和PHP一样,使用JSP开发的Web应用也是跨平台的。JSP还支持自定义标签。JSP具备了Java技术面向对象、与平台无关性且安全可靠的优点。
5
【单选题】
关于Web项目的目录结构,下面说法错误的是( A )
A、web.xml是Web应用的配置文件,可以随意修改
B、lib文件夹中包含了Web应用所需要的.jar和.zip文件
C、META-INF是系统自动生成、用于存放系统描述信息的文件夹
D、WebRoot目录是Web应用的顶层目录,也称为文档的根目录
答案解析:
Web项目的目录结构:
1、src目录:用来存放Java源文件
2、WebRoot目录:Web项目的顶层目录,又称为文档根目录,包括以下部分
(1)META-INF目录:系统自动生成,存放系统描述信息,一般情况使用较少
(2)WEB-INF目录:存在于文档根目录,该目录不能被引用,即该目录下的文件无法对外发布,由以下几部分组成
①lib目录:包含Web项目所需的.jar或.zip文件,例,数据库驱动程序
②web.xml:Web项目的配置文件,不能删除或随意改动
③classes目录:包含src目录下的Java源文件所编译的.class文件
(3)其他目录:网站中的一些用户文件,包括下列文件
①静态文件:包括所有的HTML网页、CSS文件、图像文件等,按功能形式分类;
②JSP文件:
6
【单选题】Tomcat服务器运行的端口号默认为( B )。
A、8000
B、8080
C、8800
D、8081
7
【单选题】Tomcat安装目录中( B )文件夹中的内容是网站资源文件。
A、src
B、webapps
C、webroot
D、conf
8
【单选题】在Web项目的目录结构中,( A )目录用来存放Java源文件
A、src
B、webroot
C、web-inf
D、lib
9
【单选题】
下列选项中,启动Tomcat的命令startup.bat,放在哪个目录中(A)
A、bin
B、lib
C、webapps
D、work
答案解析:
URL(Uniform Resource Locator):统一资源定位符
1、URL即网址,是唯一能够识别Internet上具体计算机、目录、文件位置的命名约定。
2、URL由以下3部分组成:
(1)协议:例,http
(2)主机IP地址(有时含端口号):例:localhost:8080
(3)主机资源的具体地址:例,目录和文件名等
3、说明:第1部分与第2部分用“://”隔开,第2部分与第3部分用“/"隔开。
10
【单选题】
在Web程序结构中,浏览器端与应用服务器端采用请求/响应模式进行交互的过程为( A )
(1)用户输入 (2)访问数据库 (3)发送响应
(4)发送请求 (5)返回结果 (6)显示
A、(1)(4)(2)(5)(3)(6)
B、(1)(2)(3)(4)(5)(6)
C、(1)(4)(2)(3)(5)(6)
D、 (4)(1)(2)(5)(6)(3)
1
【单选题】
JSP页面在第一次运行的时候被JSP引擎转换为(D)。
A、CSS文件
B、JSP文件
C、HTML文件
D、Java文件
2
【单选题】
下列关于JSP表达式的说法错误的是( B )。
A、JSP表达式的作用是将其里面的内容所运算的结果输出到客户端
B、在JSP表达式中能用“;”结束
C、在 JSP 表达式中不能出现多条语句
D、JSP表达式中的内容一定是字符串类型,或者能通过toString()函数转换成字符串的形式
注意这里有个“一定”是对的,不要选这个
答案解析:
JSP 表达式的作用是定义 JSP 的一些输出。表达式基本语法如下所示:
<%=变量/返回值/表达式%>
JSP 表达式的作用:将其里面内容所运算的结果输出到客户端;
例:“<%=msg%>”是JSP表达式,即将msg内容输出给客户端。
等价于“<%out.print(msg);%>”。
使用 JSP 表达式,需要注意几个细节:
1、JSP 表达式中不能用";"结束
2、在 JSP 表达式中不能出现多条语句
3、JSP表达式的内容一定是字符串类型,或者能通过 toString()函数转换成字符串的形式
3
【单选题】
使用( A )属性可以设置JSP的MIME类型和可选字符编码。
A、contentType
B、Type
C、pageEncoding
D、charset
4
【单选题】
用于将请求跳转到另一个页面的JSP动作是( C )。
A、<jsp:include>
B、<isp:plugin>
C、<jsp:forward> 背好这个单词是跳转
D、<jsp:useBean>
答案解析:
jsp:forward:可以实现跳转。
<jsp:forward page="文件名"/> 显然,page属性就是指定要跳转到的目标文件。当该forward动作被执行后,当前的页面将不再被执行,而是去执行指定的目标页面。
5
【单选题】不是JSP运行必须的是( D )
A、操作系统
B、Java JDK
C、支持Jsp的Web服务器
D、数据库
6
【判断题】
JSP页面中的变量和方法声明(Declaration)、表达式(Expression)和Java程序片(Scriptlet)等都是JSP元素。
对
7
【判断题】
在“<%!”和“%>”标记之间声明的Java的方法在整个页面内有效。
对
8
【判断题】
在Java程序片中可以使用Java语言的注释方法,其注释的内容会发送到客户端。
错
1
【单选题】下列关于表单的说法不正确的是( A )。
A、表单的method属性默认是post 应该是get
B、在表单中一般有一个按钮负责提交
C、单击“提交”按钮,表单元素中的内容会提交给服务器端
D、在表单中可以输入一些内容,这些输入功能由表单元素提供
答案解析:
表单是用户和服务器之间进行信息交互的重要手段,有了表单,JSP程序才可以更加丰富多彩。 表单是一种可以由用户输入,并提交给服务器端的一个图形界面。
2
【单选题】有下面两段代码
<form action="page2.jsp">
请您输入账号:<input name="account" type="text"><br>
请您输入密码:<input name="password" type="password"><br>
<input type="submit" value="登录">
</form>
<%
//获得表单中name=account的表单元素中输入的值,赋值给str
String str1=request.getParameter("account");
String str2=request.getParameter("zhanghu");
%>
若不输入数据,直接单击“登录”按钮,则str1和str2的值分别是( D )。
A、null、null
B、null
C、""、""
D、""、null
答案解析:
表单是提交给服务器的,如何确定到底提交给哪一个界面?用<form>中的action属性确定。
如:<form action="page.jsp">
请您输入账号:<input name="account" type="text"><BR>
请您输入密码:<input name="password" type="password"><BR>
<input type="submit" value="登录">
</form> 表示该表单中输入的内容,提交给page.jsp去运行。
page.jsp如何获取提交过来的值?用request对象。
如:<%
//获得表单中name=account的表单元素中输入的值,赋值给str
String str = request.getParameter("account");
%>
注意:如果表单中没有name=account的表单元素,str为null;如果在表单元素account中没有输入任何内容就提交,str为""。
3
【单选题】要想在浏览器的地址栏上的URL中隐藏传输的参数,需要将<form>标签的method属性值设置为(B)。
A、hidden
B、post
C、get
D、submit
答案解析:
A选项“hidden”可能有一定干扰性,但这里问的是method.input 有一type="hidden"的选项,它是隐藏在网页中的一个表单元素,并不在网页中显示出来。这就是实现隐藏表单的方法。
4
【单选题】下列说法中错误的是( C )。
A、除了复选框、多选列表框等,其他一些表单元素也可以设置为同名
B、获取同名表单元素中数据的方法为request.getParameterValues(arg)
C、用循环输出request.getParameterValues(arg)得到的同名表单元素中数据,起始值下标从1开始 下标应该从0开始
D、虽然表单传值的方法不是绝对安全的,但由于其简单性和平台支持的多样性,很多程序还是用表单传值
答案解析:
捆绑表单元素,是指多个同名表单元素的值送给服务器端时,是一个捆绑的数组。这种情况下的表单元素主要有:复选框、多选列表框、其他同名表单元素等。
具体获得方法和一般表单元素类似,但在获取数据时,利用request.getParameterValues("表单元素名")方法来获得字符串数组。
多个同名文本框是如何存储在获取到的数组里的?以文本框在源代码中出现的顺序,从数组的第0位开始向后放置。
5
【单选题】
在表单提交的过程中,不能解决中文乱码间题的方案为( C )。
A、将获取到的数据转换成gb2312的格式
B、在获取数据之前先修改request的编码方式
C、把文件头上的字符集设置为中文字符集
D、利用过滤器对整个Web应用进行统一的编码过滤
答案解析:
如果使用的是 Tomcat 服务器,在提交过程中,如果提交的内容中含有中文,经常会出现中文乱码问题。
方法:没有把文件头上的字符集设置为中文字符集。一定要保证文件头上写明:
<%@ page language="java" pageEncoding="gb2312"%>
或 <%@ page language="java" contentType="text/html; charset=gb2312"%>
提交过程中显示乱码,有3种方法解决这个问题:
(1)将其转成gb2312格式
如:变量(字符串 )= new String(变量(字符串 ).getBytes("ISO-8859-1"),"gb2312")
(2)直接修改request的编码,将request的编码修改为支持中文的编码
整个页面中的请求,都可以自动转为中文 request.setCharacterEncoding("gb2312")
(3)利用过滤器
1
【单选题】下列关于JDBC技术的说法错误的是( D )。
A、JDBC相关的API存放在java.sql包中
B、在Java技术系列中,提供访问数据库的API叫作JDBC
C、JDBC提供了一系列的API,让Java语言编写的代码连接数据库,对数据库的数据进行添加、删除、修改和查询
D、JDBC可以适用于任何语言
2
【单选题】下列关于ResultSet类的说法错误的是( B )。
A、游标是ResultSet中的一个可以移动的指针,它指向一行数据,初始时指向第一行的前一行
B、当游标指向某一行,可以使用ResultSet的getString(0)方法获取这一行的第一列数据。
应该是 getString(1)
C、当游标指向某一行时可以通过ResultSet的getxXX("列名")方法得到这一行的某个数据
D、ResultSetn的next()方法的返回值是一个布尔类型的值
3
【单选题】在Connection中设置executeUpdate不要自动提交的代码是( A )。
A、connection.setAutoCommit(false) 会翻译就行
B、connection.setAutoCommit(true)
C、connection.rollback()
D、connection.close()
4
【单选题】连接到本机MySQL数据库上的SCHOOL数据库的代码为( A ),用户名为"root",密码为"manager"。
A、
Connection conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/SCHOOL","root","manager);
B、
Connection conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/SCHOOL");
C、
Connection conn=DriverManager.getConnection("jdbc:mysql://localhost:1433/SCHOOL");
D、
Connection conn=DriverManager.getConnection("jdbc:mysql://localhost:1433/SCHOOL","root","manager);
5
【单选题】
查询结果集ResultSet对象是以统一的行列形式组织数据的,执行ResultSet rs = stmt.executeQuery ("select bid,name,author,publish,price from book");语句,如果有满足条件的记录,则得到的结果集rs的列数为( B )
A、4
B、5 数一下有多少个select的变量
C、6
D、不确定
6
【单选题】
下面的代码是连接哪个数据库的驱动加载片段( B )
try{
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
}
catch(Exception e){
out.print(e.toString());
}
A、Oracle
B、Sql Server
C、MySql
D、不确定
1
【单选题】
下列关于内置对象的说法错误的是( D )
A、在所有的JSP页面中,直接调用内置对象都是合法的
B、内置对象是通过Web容器来实现和管理的
C、内置对象是自动载入的,因此不需要直接实例化
D、在JSP规范中定义了4种内置对象 九大内置对象,四大作用域
2
【单选题】
下列内置对象中用来表示页面上发生异常的是( B )
A、application
B、exception
C、page
D、config
3
【单选题】下列关于<jsp:forward>和response的sendRedirect方法进行重定向的说法中
错误的是( B )。
A、使用forward方法跳转,客户端浏览器的地址不变;而redirect方法跳转,地址栏会变
B、forward转发的页以及转发到的目标页面不能共享request里面的数据,但redirect方法可以
forward可以共享,redirect不能
C、与redirect方法相比,forward方法的效率较高
D、forward方法只能在同一个Web应用程序内的资源之间转发请求
4
【单选题】下面哪项不是Jsp内置对象(D)
A、request
B、session
C、config
D、cookie
5
【单选题】下列关于Cookie的说法中正确的是( C )。
A、Cookie是绝对安全的,可以放心使用
B、Cookie帮助服务器端保存多个状态信息,使用服务器端专门分配存储资源
C、Cookie可以持久地保持一些和客户相关的信息
D、关闭客户端计算机后,重新打开就找不到Cookie文件了
点浏览器删除记录那里就大概知道是什么了
1
【单选题】下列说法中正确的是( A )。
A、session.setAttribute(String name, Object obj)中的第2个参数可以是自定义类型
B、session.getAttribute(String name)的返回值是Objeet类型,当用户从session中取出内容时不需要进行强制转换
C、session.removeAttribute(String name)可以将session中的所有内容删除
D、session中的数据不能被同一个客户在网站的一次会话过程中共享
2
【单选题】在服务器启动后就会自动创建application对象,这个对象会一直保存,直到服务器关闭为止。该说法(A)。
A、正确
B、错误
3
【单选题】下列关于application 的说法正确的是( D )。
A、对于不同的客户端来说,服务器端的application对象是不同的
B、application对应的类是javax.servlet.ServletApplication 应该是javax.servlet.ServletContext
C、将内容放入application用application.getAttribute(String name)
D、显示某个页面被访问的次数可以用application对象
4
【单选题】
将一个Student类对象student存到名为studobj的请求作用域中,下面代码正确的是( B )。
A、request.addAttribute("student",studobj)
B、request.setAttribute("studobj ",student)
C、request.setAttribute("student",studobj)
D、request.getAttribute("studobj ",student)
5
【单选题】( B )对象提供了对JSP页面中所有对象及命名空间的访问。
A、page
B、pageContext
C、config
D、exception
1
【单选题】如果是整个应用程序共享的数据,则适合放在( B )中成为属性。
A、ServletConfig
B、ServletContext
C、ServletRequest
D、Session
2
【单选题】filter的实现接口是( C )。
A、javax.servlet
B、java.http
C、javax.servlet.Filter
D、javax.Filter
3
【单选题】
在web.xml中预先对Servlet进行初始化设置的代码如下:
<init-param>
<param-name>myWord</param–nane>
<param-value>hello</param-value>
</init-param>
则以下获取初始化参数的语句中正确的是( D )。
A、StringmyWord=getInit("myWorld");
B、StringmyWord=getInit("myWord");
C、StringmyWord=getInitParameter("hello");
D、StringmyWord=getInitParameter("myWord");
4
【单选题】在Servlet中,HttpServletResponse的( C )方法用来把一个HTTP请求重定向到另外的URL。
A、sendURL
B、redirectURL()
C、sendRedirect() 记住这个单词
D、redirectResponse()
5
【单选题】
给定一个Servlet的代码片段如下:
public void doGet(HttpServletRequest request,HttpServletResponse response) throws
ServletException, I0Exception{
_____________
out.println("hikitty!");
out.close();
}
运行该Servlet时输出“hikitty!”,则应在此Servlet的下画线处填人的代码是( A )。
A、PrintWriter out=response.getWriter();
B、PrintWriter out=request.getWriter();
C、OutputStream out=response.getOutputStream();
D、OutputStream out=request.getWriter();
6
【单选题】
给定一个Servlet程序的代码片段如下:
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException{
request.getSession().getAttribute("A"); //第2行
}
假定第2行返回的对象引用不是null,那么这个对象存储在( B )范围中。
A、page
B、session
C、request
D、application
7
【单选题】
在web.xml中定义了以下内容:
<servlet>
<servlet-name>Goodbye</servlet-name>
<servlet-class>cc.openhome.LogutServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>GoodBye</servlet–name>
<url-pattern>/goodbye</url-pattern>
</servlet-mapping>
下列可以正确访问该ServletURL的是( D )。
A、/goodbye,servlet
B、/LoguotServlet
C、/Goodbye
D、/goodbye
1
【单选题】下列关于JavaBean的说法正确的是( C )。
A、获取javabean的属性可以用<jsp:setProperty>动作
B、被引用的Bean文件的扩展名为.jsp
C、JavaBean的属性必须声明为private,方法必须声明为public JavaBean规范
D、Bean文件放在任何目录下都可以被引用
2
【单选题】JavaBean可以通过相关jsp动作指令进行调用。下面( D )不是JavaBean可以使用的jsp动作指令。
A、<jsp:useBean>
B、<jsp:setProperty>
C、<jsp:getProperty>
D、<jsp:setParameter>
3
【单选题】JSP页面通过( A )识别Bean对象,可以在程序段中通过xx.method形式调用Bean中的set和get方法。
A、id
B、class
C、name
D、calssname
4
【单选题】( D )作用范围将使Bean对象保存在服务器的内存空间中,在服务器关闭后被移除。
A、page
B、request
C、session
D、application
5
【单选题】对于( A )作用范围的Bean,当客户离开这个页面时JSP引擎取消为客户的该页面分配的Bean,释放他所占的内存空间。
A、page
B、request
C、session
D、application
6
【单选题】关于JavaBean,下列叙述中不正确的是( C )。
A、JavaBean的类必须是具体的和公共的,并且具有无参数的构造器
B、JavaBean的类属性是私有的,要通过公共方法进行访问
C、JavaBean和Servlet一样,在使用之前必须在项目的web.xml中注册
D、JavaBean属性和表单控件名称能很好地耦合,得到表单提交的参数
7
【单选题】
以下DAO的组成部分( B )提供了与数据表一一对应的java类?
A、数据库连接类
B、VO
C、DAO接口
D、DAO实现类
8
【单选题】给定TheBean类,假设还没有创建TheBean类的实例,以下( C )JSP标准动语句能创建这个Bean的一个新实例,并把它存储在请求作用域。
A、<jsp:useBean name="myBean" type="com.example.TheBean"/>
B、<jsp:takeBean name="myBean" type="com.example.TheBean"/>
C、<jsp:useBean id="myBean" class="com.example.TheBean" scope="request/>
D、<isp:takeBean id="myBean" class="com,example.TheBean" scope="request/>
1
【单选题】JSP Model2开发的系统中,实现控制器的是( C )
A、JSP
B、JavaBean
C、Servlet
D、HTML
2
【单选题】MVC不是一种( A )
A、编程语言
B、开发架构
C、设计模式
3
【单选题】下面关于MVC设计模式的特点描述中,错误的是( D )
A、有利于开发中的分工
B、使程序结构的耦合性降低
C、有利于组件的重用
D、只适用于Java Web应用程序的开发
4
【判断题】MVC设计模式就是指JSP Model2模型
对
5
【判断题】MVC与Web软件开发领域的三层体系结构是一回事
错
1
【单选题】以下关于EL和JSTL的说法错误的是( D )。
A、EL是一种简洁的数据访问语言
B、EL表达式的基本形式为${var}
C、JSTL的全称是JavaServerPagesStandardTagLibrary
D、JSTL只有Core核心标签库
2
【单选题】
下面关于EL表达式${(1==2)?3:4}的运算结果,正确的是(D)
A、true
B、false
C、3
D、4
3
【单选题】下面有关EL中“.”和“[]”两种存取运算符的说法不正确的是( C )。
A、两者在某些情况下是等效的
B、“[]”运算符主要用来访问数组、列表或其他集合
C、如果要动态取值,两者都可以实现
D、当要存取的属性名称中包含一些特殊字符时,例如,或?等并非字母或数字的符号,就一定要使用“[]”
4
【单选题】
在以下这段代码中,页面运行后出现的语句是( B )。
<%@ pagecontentType="text/html;charset=gb2312"%>
<html>
<body>
<%
application.setAttribute("Msg","WelcomeApplication!");
pageContext.setAttribute("Msg","Welcomepage!");
session.setAttribute("Msg","WelcomeSession!");
%>
${Msg}<br>
</body>
</html>
A、WelcomeApplication!
B、Welcomepage! page当前页面有效,优先级高,先查找
C、WelcomeSession!
D、Welcome!
5
【单选题】下面选项中,与request.getAttribute(“p”);等效的EL表达式是(D)
A、$<request.p>
B、$[requestScope.p]
C、$(request.p)
D、${requestScope.p} 认准符号
6
【单选题】
在下面的代码中,若想使输出结果为“好好学习”(斜体),应该填入( A )。
<%@ page language="java"contentType="text/html;charset=gb2312"%>
<%@taglibprefix=“c"uri="http://java.sun.com/jsp/jstl/core"%>
<html>
<body>
<%session.setAttribute("msg","<i>好好学习</i>"); %>
___________
</body>
</html>
A、<c:out value="$(msg)" escapeXml="false"></c:out><br>
B、<c:out value="$(msg)"></c:out><br>
C、<c:out value="$(msg)" escapeXml="true"></c:out><br>
D、以上都不正确
7
【单选题】
以下代码的输出为(B)
<% session.setAttribute("msg", "<B>这是<c:out>示例</B>");%>
<c:out value="${msg}" escapeXml="false"></c:out>
A、<B>这是<c:out>示例</B> escapeXml不写,默认是true,即忽略xml解析不编译,原样输出
B、这是示例 当escapeXml为false,即用到解析,标签可编译,输出文本
C、这是<c:out>示例
D、<B>这是示例</B>
1
【单选题】
以下关于AJAX优势和劣势的描述,说法错误的是( D )。
A、改善表单验证方式,不再需要打开新页面,也不再需要将整个页面数据提交
B、应用仅由少量页面组成,大部分交互在页面之内完成,不需要切换整个页面
C、按需获取数据,每次只从服务器端获取需要的数据
D、AJAX可以取代传统的Web应用开发
2
【单选题】
使用AJAX技术编写Web应用程序,其使用( C )格式实现数据的传递。
A、HTML
B、XHTML
C、XML
D、TXT
4
【单选题】
在创建请求的代码片段xmlhttp.open("get","info.jsp?a=1")中,传递的参数值为( D )。
A、get
B、info.jsp
C、a
D、1
1
【单选题】下列对跨站脚本攻击的解释最准确的一项是( D )
A、引诱用户点击虚假网络链接的一种攻击方法
B、构造精妙的关系数据库的结构化查询语言对数据库进行非法的访问
C、一种很强大的木马攻击手段
D、将恶意代码嵌入到用户浏览的web网页中,从而达到恶意的目的
2
【单选题】为了防御XSS跨站脚本攻击,我们可以采用多种安全措施,但(C)是不可取的。
A、编写安全的代码:对用户数据进行严格检查过滤
B、可能情况下避免提交HTML代码
C、阻止用户向Web页面提交数据
D、即使必须允许提交特定HTML标签时,也必须对该标签的各属性进行仔细检查,避免引入javascript
3
【单选题】关于SQL注入说法正确的是(D)
A、SQL注入攻击是攻击者直接对web数据库的攻击
B、SQL注入攻击除了可以让攻击者绕过认证之外,不会再有其他危害
C、SQL注入漏洞,可以通过加固服务器来实现
D、SQL注入攻击,可以造成整个数据库全部泄露
4
【单选题】针对SQL注入和XSS跨站的说法中,哪些说法是不正确的(A)。
A、SQL注入的SQL命令在用户浏览器中执行,而XSS跨站的脚本在Web后台数据库中执行
B、XSS和SQL注入攻击中的攻击指令都是由黑客通过用户输入域注入,只不过XSS注入的是HTML代码(以后称脚本),而SQL注入注入的是SQL命令
C、XSS和SQL注入攻击都利用了Web服务器没有对用户输入数据进行严格的检查和有效过滤的缺陷
D、XSS攻击盗取Web终端用户的敏感数据,甚至控制用户终端操作,SQL注入攻击盗取Web后台数据库中的敏感数据,甚至控制整个数据库服务器
5
【多选题】对于SQL注入攻击的防御,可以采取哪些措施(ABCD)
A、不要使用管理员权限的数据库连接,为每个应用使用单独的权限有限的数据库连接
B、不要把机密信息直接存放,加密或者hash掉密码和敏感的信息
C、不要使用动态拼装sql,可以使用参数化的sql或者直接使用存储过程进行数据查询存取
D、对表单里的数据进行验证与过滤,在实际开发过程中可以单独列一个验证函数,该函数把每个要过滤的关键词如select,1=1等都列出来,然后每个表单提交时都调用这个函数
课件精简版
📕MVC模式(Model-View-Controller)是软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model)、视图(View)和控制器(Controller)。
JSP:视图层,用来与用户打交道。负责接收用户的数据,以及显示数据给用户;
Servlet:控制层,处理用户输入的数据,负责找到合适的模型对象来处理业务逻辑,转发到合适的视图;
JavaBean:模型层,完成具体的业务工作,例如:开启、转账等。
📕响应重定向(SendRedirect)和请求转发(forward)的不同
1.从浏览器的地址显示上来看
forward方法属于服务器端去请求资源,服务器直接访问目标地址,并对该目标地址的响应内容进行读取,再把读取的内容发给浏览器,因此客户端浏览器的地址不变。
sendRedirect是告诉客户端,使浏览器知道去请求哪一个地址,相当于客户端重新请求一遍。所以地址显示栏会变。
2.从数据共享来看
forward 转发的页以及转发到的目标页面能够共享 request 里面的数据
sendRedirect 转发的页以及转发到的目标页面不能共享 request 里面的数据
3.从功能来看
sendRedirect 能够重定向到当前应用程序的其他源,而且还能够重定向到同一个站点上的其他应用程序中的资源,甚至是使用绝对 URL 重定向到其他站点的资源。
forward只能在同一个web应用程序内的资源之间转发请求,可以理解为服务器内部的一种。
4.从效率来看
forward效率较高,因为跳转仅发生在服务器端。
sendRedirect相对较低,因为类似于再进行了一次请求。
(太长了记不住版)forward跳转在服务器内部,只请求了一次。sendRedirect重定向告诉浏览器发起一个请求,并在响应中返回一个新的 URL 地址,请求了两次。
📕GET和POST方法区别
1.GET请求的数据会附在URL之后,在浏览器的地址栏中对用户可见。POST方式将需要传递数据放在form表单中,在浏览器的地址栏中对用户不可见。
2.GET方式提交的数据相对较少,而POST没有限制,可传较大量的数据。
3.POST的安全性要比GET的安全性高。
4.GET方式数据可在浏览器的URL历史中缓存,而POST不会。
5.Get是向服务器发索取数据的一种请求,而Post是向服务器提交数据的一种请求。
注:当表单不设method时,默认为GET。
📕网络应用程序开发常用的结构--B/S架构和C/S架构
C/S,分为客户机和服务器两层,把应用软件安装在客户机端,通过网络与服务器端相互通信。如果客户端改动了(如界面丰富,功能增加),就必须通知所有的客户端重新安装,维护稍有不便。
B/S,为浏览器/服务器模式,可以不用通知客户端安装某个软件,内容修改了,也不需要通知客户端升级。客户机上不用安装软件,只需要使用浏览器即可,减轻了系统维护与升级的成本和工作量,降低了用户的总体成本。
📕什么是JDBC
JDBC(Java DataBase Connectivity)就是Java数据库连接,就是用Java语言来操作数据库。
📕JDBC操作数据库的步骤
1.加载驱动程序Class.forName
2.建立连接对象:使用DriverManager类的getConnection()建立数据库连接对象
3.创建语句对象:Statement/PreparedStatement
4.获得SQL语句的执行结果:使用Statement对象的方法执行SQL语句(查询/增删改)
5.关闭建立的对象
📕JDBC中的核心类有:DriverManager、Connection、Statement,和ResultSet。
📕PreparedStatement的好处有哪些
1.防止SQL注入。
2.提高代码的可读性,以及可维护性。
3.提高效率 。
📕JSP九大内置对象,Request、Response、Session、Application、Config、Page、Out、Exception、pageContext。JSP的三个指令,page指令、 include指令、 taglib指令。
📕提交过程中显示乱码解决
1.将其转成 UTF-8 格式。
2.直接修改 request 的编码,即request.setCharacterEncoding("UTF-8")。
3.利用过滤器,可以对整个 Web 应用进行统一的编码过滤,比较方便。
📕Session和cookie的主要区别
Cookie是把用户的数据写给用户的浏览器。
Session技术把用户的数据写到用户独占的session中,Session对象由服务器创建,开发人员可以调用request对象的getSession方法得到session对象。
Cookie存储在客户端,安全性较低,而Session数据存储在服务器端,对客户端不可见,相对较安全。Cookie适合存储少量的数据,常用于用户身份认证、记住登录状态等场景;Session适合存储较大的数据,常用于购物车功能、跨页面数据传递等场景。
📕Session失效
1.通过“超时限制”使Session失效。
2.public void invalidate() 用于使session强制失效。
📕完成Servlet的配置的两种方式
通过Web应用的配置文件web.xml
通过@WebServlet注解
📕JavaBean 的作用范围
Page只能在使用页面时使用,刷新页面会更新。
Request在用户对其发出请求转发时使用,刷新页面会更新。
Session一直存在于会话中,直至其终止或被删除为止,关闭浏览器后会更新。
Application在整个应用程序中均可使用,关闭服务器后会更新。
📕Ajax全称是Asynchronous Javascript and XML,即异步的JavaScript和 XML。Ajax是一种Web应用技术,该技术是在JavaScript、DOM、服务器配合下,实现浏览器向服务器发送异步请求。
📕相较于传统请求方式,Ajax异步请求的优势
1.请求数据量少
2.请求分散
3.用户体验优化
📕Ajax的应用举例
1.表单验证:在用户提交表单之前,使用 Ajax 异步请求将表单数据发送到服务器进行验证。服务器返回验证结果,可以实时显示错误消息或验证通过的信息,而无需刷新整个页面。
2.动态加载内容:在网页中,通过使用 Ajax 异步请求从服务器加载内容,例如新闻、文章、图片等。这样可以提高页面加载速度,并且用户可以在不刷新整个页面的情况下浏览更多内容。
3.实时搜索:当用户在搜索框中输入关键词时,使用 Ajax 异步请求将关键词发送到服务器,并根据服务器返回的结果实时更新搜索结果列表,无需刷新页面。
4.聊天应用:在聊天应用中,使用 Ajax 异步请求来发送和接收消息。当用户发送消息时,使用 Ajax 请求将消息发送到服务器,并将其广播给其他在线用户,以实现实时聊天功能。
📕Web安全防范措施
1. URL 操作攻击防范措施 修改 URL 中的参数或路径来试图访问未经授权的数据
对所有 URL 参数进行严格的验证和过滤,确保它们只包含合法的值。进行严格的服务器端访问控制检查,确保用户只能访问他们被授权的数据。避免在 URL 中传递敏感数据。
2. Web 跨站脚本攻击(XSS)防范措施 注入恶意脚本代码来攻击用户
对用户输入进行严格验证,并对输出内容进行 HTML 转义。使用 CSP 来限制能够执行的脚本来源。对所有动态生成的 HTML 内容进行适当的编码以防止注入攻击。
3. SQL 注入防范措施 注入恶意 SQL 代码来操控数据库
使用预编译语句和参数化查询来避免直接拼接 SQL 语句。严格验证和过滤用户输入,确保其不会包含恶意代码。使用对象关系映射(ORM)框架,它们通常会自动防范 SQL 注入。