Java 面试经典 01--jsp

Jsp
1,当浏览器第二次(同一会话)访问以下jsp网页时的输出结果是什么?
<!% int a=0;%>
<%
Int b=0;
a++;
b++;
%>

a:<%= a%><br>
b:<%= b%>

A,a=0 b=0
B,a=1 b=1
C,a=2 b=1
考点:页面载入的时候,哪些代码会执行。(c)

2,下面选择中哪一个不是<jsp:useBean>元素的属性?
A, scope
B, Id
C, Value
D, Class
考点:了解bean的属性(C)

3,在jsp页面的代码中,下面语句的执行结果?
String str1,str2;
str1="ab";
str2="ab";
if (str1==str2)
out.print("yes");
else
out.print("no");

A,yes
B,no
考点:考察对对象的理解。(A)

4, 下面哪一个不是JSP本身已加载的基本类?
A、java.lang.* B、java.io.* C、javax.servlet.* D、javax.servlet.jsp.*
考点:考察jsp本身自带的包 (B)

5, Page指令用于定义JSP文件中的全局属性,下列关于该指令用法的描述不正确的是:
A.<%@ page %>作用于整个JSP页面。

B.可以在一个页面中使用多个<%@ page %>指令。

C.为增强程序的可读性,建议将<%@ page %>指令放在JSP文件的开头,但不是必须的。

D.<%@ page %>指令中的属性只能出现一次。
考点:对jsp一些指令的理解。(D)
6, JSP内嵌对象session的类型为javax.servlet.http. HttpSession,下述语句会使该对象失效的是:
A session.dispose();
B session.clear();
C session.invalidate();
D session.removeAll();
考点:如何让session失效。(C)
7,在jsp中,只有一行代码:<%=’A’+’B’%>,运行结果为_______131_________.
考点:对字母运算的理解。
8,jsp的EL表达式:${user.loginName}的执行效果等同于()。
A,<%=user.getLoginName()%>
B,<% user.getLoginName()%>
C, <% =user.getLoginName%>
D, <% user.getLoginName;%>

考点:对El表达式的理解。(A)
9,jsp页面经过编译后,将创建一个()。
A,applet
B,servlet
C,application
D,exe文件
考点:Jsp编译后,最终也是servlet。(B)

10, 在空格处填写正确的语句:
给定include1.jsp文件代码片断,如下:
<% pageContext.setAttribute("User","HAHA");%>
_______//此处填写代码
给定include2.jsp文件代码片断,如下:
<%=pageContext.getAttribute("User")%>

要求运行include1.jsp时,浏览器上输出:HAHA

要满足以上条件,jsp1.jsp中下划线处应填入以下()语句。
A,   <jsp:include page="include2.jsp" flush="true"/>
B, <%@ include file="include2.jsp"%>
C, <jsp:forword page="include2.jsp"/>
D, <% response.sendRedirect("include2.jsp");%>

考点:对静态包含、重定向,转发指令的理解 (B)

11,在jsp中,哪个指令用来声明jsp欲使用的标签库?
A,tld
B,taglib
C,import
D,include
考点:考察标签库 (A)
12,下面选择中哪个是jsp的注释标签?
A,<%@%>
B,<%!%>
C,<%#%>
D,<%----%>
考点:考察易混淆的标识(D)

13,如果不希望在jsp页面中存取http会话,应该设置哪个指令?
A,<%page session= “disabled” %>
B, <%page session= “false” %>
C, <%page session= “true” %>
D, <%page disablesession= “true” %>
考点:考察page指令的属性(B)

14,如何发送Cookie?下面选项中正确的是()
A,使用new Cookie语句
B,调用response.addCookie()方法
C,使用Cookie的setMaxAge()方法
D,setCookie()方法
考点:考察cookie使用(B)

Servlet
在Servlet过滤器的生命周期方法中,每当传递请求或响应时,web容器会调用()方法。

A, init B, service
C, doFilter D, destroy
考点:过滤器何时被调用(C)
在Servlet里,能正确获取session的语句是()。
A, 	HttpSession session = request.getSession(true);
B, HttpSession session = request.getHttpSession(true);
C, HttpSession session = response.getSession(true);
D, HttpSession session = response. getHttpSession (true);

