Servlet 的常用方法init();service();doPost();doGet();等
Request、Reponse、Session的含义、生存周期、部署及主要方法的调用。
JSP九大内置对象常用格式和常用方法、作用范围(生命周期)及主要方法
1.test.jsp文件中有如下一行代码:<jsp:useBean id=”user” scope=”__”type=”com.UserBean”>要使user对象可以作用于整个应用程序,下划线中应添入()。
A.page
B.request
C.session
D.application
答案:D
2.pageContext、request、session、application四个内置对象的作用范围从小到大依次为______。
A.request、pageContext、session、application
B.request、session、pageContext、application
C.request、session、application、pageContext
D.pageContext、request、session、application
答案:D
3.如果想在tomcat服务器启动时将jar包加载到内存,且该jar包可以被tomcat服务器上所有的应用使用,应该将该jar包复制到tomcat的??? ? ? ? ? ??目录。
A.bin
B.conf
C.webapps
D.lib
答案:
D
4.JSP页面程序片中可以使用? ? ? ? ? ? ??方法将strNumx=request.getParamter("ix")得到的数据类型转换为Double类型。
A.Double.parseString(strNumx)
B.Double.parseDouble(strNumx)
C.Double.parseInteger(strNumx)
D.Double.parseFloat(strNumx)
答案:B
5.在JDBC连接数据库编程应用开发中,利用? ? ? ? ? ???可以实现包装数据库中的结果集。
A.Connection
B.PreparedStatement
C.ResultSet
D.Statement
答案:C
6.JDBC提供了3种接口来实现SQL语句的发送执行,其中用于执行存储过程的的SQL语句的是? ? ? ? ? ? ? ??。
A.Statement
B.PrepareStatement
C.CallbleStatement
D.Execute
答案:C
7.下面??? ? ? ? ?不是JSP中和javabean相关的标记。
A.<jsp:userBean>
B.<jsp:include>
C.<jsp:setProperty>
D.<jsp:getProperty>
答案:B
8.request.getRequestDispatcher().forward(request,response)称之为? ? ? ? ?
A.流转
B.转发
C.重定向
D.导航
答案:B
9.关于MVC模式说法正确的是? ? ? ? ? ? ? ? ??。
A.用来将代码分开的方法
B.将显示、流程控制、业务逻辑分开,提高维护性和分离复杂度
C.JavaBean
D.只用java才有的模型
答案:B
10.Servlet生命周期中用于初始化的方法是()
A.init()
B.service()
C.destroy()
D.super()
答案:A
11.JavaScript执行表单验证一般都发生在用户单击“提交”按钮后,数据提交服务器之前,onValidate()验证函数返回值为true时,? ? ? ? ? ? ? ? ??__。
A.验证不通过,提交数据给服务器
B.验证不通过,不提交数据给服务器
C.验证通过,提交数据给服务器
D.验证通过,不提交数据给服务器
答案:C
12.给定一个会话对象s,有两个属性,属性名分别是myAttr1和myAttr2,下面哪个选项会把这两个属性从会话中删除。
A.s.removeAllValues();
B.s.removeAllAttributes();
C.s.removeAttribute("myAttr1");
s.removeAttribute("myAttr2");
D.s.getAttribute("myAttr1",UNBIND);
s.getAttribute("myAttr2",UNBIND);
答案:C
13.给定request是一个HttpServletRequest对象,下面哪些代码会在不存在会话的情况下创建一个会话?
A.request.getSession()
B.request.getSession(true)
C.request.getSession(false)
D.request.createSession()
答案:B
14.以下? ? ? ? ? ? ? ? ? ??陈述是错误的。
A.在WEB项目的共享数据范围内,application是范围最广泛的
B.当我们在一个JSP页面新开窗口时,新开窗口的页面也共享session范围内的数据
C.当在JSP页面中通过<jsp:forward>指令将页面请求转发到的页面中,可以共享一个page范围内的数据
D.当用户重新打开一个浏览器窗口时,原session对象不再有效
答案:C
15.login.jsp页面为登录页面,表单代码如下:
<form action="index.jsp" method="post">
用户名:<input type="text" name="username"/><br/>
密码:<input type="password" name="userpwd"/><br/>
<input type="submit" value="登录">
</form>
在index.jsp页面直接显示用户名,以下哪种代码正确(? ?)
A.${requestScope.username}
B.<%=username%>
C.${param.username}
D.<%=param.username%>
答案:C
16. <%String count="100";pageContext.setAttribute("cnt",count);%>
${pageScope.cnt+100}显示为(? ? ?)
A.100100
B.运行异常
C.200
D.没有任何显示
答案:C
17.一个Web站点将管理员的E-mail地址存储在一个名为master_email的Servlet上下文参数中,如何使用EL得到这个值(? ? )
A.<a href="mailto:${initParam.master_email }">email me</a>
B.<a href="mailto:${ContextParam.master_email }">email me</a>
C.<a href="mailto:${initParam[master_email] }">email me</a>
D.<a href="mailto:${ContextParam[master_email] }">email me</a>
答案:A
18.核心标签库中,用来实现循环功能的标签是()
A.<c:if>
B.<c:for>
C.<c:while>
D.<c:forEach>
答案:D
19.以下哪个标签实现了switch功能
A.<c:if>
B.<c:switch>
C.<c:choose>
D.<c:case>
答案:C
20.在JSP中,只有一行代码:${1+2},运行将输出()
A.1+2
B.3
C.null
D.没有任何输出,因为表达式是错误的
答案:B
21.下列代码的输出结果是______。
<%
? ? int[] a = new int[] { 1, 2, 3, 4, 5, 6, 7, 8 };
? ? pageContext.setAttribute("a", a);
%>
<c:forEach items="${a}" var="i" begin="3" end="5" step="2">
${i }
</c:forEach>
A.1 2 3 4 5 6 7 8
B.?3 5
C.?4 6
D.4 5 6
答案:C
22.下列指令中,可以导入JSTL核心标签库的是(? ? )。
A.<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
B.<%!taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
C.<%@taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="c"%>
D.<% taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
答案:A
23.<c:if>的哪个属性指定条件表达式(? ? )
A.cond
B.value
C.test
D.check
答案:C
24.导入格式化标签库的taglib指令为(? ? )。
A.<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt"? prefix="fmt"%>
B.<%@ taglib uri="http://java.sun.com/jsp/jstl/sql"? prefix="sql"%>
C.<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
D.<%@ taglib name="http://java.sun.com/jsp/jstl/fmt"? prefix="fmt"%>
答案:A
1.在一个名为Haier的Web应用中,admin目录与images目录为同级目录,现在admin目录下的index.jsp需要images目录中的图片top.jpg,以下代码片段正确的是()
A.<img src="../images/top.jpg" width="100" height="20">
B.<img src="images/top.jpg" width="100" height="20">
C.<img src="./images/top.jpg" width="100" height="20">
D.<img src="/Haier/images/top.jpg" width="100" height="20">
答案:AD
2.下面选项中,属于JSP页面构成的元素是()
A.声明
B.表达式
C.HTTP
D.指令
E.脚本
答案:ABDE
3.pageContext对象定义了4个范围常量,下面哪些是合法的?
A.PAGE_SCOPE
B.REQUEST_SCOPE
C.SESSION_SCOPE
D.APPLICATION_SCOPE
答案:ABCD
4.下列request和response内置对象的使用正确的是______。
A.request.getRequestDispatcher("index.jsp").forward(request,response);
B.response.sendRedirect("index.jsp");
C.request.getParameterValues("name");
D.response.setContentType("text/html;charset=utf-8");
答案:ABCD
5.下面? ? ? ? ? ? ? ?是ResultSet接口的方法。(多选)
A. next()
B. close()
C. back()
D. forward()
答案:AB
6.使用JavaBean的好处有? ? ? ? ? ? ? ? ? ? ???。
A. JavaBean拥有标准化接口的优点,在开发期有可视化编程工具的支持,在运行期有JSP和J2EE连接器的支持。
B. JavaBean更明确的把WEB页面的设计和软件的设计区分开来。
C. JavaBean可以在多个应用程序中重用。
D. JavaBean可以实现安全性、事务行为、并发性和持久性。
答案:ABC
7.以下? ? ? ? ? ? ?是JSP技术的特性。
A.分离业务逻辑和表示
B.编写一次,随处运行
C.客户端Java资源的高效利用
D.可重用的组件和标签库
答案:ABD
8.JDBC数据库操作时,需要处理的异常有哪些?
A.SQLException
B.ClassNotFound
C.IOException
D.FileNotFound
答案:AB
9.编写Servlet代码时,至少需要导入Servlet API 的? ? ? ? ? ?包。(多选)
A.javax.servlet
B.javax.swing
C.javax.servlet.http
D.java.util
答案:AC
10.以下关于MVC设计模式中各个组件的作用说法正确的? ? ? ? ? ? ? ? ? ? ? ? ??。
A.MVC设计模式是软件设计中的典型结构之一。MVC是Model/View/Control的缩写。在这种设计结构下,应用程序分为三个组成部分:Model模型、View视图和Controller控制器,每个部分负责不同的功能。
B.Controller提供应用业务逻辑,是指对业务数据、业务信息的处理模块,包括对业务数据的存取、加工、综合等;
C.View是指用户界面,也就是用户与应用程序交互的接口。用户可以通过view输入信息,另一方面应用程序通过view将数据结果以某种形式显示给用户。
D.Model则负责View和Controller之间的流程控制。
答案:AC
11.目前广泛应用的动态网站技术有()
A.PHP
B.ASP
C.JSP
D.Delphi
答案:ABC
12.关于HttpSession对象,下面哪些说法是正确的?
A.会话的超时时间设置为-1,则会话永远不会到期
B.一旦用户关闭所有浏览器窗口,会话就会立即失效
C.在web.xml文件中定义的超时时间之后,会话会失效
D.可以调用HttpSession的invalidate()方法使会话失效。
答案:ABCD
13.下列EL的使用语法正确的是______
A.${1 + 2 == 3 ? 4 : 5}
B.${param.id + paramValues.multi[1]}
C.?${someMap[var].someArray[0]}
D.?${someArray["0"]}
答案:AD
14.下列关于JSTL条件标签的说法正确的是______
A.单纯使用if标签可以表达if...else...的语法结构
B.when标签必须在choose标签内使用
C.otherwise标签必须在choose标签内使用
D.?以上都不正确
答案:BC
15.下列哪些JSTL的<c:forEach>标签是合法的(? ? ? ? )
A.<c:forEach var="i" begin="10"? end="30"? step="3">
B.<c:forEach varName="i" begin="1"? end="10" >
C.<c:forEach var="i" items="${list}">
D.<c:forEach varName="i" start="1"? end="10" >
答案:AC
16.在web.xml文件的<filter>元素中可以使用哪些元素?
A.<filter-name>
B.<filter-class>
C.<init-param>
D.<dispatcher>
答案:ABC
1.通过include指令,怎样将页面left.jsp包含进来? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
答案:<%@ include? ?file="left.jsp"%>
2.将List集合的元素全部删除的方法是? ? ? ? ? ? ? ? ? ? ? ? ? ???。
答案:removeAll
3.JSP的9个内置对象中,有4个作用域对象,分别是? ? ??? ? ? ???、? ? ???? ? ???、??? ? ?? ? ? ???、? ?? ? ? ???。
答案:pageContext、request、session、application
4.获取请求参数的方法有两个,分别是:? ? ? ? ? ? ?? ? ? ? ? ? ??和? ? ? ? ? ? ? ? ? ? ? ? ? ??。? ? ? ? ? ? ??
答案:getParameter()、getParameterValues()
5.与下面HTML代码等价的语句是 :? ? ? ? ? ? ? ? ? ? ? ? ??
<meta http- equiv="refresh"? ?content="5;url=myframe.jsp"/>? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
答案:response.setHeader("refresh","5;url=myframe.jsp");
6.通过pageContext对象的getOut()、getRequest()、getResponse()方法分别获取如下三个内置对象:??? ? ? ? ? ? ? ? ? ? ???、??? ? ? ? ? ? ? ? ? ? ??? ?、? ? ? ? ? ? ? ? ? ? ? ? ? ??
答案:out、request、response
7.更新数据库里的表内容是Statement接口或PreparedStatement接口使用? ? ???方法
答案:executeUpdate()
8.通过???? ? ? ? ? ? ? ? ? ?? 方法提交事务,通过??? ? ? ? ? ? ? ? ? ?? 方法让事务回滚。
答案:commit()、rollback()
9.JDBC中? ? ? ? ? ? ??接口用于连接数据库。
答案:connection
10.通常应用<? ? ? ? ??>动作标签,可以在JSP页面中创建一个Bean实例,并且通过属性的设置可以将该实例存储到JSP中的指定范围内。
答案:jsp:useBean
11.使用useBean动作标记的时候scope属性有4种选项,作用范围由小到大是? ? ? ? ??、? ? ? ? ? ?、? ? ? ? ? ?、? ? ? ???,其中session是指当关闭浏览器的时候这个javabean失效,application是指当关闭服务器的时候这个javabean失效。
答案:page、request、session、application
12.? ? ?对象是代表应用程序上下文,它允许JSP页面与包括在同一应用程序中的任何Web组件共享信息,而session对象则是每个客户专用的。
答案:application
13.Servlet中使用Session对象的步骤为:调用? ? ? ? ? ? ??方法得到Session对象,查看Session对象,在会话中保存数据。
答案:getSession()
14.使得HttpSession失效的三种方式是:? ? ? ? ? ? ?、调用session的invalidate方法和? ? ? ? ? ? ?。
答案:关闭浏览器、等待session超时
15.EL表达式是一个以(? ?)开始,以(? ?)结束的表达式。
答案:${ 、 }
16.param对象用于获取请求参数的值,而如果一个参数名对应多个值时,则需要使用( )对象获取请求参数的值。
答案:paramValues
17.在pageContext对象中有(??)、(??)、(??)、(? )、(??)属性可以获取JSP的内置对象。
答案:request、response、session、out、servletContext
18.JSTL包含5类标签库,分别是(? ? )、(? ? )、(? ? )、(? ? )、(? ? )。
答案:核心标签库、SQL标签库、函数标签库XML标签库
19.如果想在JSP页面声明一个名字为name的变量,应该使用(? ? )标签。
答案:<c:set>
20.<c:choose>标签的子标签<c:otherwise>标签的作用等价于switch语句中的(? ? ? )语句。
答案:default
红色为错误
1.请列举Servlet接口中的方法,并分别说明这些方法的特点及其作用。
答案:
1)init(ServletConfig config)方法,该方法在服务器对Servlet第一次访问时调用,负责Servlet初始化工作。在一个Servlet的生命周期中只执行一次。该方法接收一个ServletConfig类型的参数,Servlet容器可以通过这个参数向Servlet传递初始化配置信息。
2)service(ServletRequest request,ServletResponse response)方法,该方法负责响应用户的请求,当容器接收到客户端访问Servlet对象的请求时,就会调用此方法。
3)destroy()方法,该方法方法负责释放Servlet对象占用的资源。当Servlet对象被销毁时,容器会调用此方法。
4)getServletConfig()方法,该方法返回容器调用init(ServletConfig config)方法时传递给Servlet的ServletConfig对象。
5)getServletInfo()方法,该方法返回一个字符串,其中包含了关于Servlet的信息,例如,作者、版本和版权等信息。
2.简述请求转发与重定向的异同?(至少写3点)
答案:
1)请求转发和重定向都可以实现访问一个资源时转向当前应用资源
2)请求转发是一次请求一次响应,而重定向为两次请求两次响应
3)一般情况下应该使用请求转发,减少浏览器对服务器的访问,减轻服务器压力
4)如果需要改变浏览器的地址栏,或更改浏览器的刷新按钮的功能时需要使用重定向
按以下要求设计程序,完成对数据表users的查询操作,已知表记录如下。 mysql> select * from users; +----+--------+----------+-----------------+------------+?
| id | name | password | email | birthday | +----+--------+----------+-----------------+------------+?
| 1 | zhangs | 123456 | zs@sina.com | 1980-12-04 |?
| 2 | lisi | 123456 | lisi@sina.com | 1981-12-04 |?
| 3 | wangwu | 123456 | wangwu@sina.com | 1979-12-04 | +----+--------+----------+-----------------+------------+?
(1)使用DBCP数据库连接池的BasicDataSource类直接创建数据源对象,类名为DBCPUtils。?
(2)创建QueryState类,完成查询操作id=1,并返回对象。
答案:创建数据表users和User实体类的操作不在此赘述。
?DBCPUtils.java
import org.apache.commons.dbcp2.BasicDataSource;
import javax.sql.DataSource;
public class DBCPUtils {
public static DataSource ds = null;
static {
// 获取DBCP数据库连接池实现类对象
BasicDataSource bds = new BasicDataSource();
// 设置连接数据库需要的配置信息
bds.setDriverClassName("com.mysql.cj.jdbc.Driver");
bds.setUrl("jdbc:mysql://localhost:3306/jdbc?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=UTF-8&useSSL=false");
bds.setUsername("root"); bds.setPassword("123456");
// 设置连接池的初始化连接参数
bds.setInitialSize(5);
ds = bds;
}
}
QueryState.java
import java.sql.SQLException;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanHandler;
public class QueryState {
public static void main(String[] args) throws SQLException {
// 创建QueryRunner对象
QueryRunner runner = new QueryRunner(DBCPUtils.ds);
// 写SQL语句
String sql = "select * from users where id=1";
// 调用方法
User user = (User) runner.query(sql, new BeanHandler(User.class));
System.out.println(user.getId() + "," + user.getName() + "," + user.getPassword() + "," + user.getEmail() + "," + user.getBirthday());
}
}
????????B/S架构(Brower/Server)就是浏览/服务器端的交互。利用B/S架构我们只需要安装一个浏览器就能通过web服务器与数据库进行交互,并将交互的结果以网页的形式展现在web浏览器中,浏览器不用直接与数据库建立连接,而是只有Web服务器与数据库需要建立连接,有效解决了数据库并发数量有限的问题。
????????前端负责展示页面,获取用户请求发送给后端,后端负责接收请求,做出响应,并把响应数据发送给前端展示,前后端的关系可以理解为:前端向后端请求数据,后端提供数据给前端展示。
Servlet/Filter/Listener的概念、编写、调用的典型代码、常用方法
????????Servlet 运行在服务端的Java小程序,是sun公司提供一套规范(接口),用来处理客户端请求、响应给浏览器的动态资源。但servlet的实质就是java代码,通过java的API动态地向客户端输出内容。
1)servlet技术
3)listener技术---监听器
2)filter技术---过滤器
<!--配置Servlet的初始化信息-->
<context-param>
?????? <param-name>参数名</param-name>
?????? <param-value>参数值</param-value>
</context-param>
<!--配置Servlet映射路径-->
<servlet-mapping>
<servlet-name>xxx</servlet-name>
<url-patten>/xxx<url-pattern>
</servlet-mapping>
????????1)init()方法,该方法在服务器对Servlet第一次访问时调用,负责Servlet初始化工作。在一个Servlet的生命周期中只执行一次。该方法接收一个ServletConfig类型的参数,Servlet容器可以通过这个参数向Servlet传递初始化配置信息。
????????2)service()方法,该方法负责响应用户的请求,当容器接收到客户端访问Servlet对象的请求时,就会调用此方法。
????????3)destroy()方法,该方法方法负责释放Servlet对象占用的资源。当Servlet对象被销毁时,容器会调用此方法。
????????4)getServletConfig()方法,该方法返回容器调用init(ServletConfig config)方法时传递给Servlet的ServletConfig对象。
????????5)getServletInfo()方法,该方法返回一个字符串,其中包含了关于Servlet的信息,例如,作者、版本和版权等信息。
过滤器的doFilter();方法,过滤器链
Userbean ur=new Userbean(); //创建javabean
ur.check(); ur.setName(“name”); //调用
重定向的应用:response.sendRedirect("相对路径");
Request:获取请求数据
Request.setCharacterEncoding=“UTF-8”;
String request.getParameter(String name);
String[] request.getParameterValue(String name);
RequestDispatcher request.getRequestDispatcher(String path);
request.getRequestDispatcher.forward(request,response);
Public void setAttribute(string name,object );
Public object getAttribute(string name);
Public void removeAttribute(string name);
Response:设置响应数据
response.setHeader("refresh","2");
response.setHeader("refresh","3;URL=hello.jsp") ;
response.sendRedirect(String location) ;
response.addCookie(Coolie cookie) ;
Cookie:将信息存储在浏览器端
????????通俗讲,是访问某些网站后在本地存储的一些网站相关信息,下次访问时减少一些步骤。更准确的说法是:Cookies是服务器在本地机器上存储的小段文本并随每一个请求发送至同一服务器,是在客户端保持状态的方案。
Session:将数据保存在服务器端
????????存在服务器的一种用来存放用户数据的类HashTable结构。
????????浏览器第一次发送请求时,服务器自动生成了一HashTable和一Session ID来唯一标识这个HashTable,并将其通过响应发送到浏览器。浏览器第二次发送请求会将前一次服务器响应中的Session ID放在请求中一并发送到服务器上,服务器从请求中提取出Session ID,并和保存的所有Session ID进行对比,找到这个用户对应的HashTable。
????????一般这个值会有个时间限制,超时后毁掉这个值,默认30分钟。
????????当用户在应用程序的 Web页间跳转时,存储在 Session 对象中的变量不会丢失而是在整个用户会话中一直存在下去。
public void setAttribute(String name, Object value)?
public Object getAttribute(String name)
public void removeAttribute(String name)
public void invalidate()
JSP指令 <%@ page contentType=”” import=””>,
????????各属性有什么意义?contentType:指定文档类型,import:导包
三个模块各自完成什么功能?
????????V:与用户互动;C:流程控制;M:数据存储与业务逻辑
阅读MVC的例题,各模块之间怎么通信、联系
简述MVC的设计思路。
JDBC是Java用来连接数据库的一组API命令
# 加载并注册数据库驱动
Class.forName("com.mysql.jdbc.Driver");
# 通过DriverManager获取数据库连接
String url = "jdbc:mysql://localhost:3306/hzj? useSSL=false";
String username = "root";
String password = "root";
Connection conn = DriverManager.getConnection(url,username,password);
# 通过Connection对象获取Statement对象
Statement stmt = conn.createStatement();
# 使用Statement执行SQL语句
String sql = "...";
stmt.execute(sql);
# 操作ResultSet结果集
while(rs.next()){ rs.getXxx(参数); }
# 关闭连接,释放资源
rs.close();
stmt.close();
conn.close();
怎么查询executeQuery()、怎么修改数据库executeUpdate()
数据库优化技术:PreparedStatement:预编译sql语句并执行,预防sql注入问题,减少编译次数提高数据库性能。
Eclipse、Tomcat包含哪些目录、MySQL常用操作
?
JSP设计表单,Javabean编写数据模型,Servlet编写控制器,JDBC连接和操作数据库——参考相关章的例题和实验源码