XML文档
- 请编写一个格式良好的XML文档,要求包含足球队一支,队名为Madrid,球员5人:Ronaldo、Casillas、Ramos、Modric、Benzema;篮球队一支,队名为Lakers,队员2人:Oneal,Bryant。里面要求含有注释,注释内容自定。
第三章
编写一个servlet,实现统计网站被访问次数的功能
- ShowTimesServlet 类的编写如下:
- web.xml 的配置信息如下:
请编写一段程序,使程序能读取该servlet的配置信息,从中获得参数名为encoding对应的参数值,并输出到页面上
- TestServlet类如下:
- web.xml 文件配置如下:
第四章:
禁止浏览器缓存页面的核心代码
请编写一个类,该类能够实现访问完app应用下的Servlet后,还能在浏览器地址栏中显示出index.jsp的路径
- MyServlet 程序类如下:
- web.xml 文件配置如下:
请编写一个类,该类使用HttpServletRequest对象的getHeader(“referer”)方法实现下载资源防盗链的功能
- DownManagerServlet 类的实现代码
- web.xml 文件中 DownManagerServlet 的映射信息配置如下
第五章
请设计一个类,使用Cookie技术实现显示用户上次访问时间的功能
- LastAccessServlet 类的实现代码如下:
- web.xml 文件配置如下:
请设计一个程序,使用Session技术实现购物车功能
- 书籍Book类的创建如下:
- 书籍数据库模拟类BookDB的代码如下:
- 显示可购买图书的列表类ListBookServlet的代码如下:
- 购物功能类PurchaseServlet的代码如下:
- 展示所购图书类CartServlet的代码如下:
public class CartServlet extends HttpServlet { public void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { resp.setContentType("text/html;charset=utf-8"); PrintWriter out = resp.getWriter(); // 变量cart引用用户的购物车 List<Book> cart = null; // 变量pruFlag标记用户是否买过商品 boolean purFlag = true; // 获得用户的session HttpSession session = req.getSession(false); // 如果session为null,purFlag置为false if (session == null) { purFlag = false; } else { // 获得用户购物车 cart = (List) session.getAttribute("cart"); // 如果用的购物车为null,purFlag置为false if (cart == null) { purFlag = false; } } /* * 如果purFlag为false,表明用户没有购买图书 重定向到ListServlet页面 */ if (!purFlag) { out.write("对不起!您还没有购买任何商品!<br>"); } else { // 否则显示用户购买图书的信息 out.write("您购买的图书有:<br>"); double price = 0; for (Book book : cart) { out.write(book.getName() + "<br>"); } } } }
- web.xml 文件配置如下:
<servlet> <display-name>ListBookServlet</display-name> <servlet-name>ListBookServlet</servlet-name> <servlet-class> cn.itcast.chapter05.session.example01.ListBookServlet </servlet-class> </servlet> <servlet-mapping> <servlet-name>ListBookServlet</servlet-name> <url-pattern>/ListBookServlet</url-pattern> </servlet-mapping> <servlet> <display-name>PurchaseServlet</display-name> <servlet-name>PurchaseServlet</servlet-name> <servlet-class> cn.itcast.chapter05.session.example01.PurchaseServlet </servlet-class> </servlet> <servlet-mapping> <servlet-name>PurchaseServlet</servlet-name> <url-pattern>/PurchaseServlet</url-pattern> </servlet-mapping> <servlet> <display-name>CartServlet</display-name> <servlet-name>CartServlet</servlet-name> <servlet-class> cn.itcast.chapter05.session.example01.CartServlet </servlet-class> </servlet> <servlet-mapping> <servlet-name>CartServlet</servlet-name> <url-pattern>/CartServlet</url-pattern> </servlet-mapping>
第六章:
请使用include标签编写两个JSP页面,要求:访问b.jsp页面时先输出b.jsp页面的内容,等待5秒,再输出a.jsp页面中的内容
- a.jsp 文件如下:
- b.jsp 文件如下:
请在web.xml文件中使用元素为整个Web应用程序设置错误处理页面。已知:处理状态码为404的页面为404.jsp, 处理状态码为500的页面为500.jsp
- web.xml 文件如下:
第七章:
请按要求编写一个c_ choose.jsp页面,使用<c:choose>、<c:when>和<c:otherwise>这三个标签完成多个条件选择的程序
使用EL表达式和JSTL实现将文本框中的内容输出到页面的功能,在此页面的文本框中输入内容,单击页面提交按钮之后,输入框以及按钮消失,文本框中输入的内容显示到页面
Person类为一个标准的JavaBean类,请设计一个程序,要求使用BeanUtils工具为Person对象赋值
- Person 类如下:
- BeanUtilsDemo01 类如下:
第八章:
已知有一个名为MyServlet的程序,程序可向浏览器输出“Hello MyServlet”。请编写一个用于拦截MyServlet程序的MyFilter拦截器
- 创建MyServlet程序类
- 创建过滤器MyFilter类
- 编写web.xml文件,设置对MyServlet的拦截
如何对ServletContext、HttpSession和ServletRequest这三个域对象属性的变更进行监听?请用代码展示
- 编写一个testattribute.jsp页面,以观察各个域对象属性事件监听器的作用
- 编写一个MyAttributeListener类,该类实现了ServletContextAttributeListener、HttpSessionAttributeListener和ServletRequestAttributeListener接口,并实现该接口中的所有方法
public class MyAttributeListener implements ServletContextAttributeListener, HttpSessionAttributeListener, ServletRequestAttributeListener { public void attributeAdded(ServletContextAttributeEvent sae) { String name = sae.getName(); System.out.println("ServletContext添加属性:" + name + "=" + sae.getServletContext().getAttribute(name)); } public void attributeRemoved(ServletContextAttributeEvent sae) { String name = sae.getName(); System.out.println("ServletContext移除属性: " + name); } public void attributeReplaced(ServletContextAttributeEvent sae) { String name = sae.getName(); System.out.println("ServletContext替换属性:" + name + "=" + sae.getServletContext().getAttribute(name)); } public void attributeAdded(HttpSessionBindingEvent hbe) { String name = hbe.getName(); System.out.println("HttpSession添加属性:" + name + "=" + hbe.getSession().getAttribute(name)); } public void attributeRemoved(HttpSessionBindingEvent hbe) { String name = hbe.getName(); System.out.println("HttpSession移除属性: " + name); } public void attributeReplaced(HttpSessionBindingEvent hbe) { String name = hbe.getName(); System.out.println("HttpSession替换属性:" + name + "=" + hbe.getSession().getAttribute(name)); } public void attributeAdded(ServletRequestAttributeEvent sra) { String name = sra.getName(); System.out.println("ServletRequest添加属性:" + name + "=" + sra.getServletRequest().getAttribute(name)); } public void attributeRemoved(ServletRequestAttributeEvent sra) { String name = sra.getName(); System.out.println("ServletRequest移除属性: " + name); } public void attributeReplaced(ServletRequestAttributeEvent sra) { String name = sra.getName(); System.out.println("ServletRequest替换属性:" + name + "=" + sra.getServletRequest().getAttribute(name)); } }
- 在web.xml文件中,部署 MyAttributeListener事件监听器。
第九章
请编写一个用于读取数据库中users表信息的JDBC程序,要求分别获取字段id、name、password和email字段的值
请按照以下要求设计实现PreparedStatement对象的相关批处理操作
- JDBCUtils工具类的代码如下所示:
import java.sql.*; public class JDBCUtils { // 加载驱动,并建立数据库连接 public static Connection getConnection() throws SQLException, ClassNotFoundException { Class.forName("com.mysql.jdbc.Driver"); String url = "jdbc:mysql://localhost:3306/jdbc"; String username = "root"; String password = "itcast"; Connection conn = DriverManager.getConnection(url, username, password); return conn; } // 关闭数据库连接,释放资源 public static void release(Statement stmt, Connection conn) { if (stmt != null) { try { stmt.close(); } catch (SQLException e) { e.printStackTrace(); } stmt = null; } if (conn != null) { try { conn.close(); } catch (SQLException e) { e.printStackTrace(); } conn = null; } } public static void release(ResultSet rs, Statement stmt, Connection conn){ if (rs != null) { try { rs.close(); } catch (SQLException e) { e.printStackTrace(); } rs = null; } release(stmt, conn); } }
- Example02 的代码如下所示:
public class Example02{
public static void main(String[] args) {
Connection conn = null;
PreparedStatement preStmt = null;
try {
// 加载并注册数据库驱动
conn=JDBCUtils.getConnection();
String sql = "INSERT INTO users(name,password)VALUES(?,?)";
preStmt = conn.prepareStatement(sql);
for (int i = 0; i < 5; i++) {
preStmt.setString(1, "name" + i);
preStmt.setString(2, "password" + i);
preStmt.addBatch();
}
preStmt.executeBatch();
} catch (Exception e) {
e.printStackTrace();
} finally { // 释放资源
JDBCUtils.release(null, preStmt, conn);
}
}
}