考点:如何得到session(A)
给定一个Servlet的代码片段如下:
Public void doGet(HttpServletRequest request,HttpServletResponse response)
throws ServletException,IOException{
______
out.println(“hi kitty!”);
out.close();
}

运行次Servlet时输出如下:
hi kitty!
则应在此Servlet下划线处填充如下代码。

A,	PrintWriter out = response.getWriter();
B, PrintWriter out = request.getWriter();
C, OutputStream out = response.getOutputStream();
D, OutputStream out = request.getWriter();

考点:如何正确得到out对象(A)


Servlet中,使用()接口中定义的()方法来处理客户端发出的表单数据请求
A, HttpServlet doHead B, HttpServlet doPost
C, ServletRequest doGet D, ServletRequest doPost
考点:Httpservlet的作用,和其里面的方法(B)

servlet 的生命周期有一系列事件组成,把这些事件按照先后顺序排序,以下正确的是()
A, 加载类,实例化,请求处理,初始化,销毁
B, 加载类,实例化,初始化,请求处理,销毁
C, 实例化,加载类,初始化,请求处理,销毁
D, 加载类,初始化,实例化,请求处理,销毁
考点:Servlet的生命过程(B)

假设在helloapp应用中有一个HelloServlet类,它位于org.javadoc包下,那么这个类的class文件应该放在什么目录下?
A,helloapp/HelloServlet.class
B,helloapp/WEB-INF/HelloServlet.class
C,helloapp/WEB-INF/classes/HelloServlet.class
D, helloapp/WEB-INF/classes/org/javadoc/HelloServlet.class
考点:考察文件的存放位置。(D)


ServletContext对象是由谁创建的?
A,由Servlet容器负责创建,对于每一个HTTP请求,Servlet容器都会创建一个ServletContext对象
B,由javaWeb应用负责创建
C,由Servlet容器负责创建,对于每个JavaWeb应用,在启动时,Servlet容器都会创建一个ServletContext对象
D,以上都不对
考点:考察servletcontext对象的产生(C)

在使用服务器端的会话管理时,通过什么方法标识会话?
A,IP地址
B,Cookie
C,session id
D,请求的头
考点:考察表示会话的方法(B)
下面是对servlet生命周期的描述,请在空格处填上正确的答案。
web容器加载servlet,生命周期开始。通过调用servlet的_______方法进行_______的初始化。通过调用service()方法实现,根据请求的不同调用不同的________方法。结束服务,web容器调用servlet的________方法。
考点:考察servlet生命周期中具体的方法。
Init(), servlet, do***(), destroy()

Servlet中四种会话是____,______,________,__________.
考点:考察四种会话。Page,request, session,application

下面关于forward和redirect的说法,错误的是:().
A,前者会显示地址,后者不显示地址。
B, 当需要跳转到一个其它服务器上的资源时,必须使用sendRedirect()方法
C, 前者比后者更加高效。
D, 前者仅是容器中控制权的转向,在客户端浏览器地址栏中不会显示出转向后的地址;后者则是完全的跳转,浏览器将会得到跳转的地址,并重新发送请求链接。
考点:考察forward和redirect。 (A)


现实servlet的单线程模式的方法是:
________________________________________________.

考点:考察servlet的单线程。
<%@ page isThreadSafe="false"%>

看下面的HTML标签:
<html>
<body>
<a href=”/servlet/MyFirstServlet”>Make me say Hello World!</a>
</body>
</html>
点击超链接后下面哪一个方法将会被调用:()
A,doGet
B,doPost
C,post
D,get

考点:考察超链接时候实际调用方法。 (A)

关于Form表单提交的HTTP的get方法,正确的是()多选
A,不能向服务器提交二进制数据
B,不能向服务器提交无限长度的数据
C,不能向服务器提交多值参数
D,参数附在URL后面
考点:提交时候的参数问题。 (abd)
在web.xml中下面哪个标签表示servlet的URL的映射?()
A,mapping
B,servlet-url
C,url-mapping
D,servlet-mapping

