弱校软件构件与中间件技术试题(2016)
2016-12-29 00:07
429 查看
第一章 JavaEE介绍和环境配置
(单选题)下列不属于JavaEE服务范畴的是(D)。A. JMS B. JDBC C. JNDI D. ORB
解:JavaEE服务范畴:
(1) JDBC
(2) JNDI
(3) EJB
(4) RMI
(5) JSP
(6) Java Servlet
(7) XML
(8) JMS
(9) JTA
(10) JavaMail和JAF
(简答题)简述JavaEE的层次结构及包含组件。
解:
(1) 运行在客户端机器上的客户层组件。如应用客户端程序和Applets,是客户层组件,它们可以直接访问数据库。
(2) 运行在JavaEE服务器上的Web层组件。Java Servlet和JavaServer Pages(JSP)是Web组件,它们也可以访问数据库,运行在服务器中Web容器中。
(3) 运行在JavaEE服务器上的业务逻辑层组件。Enterprise JavaBeans(EJB)是业务层组件,也可以访问数据库,运行在服务器中的EJB容器中。
第二章 JDBC
(判断题)JDBC使用数据库厂商驱动连接数据库,可移植性比较好,但需要下载不同的厂商驱动。对解:
数据库厂商驱动可移植性比较好,但是需要进行不同厂商的驱动的下载。
(编程题)用ODBC驱动的方式对t_book(bookid,bookname,bookprice)数据表进行一下操作:
(1) 查询某价格区间的图书;
(2) 查询某字符串前缀的bookid的所有图书(例如:”001”开头);
(3) 添加一条新图书信息(0015,数据库原理,35);
解:
(1)
package xxx.xxx.jdbc; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; public class Select1 { public static void main(String[] args) throws Exception { //连接数据库 String url = "jdbc:mysql://localhost:3306/library?useUnicode=true&characterEncoding=GBK"; String user = "root"; String password = "123456"; Class.forName("com.mysql.jdbc.Driver"); Connection conn = DriverManager.getConnection(url, user, password); //定义价格区间 int minValue = 30; int maxValue = 40; //执行SQL语句 String sql = "select * from t_book where bookprice >= ? and bookprice <= ?"; PreparedStatement ps = conn.prepareStatement(sql); ps.setInt(1, minValue); ps.setInt(2, maxValue); ResultSet rs = ps.executeQuery(); //列出所查询的图书信息: System.out.println("该价格区间的图书有如下:"); while(rs.next()) { String bookid = rs.getString("bookid"); String bookname = rs.getString("bookname"); int bookprice = rs.getInt("bookprice"); System.out.println(bookid+", "+bookname+", "+bookprice); } //关闭连接 rs.close(); ps.close(); conn.close(); } }
(2)
package xxx.xxx.jdbc; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; public class Select2 { public static void main(String[] args) throws Exception { //连接数据库 String url = "jdbc:mysql://localhost:3306/library?useUnicode=true&characterEncoding=GBK"; String user = "root"; String password = "123456"; Class.forName("com.mysql.jdbc.Driver"); Connection conn = DriverManager.getConnection(url, user, password); //定义前缀 String pre = "001%"; //执行SQL语句 String sql = "select * from t_book where bookid like ?"; PreparedStatement ps = conn.prepareStatement(sql); ps.setString(1, pre); ResultSet rs = ps.executeQuery(); //列出所查询的图书信息: System.out.println("所查询的图书信息如下:"); while(rs.next()) { String bookid = rs.getString("bookid"); String bookname = rs.getString("bookname"); int bookprice = rs.getInt("bookprice"); System.out.println(bookid+", "+bookname+", "+bookprice); } //关闭连接 rs.close(); ps.close(); conn.close(); } }
(3)
package xxx.xxx.jdbc; import java.sql.Connection; import java.sql.DriverManager; import java.sql.Statement; public class Insert { public static void main(String[] args) throws Exception { //连接数据库 String url = "jdbc:mysql://localhost:3306/library?useUnicode=true&characterEncoding=GBK"; String user = "root"; String password = "123456"; Class.forName("com.mysql.jdbc.Driver"); Connection conn = DriverManager.getConnection(url, user, password); //执行SQL语句 Statement st = conn.createStatement(); String sql = "insert into t_book(bookid, bookname, bookprice) values('0015', '数据库原理', 35)"; int i = st.executeUpdate(sql); if(i == 1)System.out.println("添加成功!"); else System.out.println("添加失败!"); //关闭连接 st.close(); conn.close(); } }
第三章 JSP基础编程
(单选题)JSP提供了一种输出表达式值的简单方法,输出表达式的格式师(D)。A. <@=表达式> B. < !=表达式> C. < ?=表达式>
D. <%=表达式%>
第四章 JSP内置对象
(单选题)JSP的若干内置对象中,(C)可用于在一次会话内共享数据。A. out B. request C. session D. application
(编程题)编写一个购物车应用。
解:
购物页面
<%@ page language="java" import="java.util.*" pageEncoding="GB18030"%> <html> <body> <h1>xxx网</h1> <hr> <form name="form1" action="addBook.jsp" method="post"> Linux从入门到精通(第2版) <!-- 隐藏表单收集购买商品 --> <input type="hidden" name="bookname" value="Linux从入门到精通"> <input type="submit" value="加入购物车"> </form> <br> <form name="form2" action="addBook.jsp" method="post"> JavaEE程序设计与应用开发 <input type="hidden" name="bookname" value="JavaEE程序设计与应用开发"> <input type="submit" value="加入购物车"> </form> <br> <form name="form3" action="addBook.jsp" method="post"> Python网络数据采集(第3版) <input type="hidden" name="bookname" value="Python网络数据采集(第3版)"> <input type="submit" value="加入购物车"> </form> <br> <form name="form4" action="addBook.jsp" method="post"> PHP从入门到精通 <input type="hidden" name="bookname" value="PHP从入门到精通"> <input type="submit" value="加入购物车"> </form> <br> <br> <a href="cart.jsp">点击这里,查看购物车</a> </body> </html>
加入购物车处理页面:
<%@ page language="java" import="java.util.*" pageEncoding="GB18030"%> <html> <body> <% //处理中文乱码 request.setCharacterEncoding("GB18030"); //得到添加书籍信息 String bookname = request.getParameter("bookname"); ArrayList cart = null; //得到购物车 cart = (ArrayList)session.getAttribute("cart"); //如果购物车为空,就给一个新的购物车 if(cart == null) { cart = new ArrayList(); //保存购物车 session.setAttribute("cart", cart); } //将书籍加入购物车 cart.add(bookname); //刷新和重定向到购物页面 out.println("添加成功, 3秒后, 自动跳到首页面!"); response.setHeader("refresh", "3;url=index.jsp"); %> </body> </html>
查看购物车页面:
<%@ page language="java" import="java.util.*" pageEncoding="GB18030"%> <html> <body> <% ArrayList cart = (ArrayList)session.getAttribute("cart"); //判断购物车是否为空. if(cart == null) { out.print("亲, 您的购物车还是空的呢!<br>"); } else { out.print("您的购物车有:<br>"); for(int i = 0; i < cart.size(); i++) { out.print(cart.get(i)+"<br>"); } } %> <a href="index.jsp">返回首页</a> </body> </html>
第五章 JSP与JavaBean
(简答题)简述DAO、VO的作用原理解:
DAO的作用原理:将访问数据库的操作放到特定的类中去处理,JSP作为表示层,可以在表示层中调用这个特定的类提供的方法,去对数据库进行操作。通常将该Java类叫做DAO(Data Access Object)类,专门负责对数据库的访问。
VO的作用原理:通常情况下,可以使用VO(Value Object)来配合DAO来使用,在DAO中,可以每查询到一条记录,就将其封装为类对象,该类对象就是一个VO。
(编程题)用DAO、VO的方式实现对t_student(stuno, stuname, stuage)数据表的以下查询操作:
(1) 查询所有学生信息;
(2) 查询某个年龄的所有学生信息;
(3) 根据学号查询一个学生的信息,并将查询结果显示在JSP页面上;
(4) 更新一个学生的年龄数据。
解:
Student类:
package xxx.xxx.model; public class Student { private String stuno; private String stuname; private int stuage; public String getStuno() { return stuno; } public void setStuno(String stuno) { this.stuno = stuno; } public String getStuname() { return stuname; } public void setStuname(String stuname) { this.stuname = stuname; } public int getStuage() { return stuage; } public void setStuage(int stuage) { this.stuage = stuage; } }
StudentDao类:
package xxx.xxx.dao; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.Statement; import java.util.ArrayList; import xxx.xxx.model.Student; public class StudentDao { private String url = "jdbc:mysql://localhost:3306/library?useUnicode=true&characterEncoding=GBK"; private String user = "root"; private String password = "123456"; //获得连接 public Connection getConn() throws Exception { Class.forName("com.mysql.jdbc.Driver"); Connection conn = DriverManager.getConnection(url, user, password); return conn; } //查询所有学生信息 public ArrayList selectAllStudents() throws Exception { //存放学生信息 ArrayList students = new ArrayList(); //连接数据库 Connection conn = getConn(); //执行SQL语句 Statement st = conn.createStatement(); String sql = "select * from t_student"; ResultSet rs = st.executeQuery(sql); //封装VO对象,并存放在集合里 while(rs.next()) { //封装VO对象 Student student = new Student(); student.setStuno(rs.getString("stuno")); student.setStuname(rs.getString("stuname")); student.setStuage(rs.getInt("stuage")); //存放集合 students.add(student); } //关闭连接 rs.close(); st.close(); closeConn(conn); return students; } //查询某个年龄的所有学生信息 public ArrayList selectFromAge(int age) throws Exception { //存放学生信息 ArrayList students = new ArrayList(); //连接数据库 Connection conn = getConn(); //执行SQL语句 String sql = "select * from t_student where stuage = ?"; PreparedStatement ps = conn.prepareStatement(sql); ps.setInt(1, age); ResultSet rs = ps.executeQuery(); //封装VO对象,并存放在集合里 while(rs.next()) { //VO对象 Student student = new Student(); student.setStuno(rs.getString("stuno")); student.setStuname(rs.getString("stuname")); student.setStuage(rs.getInt("stuage")); //存放集合 students.add(student); } //关闭连接 rs.close(); ps.close(); closeConn(conn); return students; } //根据学号查询一个学生信息 public Student selectFromStuno(String stuno) throws Exception { //VO对象,存放学生信息 Student student = new Student(); //获得连接 Connection conn = getConn(); //执行SQL语句 String sql = "select * from t_student where stuno = ?"; PreparedStatement ps = conn.prepareStatement(sql); ps.setString(1, stuno); ResultSet rs = ps.executeQuery(); //封装VO对象 while(rs.next()) { student.setStuno(rs.getString("stuno")); student.setStuname(rs.getString("stuname")); student.setStuage(rs.getInt("stuage")); } //关闭连接 rs.close(); ps.close(); closeConn(conn); return student; } //更新一个学生年龄数据 public int updateFromStuno(String stuno, int age) throws Exception { //获得连接 Connection conn = getConn(); //执行SQL语句 String sql = "update t_student set age = ? where stuno = ?"; PreparedStatement ps = conn.prepareStatement(sql); ps.setInt(1, age); ps.setString(2, stuno); int res = ps.executeUpdate(); //关闭连接 ps.close(); closeConn(conn); return res; } //关闭连接 public void closeConn(Connection conn) throws Exception { conn.close(); } }
首页面:
<%@ page language="java" import="java.util.*" pageEncoding="GB18030"%> <html> <body> <form name="select1" action="selectAllStudents.jsp" method="post"> <input type="submit" value="查看所有学生信息"> </form> <hr> <form name="select2" action="selectFromAge.jsp" method="post"> 请输入年龄:<input type="text" name="age"> <input type="submit" value="查询学生信息"> </form> <hr> <form name="select3" action="selectFromStuno.jsp" method="post"> 请输入学号:<input type="text" name="stuno"> <input type="submit" value="查询该学号学生信息"> </form> <hr> <form name="update" action="updateFromStuno.jsp" method="post"> 请输入学号:<input type="text" name="stuno"><br> 请输入年龄:<input type="text" name="stuage"><br> <input type="submit" value="更新"> </form> </body> </html>
(1) 查询所有学生信息;
<%@ page language="java" import="java.util.*" pageEncoding="GB18030"%> <%@ page import="xxx.xxx.model.Student" %> <%@ page import="xxx.xxx.dao.StudentDao" %> <html> <body> <% StudentDao studentDao = new StudentDao(); ArrayList students = studentDao.selectAllStudents(); for(int i = 0; i < students.size(); i++) { Student student = (Student)students.get(i); out.print(student.getStuno()+", "+student.getStuname()+", "+student.getStuage()+"<br>"); } %> <a href="index.jsp">返回首页</a> </body> </html>
(2) 查询某个年龄的所有学生信息;
<%@ page language="java" import="java.util.*" pageEncoding="GB18030"%> <%@ page import="xxx.xxx.model.Student" %> <%@ page import="xxx.xxx.dao.StudentDao" %> <html> <body> <% //处理中文乱码 request.setCharacterEncoding("GB18030"); StudentDao studentDao = new StudentDao(); //获取年龄 String str = request.getParameter("age"); //判断年龄输入是否为空,空的话回到首页面重新输入年龄 if(str == null || str.trim().equals("")){ out.print("年龄不能为空!, 3秒后, 自动跳转到首页面!<br>"); response.setHeader("refresh", "3;url=index.jsp"); return; } int age = Integer.parseInt(str); //存放学生信息 ArrayList students = studentDao.selectFromAge(age); //列出学生信息 for(int i = 0; i < students.size(); i++) { Student student = (Student)students.get(i); out.print(student.getStuno()+", "+student.getStuname()+", "+student.getStuage()+"<br>"); } %> <br> <a href="index.jsp">返回首页</a> </body> </html>
(3) 根据学号查询一个学生的信息,并将查询结果显示在JSP页面上;
<%@ page language="java" import="java.util.*" pageEncoding="GB18030"%> <%@ page import="xxx.xxx.model.Student" %> <%@ page import="xxx.xxx.dao.StudentDao" %> <html> <body> <% request.setCharacterEncoding("GB18030"); StudentDao studentDao = new StudentDao(); Student student = null; //获取学号 String stuno = request.getParameter("stuno"); //判断学号输入是否为空 if(stuno == null || stuno.trim().equals("")) { out.print("学号输入不能为空! 3秒后, 自动跳转到首页面!"); response.setHeader("refresh", "3;url=index.jsp"); return ; } %> <% student = studentDao.selectFromStuno(stuno); //判断该学生存不存在 if(student.getStuno() == null) { out.print("没有该学生! 3秒后, 自动跳转到首页面!"); response.setHeader("refresh", "3;url=index.jsp"); return ; } out.print(student.getStuno()+", "+student.getStuname()+", "+student.getStuage()+"<br>"); %> <a href="index.jsp">返回首页</a> </body> </html>
(4) 更新一个学生的年龄数据。
<%@ page language="java" import="java.util.*" pageEncoding="GB18030"%> <%@ page import="xxx.xxx.model.Student" %> <%@ page import="xxx.xxx.dao.StudentDao" %> <html> <body> <% //处理中文乱码 request.setCharacterEncoding("GB18030"); StudentDao studentDao = new StudentDao(); String stuno = request.getParameter("stuno"); String age = request.getParameter("stuage"); //判断学号和年龄输入是否为空 if(stuno == null || stuno.trim().equals("") || age == null || age.trim().equals("")) { out.print("学号或者年龄输入不能为空! 3秒后, 自动跳转到首页面!"); response.setHeader("refresh", "3;url=index.jsp"); return ; } int stuage = Integer.parseInt(age); Student student = studentDao.selectFromStuno(stuno); //判断学生存不存在 if(student.getStuno() == null) { out.print("没有该学生! 3秒后, 自动跳转到首页面!"); response.setHeader("refresh", "3;url=index.jsp"); return ; } //打印更新前该学生的信息 out.print("更新前:<br>"); out.print(student.getStuno()+", "+student.getStuname()+", "+student.getStuage()+"<br>"); //更新学生信息 int isTrue = studentDao.updateFromStuno(stuno, stuage); //打印更新后该学生的信息 student = studentDao.selectFromStuno(stuno); out.print("更新后:<br>"); out.print(student.getStuno()+", "+student.getStuname()+", "+student.getStuage()+"<br>"); %> <a href="index.jsp">返回首页</a> </body> </html>
第六章 Servlet基础编程
(单选题)为了让servlet能响应用户请求,需要将servlet配置在web应用中,配置servlet是需要修改web.xml文件,主要需要(C)。A. 配置数据源 B.配置应用服务器端口 C. 配置Servlet的名字:对应web.xml文件中< servlet/>元素 D. 配置Servlet的事件
(简答题)如何配置访问Servlet局部参数和全局参数?
解:
配置局部参数:
... <servlet> <init-param> <param-name>name</param-name> <param-value>value</param-value> </init-param> ... </servlet> ...
配置全局参数:
... <context-param> <param-name>name</param-name> <param-value>value</param-value> </context-param> ... <servlet> ... </servlet> ...
第七章 Servlet高级编程
(编程题)编写JSP页面,界面一中输入登录的用户名密码,请求由Servlet处理,若用户名密码相同则跳转到页面二,否则跳转到页面三,请编写页面一和Servlet。解:
页面一:
<%@ page language="java" import="java.util.*" pageEncoding="GB18030"%> <html> <body> <form action="servlets/LoginServlet" method="post"> 用户名:<input type="text" name="username"><br> 密 码:<input type="password" name="password"><br> <input type="submit" value="登录"> </form> </body> </html>
页面二:
<%@ page language="java" import="java.util.*" pageEncoding="GB18030"%> <html> <body> <h1>登陆成功!<h1></h1><br> </body> </html>
页面三:
<%@ page language="java" import="java.util.*" pageEncoding="GB18030"%> <html> <body> <h1>登录失败!<h1></h1><br> </body> </html>
web.xml:
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0"> <display-name>Exam_Servlet</display-name> <welcome-file-list> <welcome-file>index.html</welcome-file> <welcome-file>index.htm</welcome-file> <welcome-file>index.jsp</welcome-file> <welcome-file>default.html</welcome-file> <welcome-file>default.htm</welcome-file> <welcome-file>default.jsp</welcome-file> </welcome-file-list> <servlet> <servlet-name>LoginServlet</servlet-name> <servlet-class>xxx.xxx.servlets.LoginServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>LoginServlet</servlet-name> <url-pattern>/servlets/LoginServlet</url-pattern> </servlet-mapping> </web-app>
LoginServlet:
package xxx.xxx.servlets; import java.io.IOException; import java.io.PrintWriter; import java.io.UnsupportedEncodingException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class LoginServlet extends HttpServlet { public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException { //处理中文乱码 request.setCharacterEncoding("GB18030"); //获取用户名和密码 String username = request.getParameter("username"); String password = request.getParameter("password"); //判断用户名和密码是否为空 if(username == null || username.trim().equals("") || password == null || password.trim().equals("")) { PrintWriter out = response.getWriter(); out.print("用户名或者密码不能为空, 3秒后, 自动跳转到首页面!"); response.setHeader("refresh", "3;url=index.jsp"); return ; } if(username.equals(password)) { response.sendRedirect("/Exam_Servlet/success.jsp"); } else { response.sendRedirect("/Exam_Servlet/fail.jsp"); } } }
第十章 MVC和Struts基本原理
(简答题)简述MVC基本思想和实现方法。解:
MVC基本思想:
M(Model),封装应用程序的数据结构和事务逻辑,集中体现应用程序的状态,当数据状态改变的时候,能够在视图中体现出来。JavaBean非常适合这个角色。
V(View),是Model的外在表现,模型状态改变时,有所体现。JSP非常适合这个角色。
C(Controller),对用户的输入进行响应,将模型和视图联系到一起,负责将数据写到模型中,并调用视图。Java Servlet非常适合这个角色。
MVC实现方法:
(1) 用户在表单中输入,表单提交给Servlet,Servlet验证输入,然后实例化JavaBean。
(2) JavaBean查询数据库,查询结果暂存在JavaBean中。
(3) Servlet跳转到JSP,JSP使用JavaBean,得到它里面的查询结果,并显示出来。
第十一章 Struts标签和错误处理
(单选题)在Struts框架中不包含哪些组件?BA. JSP B. EJB C. ActionServlet D. Action
(简答题)Action如何处理前端错误和业务逻辑错误。
解:
前端错误:ActionForm里面有个validate函数,该函数返回一个ActionErrors对象,它是一个错误集合,专门用来容纳ActionMessage,当内部有ActionMessage时,认为发生了前端错误。流程为:判断是否发生前端错误,如果发生前端错误,则把错误封装在ActionMessage对象中,然后放到ActionErrors中,返回。
业务逻辑错误:Action得到ActionForm中的数据,首先查询数据库,如果需要给客户一个错误信息,首先实例化ActionErrors对象,然后执行业务逻辑。当发生业务逻辑错误时,则实例化一个对应的ActionMessage用来封装这个业务逻辑错误的错误信息,并且添加到ActionErrors对象中。
第十二章 Struts2基础开发
(单选题)Struts2框架下项目开发,编写Action需继承(D)。A. ActionForm B. Action C. ActionServlet D. 不需要
第十三章 Hibernate基础编程
(简答题)简述ORMapping的作用原理。解:在ORMapping中,一个PO对象,一般表示数据表中的一条记录,只是对这个记录的操作可以简化成对这个Bean对象的操作,操作之后数据库中的记录相应变化;框架必须提供一些能够对这些对象进行操作的函数。(其实就是与类对象的变量一一关联)
第十四章 Hibernate高级编程
(判断题)数据库连接信息是 Hibernate映射文件包含的内容。解:×,是配置文件。
第十五章 Spring基础编程
(简答题)简述Spring控制反转和依赖注入的原理。解:
控制反转(IoC):
所有的组件都是被动的,所有的组件初始化和调用都由容器负责。组件处在一个容器当中,由容器负责管理。控制权由应用代码中转到了外部容器,控制权的转移,即所谓反转。
依赖注入(DI):
所谓依赖注入,就是由IoC容器在运行期间,动态地将某种依赖关系注入到对象之中。
(编程题)用Spring框架重构StudentDao,实现LoginAction对Dao的访问。
相关文章推荐
- C#打印机操作类
- [线性规划与网络流24题]网络流常见模型[转载]
- OSChina 周四乱弹 ——站票也能秒变卧铺
- c# 【MVC】WebApi设置返回Json
- C#中DataTable中的Compute方法使用收集
- C#的Json操作类,支持数组,DataTable,DataReader等转Json
- asp.net利用FCK编辑器中的分页符 完成长文章分页
- SQL与ORACLE的外键约束-级联更新和删除
- c# 【MVC】WebApi返回各种类型(图片/json数据/字符串)
- ZPL条码打印类
- SqlServer和Oracle中一些常用的sql语句10 特殊应用
- Linq常见操作示例
- SQL查找 删除重复数据只保留一条
- 在页面里面播放音频文件
- 大型网站架构系列:缓存在分布式系统中的应用(二)
- asp.net(C#)生成Code39条形码 条码枪可以扫描出
- 不用组件的URL重写(适用于较大型项目)
- Javascript数据验证类
- mysql存储过程详解
- 执行Sqlserver中waitfor delay延时操作或waitfor time定时操作