一 HTML & Java Script
HTML
结构
<table></table>
<form></form>
<a href="">ass</a>
<img src="">
java script(****)
1. 在客户端浏览器运行
2. 表单(输入)验证
3. 访问HTML元素(Ajax)
表单元素: formName.elememtName //frm.userName.value
一般的元素:最好通过Id属性访问
document.all("sdd") //不推荐
document.getElementById("") //DOM
通过标签名
<img src="a.jpg" id='s'>
<img src="b.jpg">
var arr = document.getElementsByTagName("img");
for(i = 0; i < arr.lentgth; i++){
var element = arr[i];
}
4. 欠缺的:操作HTML元素的属性document.getElementById("s").src="c.jpg";
有帮助的:CSS(层叠式的样式表)
二 Servlet(*****)
1. Http相关知识
对HTTP协议的理解
a. 基于TCP/IP
b. 无连接(改良:Keep-Alive)
c. 无状态(解决方案:Session, Cookie)
GET/POST区别
2. Servlet相关概念
Servlet生命周期(何时创建?由谁创建?如何响应请求?何时销毁)
(init() , service() , doGet()/doPost(),destroy())
*保证我们开发的servlet可以工作在多线程环境下
3. 掌握Servlet的开发和部署
a. extends HttpServlet
b. 重写doGet()/doPost(),处理http请求
c. web.xml
<servlet/>
<servlet-mapping/>
4. Java Web API
request 与请求有关的数据和方法
1. 用户提交的数据getParameter()
2. Http头 getHeader()
3. CGI变量(服务器的信息)
*request.setCharacterEncoding();解决输入流的乱码问题
*request.setAttribute(); //用于在web 组件(jsp, servlet)之间传递数据
response 与应答有关的数据和方法
1. 输出content (HTML代码),通过输出流
out.write()
out.print()
2. 设置Http响应头
setHeader()//清客户端浏览器缓存的方案
setContentType("text/html;charset=UTF-8");
session
attrbute(get/set/remove)
invalidate()
与Cookie的联系和区别
servletContext(application) (代表Servlet的运行环境,唯一实例)
attrbute(get/set/remove)
1. 如何解决中文乱码问题?
2. forward vs sendRedirect
三 JSP
1. 概念 Java Server Pages(HTML, Servlet)
2. JSP的处理机制 JSP -> .java(/work) -> .class(Servlet)(/work)
<%! %> JSP声明(全局变量和方法)
<% %> JSP小脚本 (处理请求的流程)_jspService()
<%= %> JSP表达式 out.print()
<%-- --%>
四 JSP指令和动作
指令在何时处理?.jsp -> .java
动作在何时处理? runtime
<%@ page pageEncoding="" contentType import errorPage isErrorPage session bufferSize autoFlush
<%@ include file=""
<%@ taglib uri="" prefix=""
<jsp:include page="" flush=""
<jsp:forward page="" flush=""
*<jsp:useBean id class scope type beanName
<jsp:setProperty> jstl
<jsp:getProperty name="" property=""> 不如EL
五 JSP中的隐含对象
在<% %> <%= %>可以直接使用
9个
page (this)
request
session
application(servletContex)
response
pageContext
exception
config
out
六
Java Bean
概念和标准
MVC
概念
编程
七
EL JSTL (对MVC的帮助)
八 过滤器和监听器
过滤器(*)
如何开发?
implements javax.servlet.Filter
doFilter()
web.xml
应用
1. 过滤器要实现javax.servlet.Filter接口
在doFilter方法中实现处理逻辑
2.在web.xml文件中配置过滤器,与servlet的配置类似
1。 乱码问题
2。 访问/权限控制
2. 权限控制(规划url)
a. 页面的目录
b. servlet的URL
权限控制先考虑,后实现
监听器
能监听(2)个对象的(5)个事件
如何开发?
implements ?
web.xml
ServletContextListener 2 响应ServletContext对象的创建和销毁
ServletContextAttributeListener 3 响应ServletContext对象的属性变化
HttpSessionListener 2 响应HttpSession对象的创建和销毁
HttpSessionAttributeListener 3响应HttpSession对象的属性变化
======================================================================
Data Source(tomcat 6) 数据源
-----------
================================
文件上传(实现方式很多,使用第3方开发的组件)
SmartUpload
一:
上传文件的页面
1. <input type="file"
2. <form method="post"
3. <form method="post" ENCTYPE="multipart/form-data"
二: 国际化
三: 分页显示
基于查询:
Mysql : select * from user order by name limit 0,20
Mysql : select * from user order by name limit 20,20
Mysql : select * from user order by name limit ?,20
? = (request.getParameter("page") -1) * 20
Oracle
select b.* from
(select a.*, rownum _row from
(select * from user order by name) a
where rownum <= 40) b
where b._row > 20
40 = (request.getParameter("page") * 20
20 = (request.getParameter("page") -1) * 20
--------------分页导航条的算法
1. 总的记录数 (select count(*) from user) $total
2. 每页显示的条目数 (一般是常量) $page_items
3. 用户当前请求的页码数 (用户提交,默认为1) $page
4.总页数 $total_pages
if ($total % $page_items == 0)
$total_pages = $total / $page_items;
else
$total_pages = $total / $page_items + 1;
第一页: <a href="userList.jsp?page=1" >第一页</a>
上一页: <a href="userList.jsp?page=($page-1)" >上一页</a>
下一页: <a href="userList.jsp?page=($page+1)" >上一页</a>
最后页: <a href="userList.jsp?page=$total_pages" >最后页</a>
1 实现分页的功能
2 项目的准备
移动计费
---------------------
Java中级阶段测试题
一 选择题(30)
1.使用JDBC连接Oracle数据库(Oracle实例名为ORA92,主机为host,端口号为1521)的合法URL为:_____ B
A. jdbc:oracle:thin:@host:1521/ORA92
B. jdbc:oracle:thin:@host:1521:ORA92
C. oracle:jdbc:thin:@host:1521/ORA92
D. oracle:jdbc:thin:@host:1521:ORA92
2.JSP页面之间共享数据的范围由小到大的排列是:_____ A
A. page、request、session、application
B. page、session、request、application
C. request、page、session、application
D. request、session、page、application
3.下面的指令书写正确的是:_____ D
A. <jsp:forword path="a.jsp">
B. <jsp:useBean id="myBean" scope="request">
<jsp:setProperty id="myBean" property="name" value="tom" />
</jsp:useBean>
C. <%@ page import="java.util.*;java.sql.*" %>
D. <jsp:include flush="true" page="a.jsp"/>
4.以下关于Servlet的说法中正确的是:_____ C
A. 在Tomcat启动时即实例化Servlet,以后客户端每次对该Servlet的请求将不会产生该Servlet的新实例
B. Servlet中的各方法的执行顺序是init(), doGet()/doPost()/,service(), destroy()
C. Servlet是非线程安全的,我们编程时必须考虑这个因素
D. 客户端访问Servlet的时候必须指定该Servlet的全路径名,即“包名”加“类名”
5.以下关于JSP page指令的说法中正确的是:_____ A
A. import是page指令中唯一一个可以在同一JSP页面中多次出现的属性
B. page指令中的session属性用于在该JSP页面中创建session
C. 将page指令中的autoFlush指令设置为false可以有效减轻服务器的负担,是值得推荐的做法
D. 只有将isError属性设置为true,才可以在该页面上使用exception隐含对象
6.假设在helloapp应用中有一个HelloServlet类,它位于org.javathinker包下,那么这个类的class文件应该放在什么目录下? _____ D
A. helloapp/HelloServlet.class
B. helloapp/WEB-INF/HelloServlet.class
C. helloapp/WEB-INF/classes/HelloServlet.class
D. helloapp/WEB-INF/classes/org/javathinker/HelloServlet.class
7. 假设在helloapp应用中有一个HelloServlet类,它在web.xml文件中的配置如下:
<servlet>
<servlet-name> HelloServlet </servlet-name>
<servlet-class>org.javathinker.HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name> HelloServlet </servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
那么在浏览器端访问HelloServlet的URL是什么? _____ D
A. http://localhost:8080/HelloServlet
B. http://localhost:8080/helloapp/HelloServlet
C. http://localhost:8080/helloapp/org/javathinker/hello
D. http://localhost:8080/helloapp/hello
8从HTTP请求中,获得请求参数,应该调用哪个方法? _____ C
A.调用HttpServletRequest对象的getAttribute()方法
B.调用ServletContext对象的getAttribute()方法
C.调用HttpServletRequest对象的getParameter()方法
9 JSP内嵌对象session的类型为javax.servlet.http. HttpSession,下述语句会使该对象失效的是:_____ C
A. session.dispose();
B. session.clear();
C. session.invalidate();
D. session.removeAll();
10.当浏览器第二次访问以下JSP网页时的输出结果是_____ C
<!% 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
二 问答题
1.在JDBC开发中,我们总是会将一些问题场景与特定的解决方案(概念)关联起来,请用线将下面的问题场景和与之关联的解决方案(概念)连起来:(5)
jsp页面的分页 2 1 PreparedStatement
执行存储过程 4 2 可滚动的结果集
批量插入数据到数据库 5
执行相互关联的多条数据库操作指令 3 3 事务
向数据库插入一条记录,并获得自增字段的值 1 4 CallableStatement
防止SQL注入攻击 1 5 Batch
2.以下的代码错在何处:(5)
<HTML>
<HEAD><TITLE>Alex Soft</TITLE></HEAD>
<BODY>
<!--Header-->
<jsp:include page="header.jsp" flush="true"/>
<BR>
<jsp:forward page="WEB-INF/foot.jsp">
<jsp:param name="name" value="Testing Name" />
</jsp:forward>
</BODY>
</HTML>
答:
<jsp:include page="header.jsp" flush="true"/>
<jsp:forward page="WEB-INF/foot.jsp">同用时<jsp:include 的flush=" "不能为true
3.请用任意一种SQL方言写出基于查询的页面分页处理语句(5)
答:
Mysql:
SELECT * FROM emp WHERE id=0 ORDER BY name DESC LIMIT 0,20;
Oracle:
select ename,sal from (
select ename,sal ,rownum r from
(select ename,sal from emp order by sal desc)
) where r > 5 and r < 10
4.请写出你在开发Web程序时,处理中文字符编码问题的一些经验(10)
现在将常见的乱码问题分为JSP页面显示中文乱码、表单提交乱码两类。
1)JSP页面中显示中文乱码
尽量使用统一的编码[JSP ,HTML页面乱码],推荐从页面到数据库再到配置文件都使用UTF-8进行编码!
2)表单提交乱码
Post请求:
SetCharacterEncodingFilter的使用,如果是基于Servlet开发的东西,这个Filter只是对POST请求有效,GET一律忽略。
Get请求:
1:GET请求乱码[Ajax]:原因是Tomcat默认请求编码是ISO8859,需要在Tomcat的配置文件 server.xml添加一个参数,URIEncoding=”UTF-8”,这样请求中附件的参数就会以UTF-8来进行编码。
5.请简述你对MVC架构的理解(可画图说明)(10)
M是指数据模型,V是指用户界面,C则是控制器。使用MVC的目的是将M和V的实现代码分离,从而使同一个程序可以使用不同的表现形式。
6.请简述你对DAO模式、工厂模式以及DAO与抽象工厂模式结合(DAO厂模式)的理解(10)
层次更加分明,分离了业务层和数据访问层
有利于系统的扩展。
工厂模式生产Dao对象!修改数据源,生产新的Dao对象
//------------------
利用DAO模式和Abstract Factory模式,本设计方案可解决如下问题:
(1)对数据源的完成透明性。
(2)方便的用户功能扩展性。
(3)方便的维护性。
(4)灵活的系统参数配置。
7.请简述Tomcat的下列文件夹的用途:(5)
1.conf 存放Tomcat配置文件
2.webapps 存放默认的WEB应用
3.work
答:
conf 放置一些tomat配置文件
webapps 默认web应用目录!
Work 工作目录,放置jsp页面转换的.java;.class文件
8.Java Web开发技术中,有很多技术成对出现,它们往往功能相近但是又互有区别。请简述下面各技术的相同点和不同点(20)
1. GET 和POST
2. Cookie和Session
3. sendRedirect和 forword
4. <%@ include.../>与<jsp:include .../>
答:
GET和POST
都是客户端提交数据的方式
GET报头,长度有限制;
post报文,长度没有限制了
-------
Cookie和session
都可以保存特定客户端相关联的数据 [状态]
cookie:保存在客户端[字符串]
session:保存在服务器[对象]
[从应用角度来说cookie可以被用户读取,
session存在客户端的对象,用户获取不]
-------
sendRedirect和forwark
sendRedirect:jsp,jsp之间[不能共用request]
不同网站之间可以实现跳转
forwark Servlet,servlet,jsp,jsp之间 [共用Request文件]
在同一个Web应用之间跳转
-------
<%@include../> <jsp:include.../>
都可以把另外一个页面的内容加载到本身页面
.jsp转换为.java就加载进来了
.java到.class加载进来