考点:考察servlet标签的使用 (D)
下面哪些发生在jsp页面的转换阶段()。多选
A,执行jsp的init()方法
B,创建一个与jsp相关的servlet类
C,实例化servlet类
D,加载servlet类
考点:jsp页面转换时候做的事情。(BD)
下面哪个方法用于从session中得到对象()
A,Session接口的getAttribute()方法
B,HttpSession接口的getValue方法
C,session接口的getAttribute()方法
D, HttpSession接口的getAttribute()方法

考点:从session中得到对象。(D)


在浏览器禁用cookie前提下,下面哪些技术能够记住客户端状态()多选
A,Http headers
B,Httpsession
C,隐藏域
D,URL重写

考点:记住客户状态的方式。(BCD)

下列哪些表达式所存储的对象可以被servlet或jsp在session里面使用()多选
A,request.setAttribute(name,value);
B,response.setAttribute(name,value);
C,request.getSession().setAttribute(name,value);
D,servlet.getServletContext().setAttribute(name,value);
考点:设置session对象的方法。(CD)

下面哪个方法在ServletContext被初始化时调用:()
A, ServletContextListener接口的contextInitialized()方法
B, ServletContextListener接口的Init()方法
C, ServletContext接口的contextInitialized()方法
D, ServletContext接口的Init ()方法

考点:servlet初始化方法 (A)

下面哪个方法用于URL重写
A,HttpServletResponse接口的rewriteURL()方法
B, HttpServlet接口的rewriteURL()
C, HttpServletRequest接口的encodeURL()方法
D, HttpServletResponse接口的encodeURL()方法

考点:HttpServletResponse接口的常用方法 (D)
[encodeURL 不是url的重写]
下面哪个jsp隐含对象可以实现多次请求共享()多选
A,page
B,request
C,session
D,application

考点:对象存在的时间范围。(CD)


下面哪个表达式表示会话永不过期()。
A,setTimeout(0)
B,setTimeout(-1)
C,setManInactiveInterval(0)
D, setManInactiveInterval(-1)
[有待考证]
考点:设置会话时间。(D)

下面是web.xml中的片段

在servlet中要得到上面的参数,下面哪个表达式是正确的()。
A,getServletConfig().getAttribute(“user”)
B, getServletContext().getAttribute(“user”)
C, getServletConfig().getInitParameter(“user”)
D, getServletContext().getInitParameter (“user”)

考点:获得参数的方法。(D)

Jdbc+sql
下面哪个语句连接后能查询成功?
A,public List<File> getFileByFileName(Long pid, String fileName) {
StringBuffer stringBuffer = new StringBuffer("from File f where f.folder.id =");
stringBuffer.append(pid);
stringBuffer.append(" and f.name like '");
stringBuffer.append(fileName);
stringBuffer.append("%'");
logger.debug("getFileByFileName", "hql 语句链接成功:"+stringBuffer.toString());
return commitHql(stringBuffer.toString());
}
B,public List<File> getFileByFileName(Long pid, String fileName) {
StringBuffer stringBuffer = new StringBuffer("from File f where f.folder.id =");
stringBuffer.append(pid);
stringBuffer.append("and f.name like'");
stringBuffer.append(fileName);
stringBuffer.append("%'");
logger.debug("getFileByFileName", "hql 语句链接成功:"+stringBuffer.toString());
return commitHql(stringBuffer.toString());
}
C,public List<File> getFileByFileName(Long pid, String fileName) {
StringBuffer stringBuffer = new StringBuffer("from File f where f.folder.id =");
stringBuffer.append(pid);
stringBuffer.append(" and f.name like ");
stringBuffer.append(fileName);
stringBuffer.append("%");
logger.debug("getFileByFileName", "hql 语句链接成功:"+stringBuffer.toString());
return commitHql(stringBuffer.toString());
}
D,public List<File> getFileByFileName(Long pid, String fileName) {
StringBuffer stringBuffer = new StringBuffer("from File f where f.folder.id =");
stringBuffer.append(pid);
stringBuffer.append(" and f.name = '");
stringBuffer.append(fileName);
stringBuffer.append("%'");
logger.debug("getFileByFileName", "hql 语句链接成功:"+stringBuffer.toString());
return commitHql(stringBuffer.toString());
}
考点:考察在连接sql语句的时候,空格,模糊匹配符%的使用(A)

