1 |
单选 |
2 |
多选 |
3 |
问答与分析 |
4 |
程序填空 |
5 |
程序设计(该部分无) |
需要word版资料详见文章末尾,免费自提
1、Java的三种注释:单行、多行和文档注释。
2、常用的元注解:
(1)当 @Retention 应用到一个注解上的时候,它解释说明了这个注解的存活时间。取值如下:
(2) @Target 指定了注解运用的地方。
1、Java的3个版本
(1)Java SE:用于桌面应用软件的开发
(2)Java EE:用于开发高访问量、大数据量、高并发量的网站
(3)Java ME:用于嵌入式系统和移动平台的开发
2、B/S架构
(1)优点:客户端无需安装,有Web浏览器即可;B/S架构无需升级多个客户端,升级Web服务器即可。
(2)缺点:在跨浏览器上,B/S架构不尽如人意;表现要达到C/S程序的程度需要花费不少精力;在速度和安全性上需要花费较大的设计成本。
3、常见的Java web服务器
Tomcat服务器、Resin服务器、JBoss服务器、WebSphere服务器、WebLogic服务器
4、常见的Java IDE
Jcreator、netbeans、IDEA、Eclipse 、MyEclipse
5、HTTP请求的两种方式:GET和POST。
只有一种情况可以发送POST请求:
6、GET和POST的区别
(1)GET在请求行中提交数据,发送的数据会显示在地址栏上;POST在请求体中提交数据,发送的数据不会显示在地址栏中
(2)GET无法发送大数据量;POST可以发送大数据量,理论上没有限制。
(3)GET只能发送字符串数据;POST可以发送任何类型的数据,包括字符串、视频、声音、图片等。
(4)W3C的建议:GET请求适合从服务器端获取数据;POST请求适合向服务器端传送数据。
7、如何选择使用GET请求和POST请求?
(1)如果是从服务器获取资源,比如搜索,建议使用GET;如果是向服务器提交数据,建议使用POST。
(2)有敏感数据,比如登录,使用POST。
(3)传送数据不是字符串,比如文件上传,必须POST。
(4)传送的数据很多,使用POST。
1、Servlet运行在Servlet容器(Web应用服务器/Tomcat)中,负责与客户端进行通信。
2、静态页面开发技术:HTML、css、javascrpit
3、动态页面开发技术:JSP/Servlet、ASPX、PHP
4、Srevlet的配置
(1)基于XML文件的方式:在web.xml中配置
(2)基于注解的方式:@WebServlet
5、Servlet的生命周期方法
(1)无参构造函数:当servlet第一次被访问时,调用构造方法创建对象。只调用一次。
(2)init:只调用一次(在第一次访问Servlet时被调用一次),初始化对象。
(3)service:调用N次,执行业务逻辑方法。该方法在访问servlet时,都会被调用。
(4)destory:只调用一次,在servlet对象被销毁之前调用,完成清理资源等工作。
1、JSP(Java Server Pages)主要作用:代替Servlet程序回传html页面。
2、JSP的本质是一个Servlet。 当第一次访问 jsp页面的时候,Tomcat 服务器会把jsp 页面翻译成为一个java源文件,并将它编译成为.class文件。
3、JSP将Java代码嵌入到静态的HTML中,从而产生动态的输出;在客户端的HTM源代码中无法看到JSP页面中的Java代码。
4、JSP中嵌入java程序有三种方式:JSP程序段、JSP声明、JSP表达式
5、JSP程序段
(1)作用:执行 Java 逻辑代码
(2)格式:<% Java代码 %>
(3)特点:JSP程序段翻译之后在_jspService ()方法中、
6、JSP声明
(1)作用: 给jsp翻译出来的java类定义方法、属性。
(2)格式: <%! 声明java代码 %>
(3)特点: JSP声明翻译之后会在放在Java类中。
7、JSP表达式
(1)作用: 在jsp页面上输出数据。
(2)格式: <%= 表达式 %>
(3)特点:JSP表达式会被翻译到 _jspService()方法中;JSP表达式会被翻译成为out.print()输出到页面上;JSP表达式不能以分号结束。
8、out.print()和out.write()
(1)print()在子类JspWriter中定义,write()是Writer类的方法。
(2)print()可将各种类型的数据转换成字符串输出,而write()只能输出字符、字符数组和字符串等与字符相关的数据
(3)使用print()和write()都可以输出字符串,但是,如果字符串对象的值为null时,print方法将输出内容为“null”的字符串,而write方法则是抛出NullPointerException异常。
1、request是HttpServletRequest类型,常用方法:
(1)String getContextPath():获取当前web应用的上下文路径,比如/web6
(2)String getMethod():返回客户端请求方式,一般是GET/POST
(3)String[] getParameterValues(String key) :通过key获取value
(4)String getParameter(String key) :通过key获取value一维数组中的首元素。
(5)void setCharacterEncoding(String charset):设置为setCharacterEncoding(“utf-8”),用于解决post请求的中文乱码。
(6)void setAttribute(String key,Object value) :通过键值对的形式保存数据。
(7)Object getAttribute(String key) :通过key取出value。
(8)RequestDispatcher getRequestDispatcher(String path) :返回一个RequestDispatcher对象,该对象的forward方法用于请求转发。
2、response 是HttpServletResponse类型,常用方法:
(1)void setCharacterEncoding(String charset):指定服务器响应给浏览器的编码。
服务器发给浏览器的数据默认是按照ISO-8859-1编码,浏览器接收到数据后按照默认的字符集(通常是GBK)解码后显示。
(2)void setContentType(String type) :指定服务器响应给浏览器的编码,同时浏览器也是根据这个参数对其接收到的数据进行重新编码(或者称为解码)。常见的用法为setContentType(“text/html;charset=UTF-8”);
(3)PrintWriter getWriter():获取通向浏览器的字符流
(4)ServletOutputStream getOutputStream():获取通向浏览器的字节流。例如,ImageIO.write(image, "jpg", response.getOutputStream())作用为将图片输出在浏览器上。
(5)void sendRedirect(String path):重定向页面
(6)void addCookie(Cookie cookie):添加Cookie
3、Web中的资源跳转包括两种方式:转发和重定向
(1)转发: request.getRequestDispatcher("/b").forward(request, response);
转发是服务器内部的资源跳转,使用的是服务器端路径
(2)重定向:response.sendRedirect(request.getContextPath()+"/b");
重定向使用的是客户端路径。
4、转发和重定向的区别:
(1)转发由request触发;重定向由response触发
(2)转发是一次请求,浏览器地址不变;重定向是两次请求,浏览器的地址发生变化。
(3)转发只能在服务器端完成资源的跳转;重定向还可以实现跨app的资源跳转。
5、什么时候使用转发,什么时候用重定向?
(1)想实现跨app的资源跳转,必须使用重定向。
(2)如果两个页面之间需要通过 request来传值,则必须使用转发。
(3)重定向可以防止“浏览器刷新,导致用户重复提交表单”的问题。
6、表单
(1)表单最基本的标签是,它的属性type决定了表单元素的类型。
text:文本框;password:密码框;radio:单选按钮;checkbox:复选框;reset:重置按钮;button:普通按钮;submit:提交按钮
(2)
(3)
1、session对象是HttpSession类型,代表着服务器和客户端一次会话的过程。session对象存储于服务器中,用来保存特定用户会话所需的数据。在一次会话中,当用户在 Web页之间跳转时,存储在session对象中的变量将不会丢失。
2、session对象通常用于保存跨请求的数据: 验证码、登录用户信息、购物车
3、服务器采用“超时机制”来判断客户端的会话是否结束。
4、session的强制失效:调用HttpSession对象的invalidate()方法
5、自定义session的失效时间
(1)在程序中手动设置session的失效时间
session.setMaxInactiveInterval(30 * 60);//失效时间单位为秒
(2)在项目的web.xml文件中配置session的失效时间
(3)在
6、 JSP的四大域对象
(1)page 作用域:内置对象是 pageContext,类型为PageContext,只在当前jsp页面使用
(2)request 作用域:内置对象是 request,类型为HttpServletRequest,在一次请求内有效。
(3)session 作用域:内置对象是session,类型为HttpSession,在一次会话内有效。
(4)application 作用域:内置对象是application,类型为ServletContext,对应整个web应用,被所有会话共享。
1、cookie不是JSP的内置对象。
2、session和cookie的区别
(1)session:服务器端的会话技术,数据保存在服务器;保存的数据是 Object;随着会话的结束而销毁
(2)cookie:客户端的会话技术,数据保存在客户端;保存的数据是 String;可以长期保存在客户端的电脑中
3、Cookie的生命指的是,cookie在客户端的有效时间。
(1)setMaxAge(-1):cookie的maxAge属性的默认值就是-1,表示只在浏览器内存中存活。一旦关闭浏览器,cookie就会消失。
(2)setMaxAge(60*60):表示cookie对象可存活1小时。当生命大于0时,浏览器会把cookie保存到硬盘上,就算关闭浏览器或者重启客户端电脑,cookie也会存活1小时;
(3)setMaxAge(0): 如果浏览器已经保存了cookie,那么可以通过cookie的setMaxAge(0)来删除cookie。无论是在浏览器内存中,还是在客户端硬盘上都会删除这个Cookie。
4、特殊字符以及中文的cookie处理
(1)使用URLEncodor.encode()方法,将中文存放到Cookie中。
String name = URLEncoder.encode("姓名", "UTF-8");
String value = URLEncoder.encode("张三", "UTF-8");
Cookie c = new Cookie(name, value);
response.addCookie(c);
(2)在获取Cookie时,需要先使用URLDecoder.decode()方法解码。
Cookie[] cookies = request.getCookies();
if (cookies != null) {
for (Cookie cookie : cookies) {
String name = URLDecoder.decode(cookie.getName(), "UTF-8");
String value = URLDecoder.decode(cookie.getValue(), "UTF-8");
out.print(name + ": " + value + "
");
}
}
5、Cookie的路径的作用是,决定浏览器访问服务器的某个资源时,需要将浏览器端保存的哪些Cookie带给服务器。
★★★6、如果没有设置Cookie的路径,默认是当前资源的所在路径。例如,http://localhost:8084/web8/a/AServlet 的所在路径为:web8/a
这样当访问以下资源时,只有在web8/a这个路径下的,才会带上AServlet保存的cookie:
http://localhost:8084/web8/a/AServlet(相同路径)
http://localhost:8084/web8/a/xxxxx(同目录)
http://localhost:8084/web8/a/xxxxx/xxxx(子目录)
★★★ 7、通过void setPath(String uri)设置Cookie的路径。
1)、 cookie.setPath("/");//设置cookie的路径为当前服务器
比如: http://localhost:8084/web8/a/AServlet,这个路径,只要是在http://localhost:8084
路径下的,都会带上ASerlet保存的cookie。
http://localhost:8084/web8/a/AServlet(相同路径)
http://localhost:8084/web8/a/xxxxx(同目录)
http://localhost:8084/web8/a/xxxxx/xxxx(子目录)
http://localhost:8084/web8/b/xxxxx/(不同目录)
http://localhost:8084/web9/a/xxxxx(不同路径)
2)、 cookie.setPath(request.getContextPath());//设置cookie的路径为当前web应用
比如: http://localhost:8084/web8/a/AServlet,这个路径,只要是在web8路径下的,都会带上ASerlet保存的cookie。
http://localhost:8084/web8/a/AServlet(相同路径)
http://localhost:8084/web8/a/xxxxx(同目录)
http://localhost:8084/web8/a/xxxxx/xxxx(子目录)
http://localhost:8084/web8/b/xxxxx/(不同目录)
1、使用 Statement 进行开发有两个问题:
(1)需要频繁拼接 String 字符串,出错率较高。
(2)存在 SQL 注入的风险。
2、PreparedStatement(预处理)是Statement 的子类,提供了 SQL 占位符的功能。PreparedStatement使用“?”占位符,提升了代码的可读性和可维护性,并且这种绑定参数的方式可以有效地防止SQL注入攻击。
1. (单选题)以下Java版本中,用于开发高访问量、大数据量、高并发量的网站的是( )
A. J2SE B. J2EE C. J2ME D. J2WE
2. (单选题)设有如下代码:
与上述代码等价的注解语句为( )
A. @WebServlet("/t") B. @WebServlet("/test")
C. @WebService("/t") D. @WebService("/test")
3. (单选题)为了使得注解保留到程序运行的时候,则应设置@Retention取值为( )
A. RetentionPolicy.SOURCE B. RetentionPolicy.CLASS
C. RetentionPolicy.RUNTIME D. RetentionPolicy.JVM
4. (单选题)用于指定注解运用地方的元注解为( )
A. @Target B. @Retention
C. @Documented D. @Inherited
5. (单选题)关于JSP的说法错误的是( )
A. JSP程序段翻译之后在_jspService ()方法中
B. JSP声明翻译之后会在放在Java类中
C. JSP表达式翻译之后在 _jspService()方法中
D. <%=msg%>翻译后的代码为:out.write(msg)
6. (单选题)以下代码的输出结果为
A. str= B. str=null
C. 运行时抛出异常 D. 编译出错,不能运行
7. (单选题)JSP内置对象application的数据类型为( )
A. Appliction B. ServletConfig
C. ServletContext D. ServletAppliction
8. (单选题)JSP页面在第一次运行的时候被JSP引擎转换为( )
A. CSS文件 B. HTML文件
C. Java文件 D. Javascript文件
9. (单选题)JSP的本质上是一个( )
A. HTML B. Servlet C. Filter D. Javascript
10. (单选题)以下代码的输出结果为( )
<%
String str = null;
out.write(str);
%>
A. 浏览器中输出:null B. 浏览器中显示空白
C. 运行时抛出空指针异常 D. 编译出错,不能运行
11. (单选题)当传送给服务器的数据不是字符串时,需要将标签的method属性设置为
A. hidden B. post C. get D. submit
12. (单选题)定义JSP程序段的代码为( )
A. <%= JSP程序段 %> B. <% JSP程序段%>
C. <%! JSP程序段%> D. <% -- JSP程序段 %>
13. (单选题)在Servlet生命周期方法中,用于执行业务逻辑的方法是( )
A. 无参构造函数 B. init()
C. service() D. destroy()
14. (单选题)与out.print(msg)等价的JSP代码为( )
A. <%=msg%> B. <%!msg%>
C. <%--msg%> D. <% msg%>
15. (单选题)将count变量的值存储于属性名为“count”的application对象中,使用的代码为
A. application.setAttribute("count", count)
B. application.setAttribute(count,"count")
C. application.getAttribute(count,"count")
D. application.getAttribute("count", count)
16. (单选题) 以下程序的执行结果为:
A. 99
a的值为:99
B. c
a的值为:99
C. 99
a的值为:c
D.c
a的值为:c
17. (单选题)表单中的
A. 单选框 B. 复选框
C. 下拉菜单 D. 多行文本框
18. (单选题)表单中的标签表示( )
A. 重置按钮 B. 提交按钮
C. 复选框 D. 单选框
19. (单选题)@Override注解只在源码阶段保留,它的@Retention取值为( )
A. RetentionPolicy.SOURCE B. RetentionPolicy.CLASS
C. RetentionPolicy.RUNTIME D. RetentionPolicy.JVM
20. (单选题)要在浏览器的地址栏上隐藏传输给服务器的参数,需要将