• 《JavaWeb程序开发入门》课后题


    第一章

    1、请编写一个格式良好的XML文档,要求包含足球队一支,队名为Madrid,球员5人:Ronaldo、Casillas、Ramos、Modric、Benzema;篮球队一支,队名为Lakers,队员2人:Oneal,Bryant。要含有注释。

    2、在XML Schema文档中,定义一个雇员的年龄为18~58周岁之间。请写出相应的元素声明。

    ------第1题答案------

    <?xml version="1.0" encoding="gb2312" standalone="yes"?>
    <球队列表>
    	<!-- 足球队Madrid -->
    	<球队 类型="足球队">
    		<队名>Madrid</队名>
    		<队员>
    			<姓名>Ronaldo</姓名>
    			<姓名>Casillas</姓名>
    			<姓名>Ramos</姓名>
    			<姓名>Modric</姓名>
    			<姓名>Benzema</姓名>
    		</队员>
    	</球队>
    	<!-- 篮球队Lakers -->
    	<球队 类型="篮球队">
    		<队名>Lakers</队名>
    		<队员>
    			<姓名>Oneal</姓名>
    			<姓名>Bryant</姓名>
    		</队员>
    	</球队>
    </球队列表>

    ------第2题答案------

    <xs:element name="age">
    <xs:simpleType>
      <xs:restriction base="xs:integer">
        <xs:minInclusive value="18"/>
        <xs:maxInclusive value="58"/>
      </xs:restriction>
    </xs:simpleType>
    </xs:element>

    第二章

    1、如何将web应用发布到tomcat上localhost主机,请写出至少3种实现方式?

    2、请问在chapter02应用的web.xml文件中进行哪些配置,可以将welcome.html页面配置成该应用的默认页面?

    ------第1题答案------

    1、直接将web应用部署到tomcat/webapps下

    2、将web应用通过tomcat/conf/server.xml进行配置

    3、创建一个xml文件,并配置web应用信息,将xml文件放置tomcatconfCatalinalocalhost

    ------第2题答案------

    在web-app标签中进行如下配置即可:

    <welcome-file-list>
            <welcome-file>welcome.html</welcome-file>
    </welcome-file-list>

    第三章

    1、简述HTTP1.1协议的通信过程?

    2、简述POST请求和GET请求有什么不同? 

    ------第1题答案------

    1、客户端与服务器端建立TCP连接。

    2、客户端可以向服务器端发送多个请求,并且在发送下个请求时,无需等待上次请求的返回结果。

    3、服务器必须按照接受客户端请求的先后顺序依次返回响应结果。

    4、客户端发出关闭TCP连接的请求

    5、服务器端关闭TCP连接

    ------第2题答案------

    1、 POST传输数据大小无限制

    2、POST比GET请求方式更安全

    第四章

    1、 编写一个servlet,实现统计网站被访问次数的功能。

    2、请编写一段程序,使程序能读取该servlet的配置信息,从中获得参数名为encoding对应的参数值,并输出到页面上。 

    ------第1题答案------

    步骤如下:

    1)新建一个类ShowTimesServlet继承HttpServlet,重写doGet和doPost方法

    2)在doPost方法中调用doGet方法,在doGet方法中实现统计网站被访问次数的功能,用户每请求一次servlet,使访问次数times加1

    3)获取ServletContext,通过它的功能记住上一次访问后的次数

    具体代码实现如下:

    import java.io.*;
    import javax.servlet.*;
    import javax.servlet.http.*;
    public class ShowTimesServlet extends HttpServlet {
    	private static final long serialVersionUID = 1L;
    	protected void doGet(HttpServletRequest req, HttpServletResponse resp)
    			throws ServletException, IOException {
    		ServletContext context = getServletContext();
    		Integer times = (Integer) context.getAttribute("times");
    		if (times == null) {
    			times = new Integer(1);
    		} else {
    			times = new Integer(times.intValue() + 1);
    		}
    		//设置编码,不然中文会变成乱码
    		resp.setContentType("text/html;charset=GB2312");
            //得到输出流对象
            PrintWriter out=resp.getWriter();
           
            out.println("<html><head><title>");
            out.println("页面访问统计");
            out.println("</title></head><body>");
            out.println("当前页面被访问了");
            out.println("<font color=red size=20>"+times+"</font>次");
            //设置属性,将times保存到当前的上下文中
            context.setAttribute("times",times);
    	}
    	protected void doPost(HttpServletRequest req, HttpServletResponse resp)
    			throws ServletException, IOException {
    		this.doGet(req, resp);
    	}
    }

    ------第2题答案------

    import java.io.*;
    import javax.servlet.*;
    import javax.servlet.http.*;
    public class MyServlet extends HttpServlet {
    	protected void doGet(HttpServletRequest request,
    		HttpServletResponse response) throws ServletException, IOException {
    		PrintWriter out = response.getWriter();
    		ServletConfig config = getServletConfig();
    		String param = config.getInitParameter("encoding");
    		out.println("encoding=" + param);
    	}
    	protected void doPost(HttpServletRequest request,
    		HttpServletResponse response) throws ServletException, IOException {
    		this.doGet(request, response);
    	}
    }

    第五章

    请按照以下要求设计一个实现下载资源防盗链的类。

    1) 创建一个DownManagerServlet类,继承HttpServlet类。

    2) 在doGet()方法中,判断是否可以进行资源下载

    ------答案------

    步骤如下:

    1)创建一个DownManagerServlet类,使其继承HttpServlet类并重写该类的doGet()方法。

    2)在doGet()方法中,使用HttpServletRequest对象的getHeader("referer")方法得到字段referer的值,并判断是否可以进行资源下载。

    3)如果不能下载,则进入下载页。

    具体代码实现如下:

    public class DownManagerServlet extends HttpServlet {
        public void doGet(HttpServletRequest request, HttpServletResponse response)
    	throws ServletException, IOException {
    	response.setContentType("text/html;charset=utf-8");
    	PrintWriter out = response.getWriter();
            // 获取referer头的值
    	String referer = request.getHeader("referer");
            // 获取访问地址
    	String sitePart = "http://" + request.getServerName();
    	if (referer != null && referer.startsWith(sitePart)) {
    		// 处理正在下载的请求
    		out.println("dealing download ...");
    	} else {
    		// 非法下载请求跳转到download.html页面
    		RequestDispatcher rd = request.getRequestDispatcher("/download.html");
    		rd.forward(request, response);
    	}
        }
    }

    第六章

    1、 请使用Cookie技术实现显示用户上次访问时间的功能。

    2、请设计一个类,使用Session技术实现购物车功能。 

    ------第1题答案------

    步骤如下:

    1)创建一个LastAccessServlet类,使其继承HttpServlet类并重写该类的doGet()方法。

    2)在doGet()方法中,使用request.getCookies()得到所有cookie形成的cookie数组,并进行遍历。

    3)如果遍历过程中找到cookie信息中存在lastAccess属性则输出,否则创建cookie对象,设置值为当前时间并发送给客户端。

    4)cookie的存活时间为1小时,访问当前应用中的所有资源客户端都回送cookie信息。

    具体代码实现如下:

    package cn.itcast.chapter06.cookie.example;
    import java.io.IOException;
    import java.util.Date;
    import javax.servlet.ServletException;
    import javax.servlet.http.Cookie;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    public class LastAccessServlet extends HttpServlet {
        private static final long serialVersionUID = 1L;
        public void doGet(HttpServletRequest request,
        HttpServletResponse response)throws ServletException, IOException {
    	response.setContentType("text/html;charset=utf-8");
            /*
             * 设定一个 cookie 的name : lastAccessTime
             * 读取客户端发送cookie 获得用户上次的访问时间显示*/
            String lastAccessTime = null;
            // 获取所有的cookie,并将这些cookie存放在数组中
            Cookie[] cookies = request.getCookies();
            for (int i = 0; cookies != null && i < cookies.length; i++) {
                if ("lastAccess".equals(cookies[i].getName())) {
                    // 如果cookie的名称为lastAccess,则获取该cookie的值
                    lastAccessTime = cookies[i].getValue();
                    break;
                }
            }
            // 判断是否存在名称为lastAccess的cookie
            if (lastAccessTime == null) {
                response.getWriter().print("您是首次访问本站!!!");
            } else {
                response.getWriter().print("您上次的访问时间"+lastAccessTime);
            }
            // 创建cookie,将当前时间作为cookie的值发送给客户端
            Cookie cookie = new Cookie("lastAccess",new Date().toLocaleString());
            cookie.setMaxAge(60*60);//保存1小时
            //访问chapter06下资源时回送cookie
            cookie.setPath("/chapter06");
            // 发送 cookie
            response.addCookie(cookie);
        }
    }

    ------第2题答案------

    步骤如下:

    1)创建一个PurchaseServlet类,使其继承HttpServlet类并重写该类的doGet()方法。

    2)在doGet()方法中,使用request.getSession()实现购物车。

    3)将session的id保存到cookie中。

    4)重定向到购物车页面。

    具体代码实现如下:

    public class PurchaseServlet extends HttpServlet {
        public void doGet(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {
            // 获得用户购买的商品
            String id = req.getParameter("id");
            if (id == null) {
                // 如果id为null,重定向到ListBookServlet页面
                String url = "/chapter06/ListBookServlet";
                resp.sendRedirect(url);
                return;
            }
            Book book = BookDB.getBook(id);
            // 创建或者获得用户的Session对象
            HttpSession session = req.getSession();
            // 从Session对象中获得用户的购物车
            List<Book> cart = (List) 
            session.getAttribute("cart");
            if (cart == null) {
                // 首次购买,为用户创建一个购物车(List集合模拟购物车)
                cart = new ArrayList<Book>();
                // 将购物城存入Session对象
                session.setAttribute("cart", cart);
            }
            // 将商品放入购物车
            cart.add(book);
            // 创建Cookie存放Session的标识号
            Cookie cookie = new Cookie("JSESSIONID", session.getId());
            cookie.setMaxAge(60 * 30);
            cookie.setPath("/chapter06");
            resp.addCookie(cookie);
            // 重定向到购物车页面
            String url = "/chapter06/CartServlet";
            resp.sendRedirect(url);
        }
    }

    第七章

    1、 请使用include标签编写两个JSP页面,

    要求:输出b.jsp页面的内容,等待5秒,再输出a.jsp页面。

    2、 已知一个datetime.jsp页面用于显示当前时间。请编写jsp   

    文件用于显示“欢迎来到传智播客,现在的时间是:”+当前时间。 

    ------第1题答案------

    a.jsp代码:

    <%@ page contentType="text/html;charset=UTF-8"%>
    <%Thread.sleep(5000);%>
    a.jsp内的中文<br>

    b.jsp代码:

    <%@ page contentType="text/html;charset=UTF-8"%>
    b.jsp内的中文<br>
    <jsp:include page="a.jsp" flush="true" />

    ------第2题答案------

    <%@page language="java" contentType="text/html; charset=UTF-8"%>
    <html>
        <head>
            <title>欢迎你</title>
        </head>
        <body>
            欢迎来到传智播客,现在的时间是:
            <%@ include file="datetime.jsp"%>
        </body>
    </html>

    第八章

    1、请编写一个类,实现通过对象得到完整的“包.类”名称的功能。

    2、设计一个程序使用BeanUtils工具为Person对象(JavaBean类)赋值。

        1)直接生成User对象。

        2)使用BeanUtils工具为name属性赋值”youjun”,age赋值为31。

        3)使用BeanUtils工具取出属性值,并在控制台输出。

    ------第1题答案------

    package cn.itcast.javabean;
    class Cs{}
    public class GetClassNameDemo {
    	public static void main(String[] args) {
    		Cs cs = new Cs ();
    		System.out.println(Cs. getClass().getName());
    	}
    }

    ------第2题答案------

    package cn.itcast.chapter08.beanutils;
    import org.apache.commons.beanutils.BeanUtils;
    import cn.itcast.chapter08.javabean.Person;
    public class BeanUtilsDemo01 {
        public static void main(String[] args) throws Exception{
            Person p = new Person();
            //使用BeanUtils为属性赋值
            BeanUtils.setProperty(p, "name", "youjun");
            BeanUtils.setProperty(p, "age", 31);
            //使用BeanUtils获取属性值
            String name = BeanUtils.getProperty(p, "name");
            String age = BeanUtils.getProperty(p, "age");
            System.out.println("名字是"+name+",今年"+age+"岁");
        }
    } 

    第九章

    1、简述什么是MVC设计模式?

    2、简述MVC设计模式中模型(Model)模块的作用? 

     ------第1题答案------

     MVC模式将软件程序分为3个核心模块:模型(Model)、视图(View)和控制器(Controller)

     ------第2题答案------

     1、管理应用程序的业务数据

    2、定义访问控制和修改这些数据的业务规则

    3、为视图提供查询模型状态的方法

  • 相关阅读:
    js 右击
    javascript 中的函数,控制流, 事件委托
    javascript 的 this , js 线程
    javascript 中的var : 隐含变量 全局变量 变量提升
    明日
    ajax循环json 中的 for(var prop in data) 与 hasProperty()
    js继承机制
    callee, caller,toString(),String()
    解决eclipse中jsp下无代码提示问题
    商业模式
  • 原文地址:https://www.cnblogs.com/justdoitba/p/9022481.html
Copyright © 2020-2023  润新知