2,仔细查看下面代码。选出其中正确的事务处理?
A,public int delete(int sID) {
 dbc = new DataBaseConnection();
 Connection con = dbc.getConnection();
 try {
  con.setAutoCommit(true);
  dbc.executeUpdate("delete from bylaw where ID=" + sID);
  dbc.executeUpdate("delete from bylaw _content where ID=" + sID);
  dbc.executeUpdate("delete from bylaw _affix where bylawid=" + sID);
  con.commit();
  con.setAutoCommit(true);
  dbc.close();
  return 1;
 }
 catch (Exception exc) {
  con.rollBack();
  exc.printStackTrace();
dbc.close();
  return -1;
 }
}

B,
public int delete(int sID) {
 dbc = new DataBaseConnection();
 Connection con = dbc.getConnection();
 try {
  con.setAutoCommit(false);
  dbc.executeUpdate("delete from bylaw where ID=" + sID);
  dbc.executeUpdate("delete from bylaw _content where ID=" + sID);
  dbc.executeUpdate("delete from bylaw _affix where bylawid=" + sID);
  con.commit();
  con.setAutoCommit(true);
  dbc.close();
  return 1;
 }
 catch (Exception exc) {
  con.rollBack();
  exc.printStackTrace();
  dbc.close();
  return -1;
 }
}

C,public int delete(int sID) {
 dbc = new DataBaseConnection();
 Connection con = dbc.getConnection();
 try {
con.commit();
  con.setAutoCommit(false);
  dbc.executeUpdate("delete from bylaw where ID=" + sID);
  dbc.executeUpdate("delete from bylaw _content where ID=" + sID);
  dbc.executeUpdate("delete from bylaw _affix where bylawid=" + sID);
  con.setAutoCommit(false);
dbc.close();
  return 1;
 }
 catch (Exception exc) {
  con.rollBack();
  exc.printStackTrace();
dbc.close();
  return -1;
 }
}
D,public int delete(int sID) {
 dbc = new DataBaseConnection();
 Connection con = dbc.getConnection();
 try {
  con.setAutoCommit(true);
  dbc.executeUpdate("delete from bylaw where ID=" + sID);
  dbc.executeUpdate("delete from bylaw _content where ID=" + sID);
  dbc.executeUpdate("delete from bylaw _affix where bylawid=" + sID);
  con.commit();
  con.setAutoCommit(false);
  dbc.close();
  return 1;
 }
 catch (Exception exc) {
  con.rollBack();
  exc.printStackTrace();
  dbc.close();
  return -1;
 }
}

考点:考察如何正确进行事务处理(B)
3,有如下2个表,仔细观察表字段。写出sql语句。
销售表:Amount表

部门表:Dept表

1, 查询所有dept部门的销售金额amount。(要显示出部门名称和其金额)。select a.deptname,b.amount from dept a left join amount b on a.deptid = b.deptid
因为是所有部门,所以不能单单从amount进行查询。
考点:考察对需求的理解,对表中字段的理解,左连接的使用。

查询有销售记录的部门销售金额,并且金额大于5000,时间在第四季度的,按部门进行分组。(要显示出部门名称和其金额)
[color=red]select a.deptname,b.amount from dept a
right join amount b on a.deptid = b.deptid
where b.amount>5000 and month in (10,11,12)
group by a.deptname[/color]
考点:考察右连接的使用,in的使用,和如何分组。

4,根据要求,编写sql语句。
有3个表:
Employee职工(工号,姓名,性别,年龄,部门)(num,name,sex,age,dept)
Wage工资(编号,金额)(No,amount)
Attend出勤(工号,工资编号,出勤率)(num,No,attendance)
查询工作金额为8000的职工工号和姓名。
查询职工张三的出勤率。
查询3次出勤率为0的职工姓名和工号。
查询出勤率为10并且工资金额小于2500的职工信息。
考点:考察sql语句的常用写法
[color=darkred]1, select eml.num,eml.name form Employee eml
where
(
select count(*) form Attend where num=eml.num nad No=
(
Select No from Wage where amount=’8000’
)
)
2, select amount from Wage where No in
(
Select No from Attend where num=
(
Select num from Employee where name like ‘张三’
)
)
3, select eml.num,eml.name from Employee eml where
(
Select count(*) from Attend where num=eml.num and attendance=0
) = 3
4, select * from Employee eml where
(
Select No from Attend where num=eml.num and attendance=’10’
) =
(
Select No from Wage where amount < 2500
)
5,select char(65) from user;查询的结果是什么?
A, a
B, b
C, A
D, B[/color]
考点:对特殊符号的理解(C)
[答案选项设计不正确]
6,在sql Server中,建立一个student表包含一个sex列,使用下列哪种方法能保证sex列中的输入值只能是M或F?
A, 创建一个存储过程验证sex列中的数据
B, 对student表添加一个default约束
C, 对sex列添加一个触发器,在提交后验证数据
D, 对sex列添加一个check约束
考点:考察如何对表中字段进行约束。(D)

