一、JavaEE及web应用程序的基本概念
1. J2EE三层体系结构
客户层(Browser)、web应用层(Tomcat)、数据层(数据库)
2. J2EE组件
包括Servlet,JSP等(只能在应用服务器上运行),不同于Java组件Javabean(客户端和服务器上都能运行)(名词解释).
3. J2EE全称
Java 2 Enterprise Edition,J2EE技术主要是java的服务器端技术(填空题)
4. 对J2EE技术的理解
用于开发便于组装、健壮、可扩展、安全的服务器端Java应用。Java EE技术的基础是Java,不但拥有Java SE平台的所有功能,同时还提供了对Servlet、JSP、XML等企业级技术的全面支持,形成了一个开发健壮且可移植的企业级应用系统的完整体系结构。(名词解释:J2EE)
5. B/S模式的特点
是一种分布式系统,通过客户端上的浏览器和web服务器、应用服务器、数据库服务器之间进行交互和协作来完成某个任务。客户端零配置。(问答题)。
6. Web应用程序的特点(Web app)
是运行在web服务器上的程序,也是基于B/S模式的程序,其特点是客户端软件就是浏览器,程序安装或部署在应用服务器中,由应用服务器装载并运行并给客户端的请求提供相应的服务。(问答题)
7. Web应用程序的组成、开发及运行步骤。
8. Web应用程序的配置文件web.xml
9. Tomcat是运行web应用程序的服务器端软件。
注意:面应用程序(App或Application)的区别
桌面应用程序是指具有主方法的Java应用程序,可以独立在JVM机上运行。
注意:J2EE组件和Java组件的区别。
二、JSP(Java Server Page)
1. 工作原理
当访问某个.jsp文件时,服务器会将.jsp 文转换为.java文件(servlet),然后创建其实例,并调用其service()方法进行响应。
2. JSP网页的组成元素
注释:(<%-- --%
>、指令元素:(<%@ %>
)、脚本元素:(<% %
>模板数据(静态html标签<body><form>
)、动作元素:(jsp:forward
等)。
或者说是由静态的Html网页内容和动态的脚本语言程序和JSP标签组成。
3. JSP脚本
程序脚本<%int a = 0;a++;%>
,a是局部变量
表达式脚本<%=%>
声明语句<%! int a;%>
a是全局变量
4. JSP指令元素和动作元素
指令元素:
<%@ page import = "java.util.Date"%>
导入类库,jsp编译时执行
<%@ include file = "filename"%>
(静态包含)
<%@ taglib uri = "taglibURI" prefix = "tagPrefix"%>
动作元素:
<jsp:include></jsp:include>
动态包含
<jsp:forward page = "target">
转发,跳转
<jsp:useBean>
例<jsp:useBean id = "var" class = "classPathName" scope = "?"/>
创建对象
5. Jsp的内置对象及其作用
- request:表示客户端的请求,包含了所有的请求信息,是Servlet中service(或doPost/doGet方法)方法的resquest参数。
作用:封装客户端向服务器端的请求 - response:处理JSP生成的响应,然后将响应结果发送给客户端。是service(或doPost/doGet方法)方法的response参数。
作用:封装服务器向客户端发送的内容 - out:表示输出流,将作为请求的响应发送给客户端,是PrintWriter的一个实例。
作用:用于向客户输出内容 - application:作用于整个应用程序。是ServletContext的一个实例。 不同的浏览器共享一个数据,服务器关闭后结束。是全局的。
作用:服务器端用来在同一个web应用程序下的不同用户、不同浏览器、不同页面之间共享数据的集合对象,每个动态页面都可以在其中存放属性变量,用来在不同页面和不同用户中共享 - session:表示用户的会话状况,用此机制可以轻易的识别每一个用户,能保存和跟踪用户的会话状态。是HttpSession的一个实例。浏览器断开连接时结束。
作用 :在服务器端创建一个集合对象,用来在同一个浏览器的不同请求之间共享数据,每次客户端请求的动态页面都可以在其中存放或者更新属性变量提供给另外的动态页面访问该变量。
原理:给每个用户创建session时会分配一个唯一的ID号,同时发给客户端,每次客户端访问服务器,会把该id传给服务器,服务器由此定位该客户端的session.
6. 转发< jsp:forward >和重定response.sendRedirect的区别
转发是由服务器直接转到另一个页面后返回客户端,客户端不知道,而且必须是在同一网站内,且不能直接放在脚本中必须用{}隔开;重定向是要先回客户端再有客户端请求,可直接放在脚本中
7. <%@include %>与< jsp:include >区别
使用前者时包含的过程是静态的,静态包含就是指被包含的文件将会被插入到JSP文件中去。和<%@ include%>
指令不同,<jsp:include>
包含的内容可以是动态改变的,它在执行时才确定,而前者包含的内容是固定不变的。静态包含结果只有一个文件,动态包含结果还是两个文件。
8. JSP网页和 Html网页的区别
前者有服务器端执行的Java代码,也就是JSP脚本或标签,后者只有静态html标签和javascript代码,只能在客户端执行。
三、Servlet
1. Servlet的定义
服务器小程序,是用Java编写的服务器端程序,由客户端请求、服务器调用和执行的。 父类是GenericServlet
或HttpServlet
.
2. servlet的生命周期
(初始化阶段、运行阶段、销毁阶段)当第一次请求某个servlet时服务器自动载入并实例化该servlet并完成对其的一些初始化工作;当一个请求到达容器时,容器寻找相应的servlet实例,然后创建一个线程,根据此线程调用service方法,doGt,doPost方法,当调用结束后调用destroy方法销毁该servlet
3. Servlet与JavaBean的区别
前者由服务器加载后者由用户程序加载。Servlet必须继承自HttpServlet并覆盖service或doGet或doPost方法,并且要在web.xml配置 ;Javabean就是一个普通的Java类,里面为属性增加了getter和setter并提供默认构造。可以在多层架构的各层存在。想用它作什么都行。而Servlet是展示层的,应当只在展示层存在。常作为MVC中的控制器。
四、JDBC访问数据库步骤
(Java Data Base Connectivity
,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,由一组用Java语言编写的类和接口组成。
利用JDBC访问数据库的步骤:
- 注册驱动
Driver drv = new DriverConstruvtor();
DriverManager.registerDriver(drv);
- 建立数据库连接
Connection con = DriverManager.getConnection(String url, String username, String passwd);
- 创建数据库操作语句
Statment stm = null;
ResultSet rs = null;
Try{
Stm= connection.createStatement();
Rs= stm.execteQuery(SQL);
}catch(SQLExecption e){}
执行SQL
Statement执行SQL的语法:
executeQuery() executeUpdate() execute()
处理结果集
While(rs.next()){
System.out.println(rs.getXXXMethod(column));
}
五、EL(Expression Language)与JSTL(JSP Standard Tag Library)
- 表达式语言的形式:
${}
- 判断
<c:if ></c:if>
- 循环
<c:forEach></c:forEach>
<sql:
setDataSource var="ds"
driver="sun.jdbc.odbc.JdbcOdbcDriver"
url="jdbc:odbc:mydb"/>
<sql:update var=”result” dataSource=”${ds}”>
<sql:update></sql:update>
<sql:query />
六、JSF,JPA的基本概念、基本原理和基本框架
七、Struts,Hibernate,Spring的基本概念、基本原理和基本框架
六、模拟题
1.简述题
①Jsp和Servlet的比较
同:工作原理相同,都是接收了客户端的请求经过处理再返回客户端。
异:servlet是JSP的基础,所有的jsp网页均能转化成servlet类,jsp本质上就是servlet类,是被服务器翻译成了特殊的servlet类;前者是在服务器端运行的而后者jsp是在客户端运行的;前者只能用程序输出,后者可写标签向客户端浏览器中输出所有网页内容
②简述session的工作原理
答:session:表示用户的会话状况,用此机制可以轻易的识别每一个用户,能保存和 跟踪用户的会话状态。是HttpSession的一个实例。浏览器断开连接时结束,
作用 :在服务器端创建一个集合对象,用来在同一个浏览器的多次请求之间共享数据,每次客户端请求的动态页面都可以在其中存放或者更新属性变量提供给另外的动态页面访问该变量
③写出JDBC的作用或查询数据库的语句
答:JDBC的全称是:Java DataBase Connectivity,是Java程序连接并操纵数据的类和接口的统称。
查询过程:
Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”);//加载驱动
Connection con=DriverManager.getConnection(“jdbc:odbc:mydb”);//创建连接
Statement st=con.createStatament();//创建语句
String sql2=“select * from user”;
ResultSet rs=st.executeQuery(sql2);
While(rs.next()){
System.out.println(rs.getString(1)+”,”+rs.getString(2));
}
con.close();
St.close();
2. 填空题
- Jsp网页和HTML网页最主要的区别:(Jsp有服务器端代码)
<%@page import="java.util.*"%>
标签是在(Jsp网页被翻译成Java类的时候)被执行。- Servlet是(J2EE或JavaEE)组件
- 客户端每次对servlet的请求都会导致( )方法被执行
- Jstl中用于查询数据库的标签是:(
<sql:query>
) - 表达式语言的格式是:(
${}
) - Struts中相当于mvc模式中model的类是:(
Action
) - Java程序通过(
java.sql
)包来访问数据库 - J2EE的全称是(java2 Enterprise Edition)
- 在jsp页面中,表达式脚本的标签是(
<%=%>
) - 在jsp中用来向客户端输出字符串的内置对象(out)
- 引入java.util.类库的指示标签是%@page import=”java.util.*”
- Servlet的父类是(
Httpservlet
) - 在web.xml中部署Servlet的标签是(
<servlet>
) - Jstl中循环的标签是(
<c:forEach>
)
3. 程序题
① 登录程序
输入用户名和密码,如果正确转向Success.jsp,否则转向failure.jsp
<form>
用户名:<input name=”name”/>
密码:<input type=”password” name=”password”/>
<input type=”submit”>
</form>
<%
String name= request.getParameter(“name”);
String password= request.getParameter(“password”);
If(name.equals(“Admin”) and password.equals(“123”))
Response.sendRedirect(“success.jsp”);
Else
Response.sendRedirect(“failure.jsp”);
%>
② 向数据库插入一条记录
Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”);
Connection con = DriverManager.getConntect(“jdbc:odbc:mydsn”);
Statement st = con.createStatement();
st.executeUpdate(“insert into T_User (‘zhangsan’,’123’)”);
st.close();
con.close();
③ 定义JavaBean,并在JSP网页中创建对象实例,读入参数,设置属性,放入session中。
class book{
String name;
double price;
String sex;
Public void setName(){} public String getName(){}
…
}
<%
Book b= new Book();
b.setName(request.getParameter(“name”))
……
session.setAttribute(“book”,b);
%>
或
<jsp:useBean id=”book” class=”javabean.Book” scope=”session”/>
<jsp:setProperty name=”book” property=”*”/>
<form>
</form>
④ 注册JSP,输入用户名、密码保存在User对象中,再将User对象保存到seesion中,输出注册成功。
<form>
用户名:<input name=”name”/>
密码:<input type=”password” name=”password”/>
<input type=”submit”>
</form>
<%
String name= request.getParameter(“name”);
String password= request.getParameter(“password”);
User user = new User();
user.setName(name);
user.setPassword(password);
session.setAttribute(“user”);
out.println(“注册成功”);
%>
4. 建模题,画出基于MVC模式的应用程序框架,并说明每个元素的作用包括箭头。
基于JSP+Servlet+JavaBean
针对网上书店订购系统中的书籍查询功能,给出MVC模式的设计,不要求实现,只给出MVC模型,可以使用
JSP+Servlet+JavaBean,JSF+JPA,Struts+Spring+Hibernate
任何一种MVC模式都可以。
查询页面和查询结果页面:用户交互界面,用来输入查询条件和显示结果
BookServlet:控制类,用来接收用户请求,并调用其它类完成相应操作并返回结果。
BookBean:存放书籍相关信息
BookDAO:完成将书籍信息插入数据库或者从数据库中查询相关书籍信息
DB:关系数据库,用来存放书籍关系表。
基于JSP+Action
只要把上面的BookServlet换成BookAction就行了。