7,根据表score选出正确的select语句。
表score(id, names, math, English, VB)
A, select id,sum(math) from score
B, select sum(math),avg(VB) from score
C, select *,sum(english) from score
D, delete * from score
考点:考察对sum的使用。(B)

8,在查询分析器中运行下面的语句,会得到什么样的结果?
[color=brown]CREATE TABLE numbers(
N1 INT,
N2 NUMERIC(5,O),
N3 NUMERIC(4,2)
)
GO
INSERT numbers VALUES(1.5, 1.5, 1.5)
SELECT * FROM numbers[/color]

A, 2, 2, 1.5
B, 1.5, 1.5, 1.5
C, CREATE TABLE 命令不会执行,因为你无法将列N2的精度设置为0
D, 1, 2, 1.50
考点:考察对int和numeric的使用(D)
9, JDBC中__________类对象保存了所有__________类对象中关于字段信息,提供多个方法来取得这些信息;
ResultSetData, ResultSet
考点:考察jdbc中查询的结果存放在哪里
10, 当对对象进行批量更新时,采用__________创建对象效率较高,采用__________创建则效率较低;
preparedStatement Statement
考点:对statement的理解。
正则表达式
以a开头和结尾的所有小写字母串。
^a[./n]*a$考点:考察正则表达式字母的写法
第一个数不为0的所有数字串。
^[1-9]+[0-9]*$
考点:考察正则表达式数字的写法

正则表达式中,常用的元字符有
A, $
B, *
C, +
D, ?
考点:考察基本匹配符(A)

正则表达式中,用来匹配数字的是
A, \w
B, \d
C, \s
D, \b
考点:考察基本的匹配符的理解(B)

若要表示a字母后面跟着0个或一个b,则应该写成:
A, “ab*”
B, “ab+”
C, “ab?”
D, “a?b+$”
考点:考察*,+,?的使用(C)
写出精确查找hi这个单词的表达式。
考点:\b符号的使用
答案:\bhi\b
写出hi后跟着一个单词Lucy的正则表达式
考点:常用符号.和*的使用答案:\bhi\b.*\bLucy\b
说出下面正则表达式的意义。并用另种方法实现它。
0\d\d-\d\d\d\d\d\d\d\d
考点:数字的匹配方法
答案:以0开头,然后是两个数字,然后是一个连字号“-”,最后是8个数字(也就是中国的电话号码)
另种实现方法:0\d{2}-\d{8}
写出匹配QQ号为5位到12位数字。
考点:考察开始、结束符号,和数字范围。答案:^\d{5,12}$

说说正则表达式中+符号和*符号的区别
考点:+和*的区别答案:+是和*类似的元字符,不同的是*匹配重复任意次(可能是0次),而+则匹配重复1次或更多次。
说出下面这个正则表达式的含义:\(?0\d{2}[) -]?\d{8}
考点:?符号的使用答案:首先是一个转义字符\(,它能出现0次或1次(?),然后是一个0,后面跟着2个数字(\d{2}),然后是)或-空格中的一个,它出现1次或不出现(?),最后是8个数字(\d{8})。比如:010)88886666
022-22334455
02912345678
写出符合要求的正则表达式:匹配两种以连字号分隔的电话号码:一种是三位区号,8位本地号(如010-12345678),一种是4位区号7位本地号(0376-2233445)考点:分枝符号的使用答案:0\d{2}-\d{8}|0\d{3}-\d{7}

观察下面2个正则表达式,说出他们是否相等?并说明理由。
\d{5}-\d{4}|\d{5}和\d{5}|\d{5}-\d{4}考点:使用分枝条件时,要注意各个条件的顺序答案:不相等。原因:前面匹配的是:5位数字,或者用连字号间隔的9位数字。而后面匹配的是:5位的邮编(以及9位邮编的前5位)

说出下面正则表达式的含义:((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)
考点:分组符号的使用答案:ip地址

说出下面正则表达式的含义:[\u4e00-\u9fa5]
考点:考察常用的匹配中文字符的写法。
答案:匹配中文字符
写出匹配正整数的正则表达式。
考点:常用的正则表达式的写法 答案:^[1-9]\d*$

Freemarker
现在后台的java文件中,设置一个参数:request.setAttribute("flag","exists");
如何在页面中得到?
A, ${request.flag}
B, request.getAttribute(“flag”);
C, request.get Parameter(“flag”);
D, ${request. get Parameter(“flag”)};
考点:考察freemarker如何从后台取值。(A)


2, 有一个用户的list集合:userList,有三个属性:userName,userPassWord, userAge。请编写freemarker中list循环的列子,并按照年龄排序。
考点:考察list的使用
<#list userList?sort_by(“userAge”) as user>
Name: ${user.userName}
Password:${user.userPassWord}
Age: ${user.userAge}
</#list>

3, 有如下结构,要得到name值,下面表述错误的是

A, book.author.name
B, book["author"].name
C, book.author.["name"]
D, book["author"]["name"]
E, 以上都是错的。
考点:考察多种写法(E)
[题目说明不清晰,答案设计不合理]
4,下面写法错误的是:
A, ${"Hello ${user}!"}
B, ${"${user}${user}${user}${user}"}
C, ${user + user + user + user}
D, <#if ${isBig}>Wow!</#if>
考点:考察${}的用法(D)

5, 假设user的值为Big Joe。下面语句执行的结果是:
${user[0]}${user[4]}
${user[1..4]}
A, Big J 和 ig J
B, BJ 和 iJ
C, BJ 和 ig J
D, Big J 和 ig J
考点:考察字符的截取。(c)


Struts
1, 在web.xml文件中要配置struts2的拦截器。拦截器中会自动加载____,____,____3个xml文件。
考点:考察Struts2中常用的3个配置文件
Strurs-default.xml, struts-plugin.xml, struts.xml

2, 现有如下配置:
<action name=”*News”
Class=”com.struts.NewsAction” method=”{1}”>
……..
</action>
那么当请求/createNews时候,会请求的是_________类的__________方法。
考点:考察通配符的使用(NewsAction ,create)


在web.xml文件中,通常会有如下配置:
<filter-mapping>
<filter-name>struts</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
此配置表示:_________________________________________.
考点:了解可以手动设置要拦截器的文件(拦截所有用户请求)


在自定义拦截器的时候,要注意最后配置________________才不会出错。
考点:Sturts2默认的拦截器不要忘记配,不然会出错。
(<interceptor-ref name="defaultStack"/>)


默认情况下,struts2的配置文件的执行顺序是什么?
A,struts.properties, struts-default.xml,struts-plugin.xml,struts.xml,web.xml
B, struts-default.xml,struts-plugin.xml, struts.properties ,struts.xml,web.xml
C, struts-default.xml,struts-plugin.xml,struts.xml, struts.properties ,web.xml
D, struts-default.xml, struts.properties ,struts-plugin.xml,struts.xml,web.xml
考点:考察配置文件的执行顺序,在配置常量的时候要注意,后执行的文件会覆盖前面文件中定义的名字相同的常量。(C)

下面关于拦截器的说法,错误的是:
A, Struts2拦截器是不可插拔的,拦截器不是AOP的一种实现,和AOP没有关系.
B, Struts2拦截器栈就是将拦截器按一定的顺序联结成一条链。在访问被拦截的方法或字段时,Struts2拦截器链中的拦截器就会按其之前定义的顺序被调用。
C, Struts2拦截器的实现原理相对简单,当请求struts2的action时,Struts 2会查找配置文件,并根据其配置实例化相对的拦截器对象,然后串成一个列表,最后一个一个地调用列表中的拦截器.
D, 拦截器是动态拦截Action调用的对象。它提供了一种机制可以使开发者可以定义在一个action执行的前后执行的代码,也可以在一个action执行前阻止其执行。
考点:考察对拦截器的理解(A)

7, struts2的拦截器的执行顺序是:
A, 先是:拦截器,action,result,然后返回时候是result,action,拦截器
B, 先是:action,result,拦截器,然后返回时候是 拦截器,result,action,
C, 先是:action,result,拦截器,然后返回时候是result,action,拦截器
D, 先是:action,拦截器,result,然后返回时候是result,拦截器,action
考点:了解拦截器内部执行顺序 (A)


8, 下面关于拦截器调优,说法错误的是:
A, 关闭logging和devMode
B, 使用正确的HTTP头(缓存控制和过期时间)
C, 使用session存储变量,减轻页面负担
D, 不要使用你不需要的拦截器
考点:考察对拦截器进行调优的一些常用方法 (C)

9, 下面关于Result说法错误的是:
A, Struts2将Result列为一个独立的层次
B, Result是为了解决MVC框架中,如何从Control层转向View层这样一个问题而存在的
C, 模板显示的基本原理,需要将预先定义好的模板(Template)和需要展示的数据(Model)组织起来,交给模板引擎,才能够正确显示。而这部分工作,就由模板自身完成的,与Result层无关。
D, Result能够对JSP,Freemarker/Velocity模板,甚至是JSON对象等等这些显示类型进行区分,并封装合理的跳转逻辑。
考点:了解Result的作用 (C)

10, 在Result的结果类型中,表示重定向到另一个action的是_ ____.
考点:考察常用的结果类型 redirectAction
11, 默认的Result的结果类是___ ____.
考点:考察常用的结果类型 dispatcher


12, 关于struts2的验证,下面说法错误的是.
A, 不能在execute方法中进行验证。
B, 可以在execute方法中进行验证。
C, 可以写成validateXxx(),这样struts2会自动调用进行验证。
D, 可以继承ActionSupport,重写validate()方法来进行验证。
考点:考察验证的方法(A)

13, 有一个类UserAction,要想对这个类里面的字段,使用struts2自带的验证器进行验证,则应该采用的方法是:
A, 在UserAction的UserActionclass目录下,建立UserAction-validation.xml文件
B, 在UserAction的UserActionclass目录下,建立UserActionValidation.xml文件
C, 可以在webapp下面,建立UserAction-validation.xml文件
D, 可以在webapp下面,建立UserActionValidation.xml文件
考点:考察如何使用struts2自带的验证器(A)


14, 对于使用validate方法进行验证的时候,下面说法错误的是:
A, 方法最后要返回值,用来表示执行方法之后的跳转。
B, validate方法是在execute方法前执行的。
C, 在validate方法中,可以把错误信息通过addFieldError方法加到错误对象中,然后在页面中显示出来。
D, 如果在validate方法中,有错误信息被添加到错误对象中,那么就不会再执行execute方法来。
考点:考察对validate的了解(A)

15, struts2的核心标签库有__Html标签___,___bean标签___,___logic标签_____.列出3个即可
考点:考察常用的标签。

16, 在空格处填写正确的语句,并写出的执行结果:
有一个jsp页面,ifTag.jsp.代码如下:
<%@ page contentType=”text/html;charset=GBK” %>
<%@ taglib prefix=”s” uri=”/struts-tags” %>

<s:set name=”score” value=”____________”/>
<s:if test=”#score<60”>
不及格
</s:if>
<s:elseif test=”#score>=60 && #score<85”>
及格
</s:elseif>
<s:else>
优秀
</s:else>
启动tomcat服务器后,在浏览器输入下面的URL:
http://localhost:8080/test/ifTag.jsp?score=88
填入的一句是____,打印结果是__ __。
考点:考察如何请求时候传参数 #parameters.score[0] 优秀

17, 请求页面后,显示的值
<%@ page contentType=”text/html;charset=GBK” %>
<%@ taglib prefix=”s” uri=”/struts-tags” %>
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="s" uri="/struts-tags" %>

<s:iterator value="{'radio','lisi','go'}" status="status">
<s:property value="#status.count"/>
<s:property value="#status.index"/>
<s:property value="#status.first"/><br>
</s:iterator>
考点:考察常用标签的使用
1 0 true
2 1 false
3 2 false
18, 下面关于国际化,说法错误的是:
A, 全局的国际化资源文件放在src目录下,在struts.xml中定义常量声明
B, 局部的国际化资源文件分为包级别的、和类级别的。
C, 在包级别的、类级别的、和全局的里面有同名的信息时,类级别的信息会覆盖包级别,包级别会覆盖全局的。
D, 在包级别的、类级别的、和全局的里面有同名的信息时,全局级别的信息会覆盖包级别,包级别会覆盖类级别的。
考点:考察对国际化的了解(D)

19, struts2提供了多种方法来访问资源文件中的本地化消息,下面说法错误的是:
A, 可以在action中访问本地化消息
B, 可以在jsp页面中访问本地化消息
C, 可以在表单标签的属性中访问本地化消息
D, 不能在资源文件中访问本地化消息
考点:考察国际化的使用(D)


20, 有下面一段代码,请在横线上填写正确的方法:
<%@ page contentType="text/html; charset=UTF-8"%>
<%@taglib prefix="s" uri="/struts-tags"%>
<html>
<head>
<title>Hello World</title>
</head>
<body>
<h2><s:text name="HelloWorld"/></h2>
<h2><s:property value="%{_____ ______ ('HelloWorld')}"/></h2>
</body>
</html>
考点:考察如何从属性文件中取值 getText


21,请简述struts2的工作流程

考点:考察工作流程
基本简要流程如下:
(1)检索和用户请求匹配的ActionMapping实例,如果不存在,就返回请求路径无效信息;
(2)如果ActionForm实例不存在,就创建一个ActionForm对象,把客户提交的表单数据保存到
ActionForm对象中;
(3)根据配置信息决定是否需要表单验证.如果需要验证,就调用ActionForm的validate()方法;
(4)如果ActionForm的validate()方法返回null或返回一个不包含ActionMessage的ActuibErrors对象, 就表示表单验证成功;
(5)ActionServlet根据ActionMapping所包含的映射信息决定将请求转发给哪个Action,如果相应的 Action实例不存在,就先创建这个实例,然后调用Action的execute()方法;
(6)Action的execute()方法返回一个ActionForward对象,ActionServlet在把客户请求转发给 ActionForward对象指向的JSP组件;
(7)ActionForward对象指向JSP组件生成动态网页,返回给客户;


22,struts2中,页面和后台传值的三种方式:___属性传值___,___对象传值___,__session传值__.
考点:考察页面和后台的值传递
23, 说说在struts2中,解决中文乱码的几种方式?
考点:考察乱码的处理
在struts2里面,最好将所有字符都设成utf-8
比如:
<%@ page contentType=”text/html; charset=UTF-8″%><%@ page pageEncoding=”UTF-8″ %>
在struts.properties 添加:
struts.locale=zh_CNstruts.i18n.encoding=UTF-8
在web.xml加个filter
<!– zh-cn encoding –><filter><filter-name>struts-cleanup</filter-name><filter-class>org.apache.struts2.dispatcher.ActionContextCleanUp</filter-class></filter><filter-mapping><filter-name>struts-cleanup</filter-name><url-pattern>/*</url-pattern></filter-mapping>

在action中设定字符编符
HttpServletResponse response = null;response = ServletActionContext.getResponse();request.setCharacterEncoding(”utf-8″);response.setContentType(”text/html;charset=utf-8″);


24,struts2 Action中获取request, response session对象的方法
考点:考察获得对象的方法
非IoC方式:
ActionContext ctx = ActionContext.getContext();

HttpServletRequest request = (HttpServletRequest)ctx.get
(ServletActionContext.HTTP_REQUEST);

HttpServletResponse response = (HttpServletResponse)ctx.get
(ServletActionContext.HTTP_RESPONSE);

Map session = context.getSession();

IoC方式:


HttpServletRequest request;
HttpServletResponse response;
SessionMap session;

public void setSession(Map map) {
this.session = (SessionMap) map;
}

public void setServletRequest(HttpServletRequest request) {
this.request = request;
}

public void setServletResponse(HttpServletResponse response) {
this.response = response;
}
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值