web技术与应用和jsp学习通试题答案

如果对大家有帮助的话记得点个赞哦

====

综合练习题1

  1. 假设Ganzhou是一个服务目录,其虚拟目录是sun。index.jsp位于Ganzhou的子目录zg中,Tomcat服务器端口为8080。写出访问index.jsp页面的URL地址。

  2. JSP和客户端交互的过程中,客户端的请求被存储在哪个对象中发给Web服务器?

  3. 写出获取表单提交的多值参数的方法,并说明参数的含义。

  4. 下面哪一个API包不是JSP服务器预加载的?

  5. 已知bean类有一个int型属性number,写出其setter方法。

    1)http://localhost:8080/Ganzhou/zg/index.jsp

    2)request

    3)request.getParameter(“数据名称”);

    4)jsp-api.jar,servlet-api.jar,bootstrap.jar

    5)public void setNumber(int number){

    this.number=number}

正确写出JSP页面中访问Bean类tom.jiafei.Circle的标记,如何设置不同的作用域?

 写出从request作用域读取一个Account类型属性ac的语句。(考查getAttribute方法获取数据时需要强制类型转换)

HTTP请求对应的隐含对象是什么?它属性哪个类?提供了哪些获取请求数据的方法?

 如何在web.xml中配置一个Servlet类,包括哪些标记,各有什么作用?

写出setProperty动作标记的几种用法,并说明其含义。




1)   通过scope属性设置作用域

2)int account =(int )request.getAttribute("ac");

3)post 属于httpServletRequest类 方法有

request.getMethod();     //请求方式
request.getRequetURI();  //request.getRequetURL()   请求资源
request.getProtocol();   //请求http协议版本

request.getHeader("name")
request.getHeadernames()
  request.getInputStream()
request.getParamter("实数名”)只能获取一个值参数
request.getParameterValue("参数名")可以获取多个值的参数
request.getParameterNames() 获取所有参数名列表
4)servlet-mapping  指向我们要注册的servlet的类的地址。
    servlet-name
  url-pattern   路径
  servlet
 servlet-name
 servlet-class
5)”/>
 含义:将bean属性的值设置为一个表达式的值或者字符串
2)
 含义:将bean属性的值设置为一个字符串的语法形式
3)
 含义:用HTTP表单的所有参数的值设置Bean相对应的属性的使用格式(即不指定某个参数)
4)
 含义:用HTTP表单的某个参数的值设置Bean相对应某个属性的使用格式(即指定某个参数)
  1. 将一个页面重定向到另一个页面的语句是什么?

    能够保留请求作用域中数据的页面跳转方式是哪个?有哪几种转发的方法?

    假设在jsjapp应用中有一个HelloServlet类,它位于jxust.ieschool包下,那么这个类的class文件应该放在什么目录下?

    A页面的表单提交参数name至B页面,写出在B页面中输出参数值的语句。

    1)  response.sendRedirect("界面名")
    2)重定向  用户可以有多种方式请求Servlet,如  浏览器直接   
       调用,页面     form中提交调用   、  超链接调用 、   Servlet调用  等。
    3)jsjapp.jxust.ieschool.HelloServlet
    4)String name = request.getparameter("name");
    out.println("name");

综合习题二

1

Tomcat的端口号可以在哪个文件中修改?

按作用域由大到小的顺序列出4个作用域隐含对象的名字。

列举常用的几种会话跟踪技术。

写出JSP页面在不同作用域中访问Bean类tom.jiafei.Circle的正确语句。
1)sever.xml
   2) application,session,request,page
   3) URL重写,隐藏表单域,cookie,sesion
    4)使用page指令导入 JavaBean 类:    <%@page import="包名 . 类名" %>
    使用<jsp:useBean>标签声明JavaBean对象:    <jsp:useBean id="实例名" class="包名 . 类名" scope="作用范围"/>
    使用<jsp:getProperty><jsp:setProerty>标签访问JavaBean属性:
    <jsp:getProperty name="实例名" property="Bean中的属性名">    调用Bean中的get方法得到某属性的值
    <jsp:setProperty name="实例名" property="Bean中的属性名">      调用Bean中的set方法给某属性赋值

2

 何谓MVC模式?各扮演什么角色?这种模式有什么好处?

在web.xml中配置Servlet访问路径的标记是哪个?

通过地址栏访问一个Servlet是以get还是以post方式提交数据?表单提交数据的默认方式是get还是post?两者有什么区别?
1)   MVC模式的核心思想是有效地组合“视图”、“模型”和“控制器”。javabean充当model,servlet充当control,jsp界面或html页面充当view。

    好处:在jsp技术中,视图是一个或多个jsp界面,其作用主要是向控制器提交必要的数据和为模型提供数据展示;模型是一个或多个Javabean对象,用于存储数据;控制器为一个或多个servlet对象,根据视图提交的要求进行数据处理操作,并将有关的结果存储到javabean中,然后servlet使用重定向方式请求视图中的某个jsp界面更新显示

2)servlet-mapping和servlet

3)get,post

区别:

1.get是从服务器上获取数据,post是向服务器传送数据

2.get是把参数数据队列加到提交表单的action属性所指的url中,值和表单内各个字段一一对应,在url中可以看到。post是通过HTTP的post机制,将表单内各个字段与其内容放置在HTML header中一起传送到action属性所指的url地址,用户是看不到这个过程的。

3.对于get方式,服务器端用Request.QueryString获取变量的值,对于post方式,服务器端用Request.Form获取提交的数据

4.get传送的数据量较小,不能大于2KB,post传送的数据量较大,一般被默认为不受限制。但理论上,IIS4中最大量为80KB,IIS5中为100KB

5.get安全性非常低,post安全性较高

3
sesson对象的主要方法有哪些?哪个用于判断是否新会话?

 Servlet如何向客户端浏览器输出信息?

通过哪个隐含对象的哪个方法可以实现页面重定向?
 1) 主要方法:setAttribute(String key,Objct obj)

                getAttribute(String Key)

                getAttributeNames()

                removeAttribute(String name)

                getCreationTime()

                getLastAccessedTime()

            getMaxInactiveInterval()

            setMaxInactiveInterval()

            isNew() : 用于判断是否为新会话

            2)PrintWriter out=response.getWriter();
            out.println("");//输出的内容要放在body中

            3)response的sendRedirect()方法

综合习题三

1
设bean类有一个double型属性result,写出该属性的setter方法。

写出从Servlet中重定向到另一个页面的语句。

 response.getWriter()方法返回的是什么类型的对象?它与隐含对象out有什么不同?
 1)public double setResult(Double Result)

    { this.Result=Result;}

    2)response.sendRedirect("a.jsp");

    3)PrintWrite

    区别:1. 这两个对象的类型是完全不同的:内置对象out的类型是JspWriter;response.getWrite()返回的类型是PrintWriter
    2. 获取方式不同:JspWriter是JSP的内置对象,直接使用即可,对象名out是保留字,也只能通过out来调用其相关方法。此外还可以通过内置对象pageContext.getOut();获得;PrintWriter则是在用的时候需要通过内置对象response.getWriter();

2

 编写Servlet的doPost或doGet方法时通常需要抛出哪两种异常?

useBean动作标记的主要属性有哪3个?scope属性有哪些取值?

含param子标记的include动作标记,在被包含的页面中应如何读取参数的值?

在JSP页面中能够执行输出操作的内置对象是哪个?
1) IOException和ServletException

2)<jsp:useBean id="" class="" scope="">

scope取值:page request session application

3)request.getparameter()

4)out

3
目标页面如何输出请求页面提交的数据?

当一个Servlet首次被请求时,服务器会首先调用哪个方法?

设testapp中有个Servlet类为HelloServlet,它在web.xml中的url映射配置为/welcome,则浏览器访问的正确地址是?

用<%! />标记声明的变量,它的作用域是什么?不同访问者会共享吗?
   1)  system.out.println("parameter name");

   2)init()

   3)localhost:8080/testapp/welcome

   4)在<%! %>之间放置java的变量   不同访问者会共享

综合习题四

1

1)client/service 模式 客户端服务器模式C/S模式主要由客户应用程序(Client)、服务器管理程序(Server)和中间件(middleware)三个部件组成。

2)所谓的动态网页,是指跟静态网页相对的一种网页编程技术。静态网页,随着html代码的生成,页面的内容和显示效果就基本上不会发生变化了——除非你修改页面代码。而动态网页则不然,页面代码虽然没有变,但是显示的内容却是可以随着时间、环境或者数据库操作的结果而发生改变的。

3)javabean是一种JAVA语言写成的可重用组件

4)request对象是从客户端向服务器发出请求,包括用户提交的信息以及客户端的一些信息。

2

    1)B/S模式是一种以Web技术为基础的新型的MIS系统平台模式。

    2)Servlet(Server Applet)是Java Servlet的简称,称为小服务程序或服务连接器,用Java编写的服务器端程序,具有独立于平台和协议的特性,主要功能在于交互式地浏览和生成数据,生成动态Web内容。

   3) HTML称为超文本标记语言,是一种标识性的语言。它包括一系列标签.通过这些标签可以将网络上的文档格式统一,使分散的Internet资源连接为一个逻辑整体

    4)request对象是从客户端向服务器发出请求,包括用户提交的信息以及客户端的一些信息。

3

 1) JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序。简言之,JDBC就是Java用于执行SQL语句实现数据库操作的API。

2)jsp是一种动态网页技术标准。

3)session对象用于存储特定的用户会话所需的信息 。

4)MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑

综合习题五

 1)<%!   %>声明的变量将为所有访问该界面的用户共享,知道web应用停止
 2)相同点:都能实现界面跳转或者是服务器资源的跳转
    不同点:
    1.sendRedirect("目的地")是response对象的方法,forward(request,response)是request.getRequestDispatcher("目的地")方法,返回的对象requestDispatcher的方法;
    2.sendRedirect() 在客户端运行,会产生新的请求,地址栏显示新地址,forward()在服务端运行,地址栏的地址不变
    3.sendRedirect()跳转之后,不能获取request中的对象,而forward()可以获取
    4.forward()速度更快。
 3)1.get是从服务器上获取数据,post是向服务器传送数据
    2.get是把参数数据队列加到提交表单的action属性所指的url中,值和表单内各个字段一一对应,在url中可以看到。post是通过HTTP的post机制,将表单内各个字段与其内容放置在HTML header中一起传送到action属性所指的url地址,用户是看不到这个过程的。
    3.对于get方式,服务器端用Request.QueryString获取变量的值,对于post方式,服务器端用Request.Form获取提交的数据
    4.get传送的数据量较小,不能大于2KB,post传送的数据量较大,一般被默认为不受限制。但理论上,IIS4中最大量为80KB,IIS5中为100KB
    5.get安全性非常低,post安全性较高

综合练习七

1)提高代码的可复用性:对于通用的事务处理逻辑,数据库操作等都可以封装在javabean中,通过使用javabean的属性和方法可快速就行程序设计程序易于开发和维护:实现逻辑类的封装,是事务处理和显示互不干扰支持分布式运用:多用javabean,尽量减少java代码和html的混编
2)应用范围不同:session是对应某一个用户的,而application是整个网站共用的
   存活时间不同:session是在站点的页面从打开到被关闭之前一直存活的,关闭或跳转到其他网站就会使session死掉。而application是从站点发布以来一直存活的,除非重启了服务站点。
   session的中文是“会话”的意思,asp中的session代表了服务器与客户端之间的“会话”
   利用session可以存储浏览者的一些特定信息,如:浏览者的姓名,性别。所用服务器的类型以及访问时间application对象是一个应用程序级的对象,它包含的数据在整个web站点中被所有用户使用,并且可以在网站运行期间持久的保存数据
3)servlet:它的作用就是一个连接桥梁的作用,相当于mvc结构中的c→control控制层,它可以获得前台数据,并调用后台方法对数据进行处理之后再将结果发回给前台。
在容器tomcat启动之后,servlet不会立即被访问,除非在配置文件中加上了启动即初始化,否则,servlet将会在第一次被访问的时候被初始化,然后用这个初始化对象响应用户请求,当该请求结束了,servlet将不会被销毁,等到第二次,第三次....之后所有的请求都将是同一个servlet对象在处理,知道tomcat容器关闭,servlet被销毁。
4)相同点:都用于包含其他页面
    不同点:1)语法格式
                  文件包含指令:<%@ include file="path" %>
                  动作包含指令:<jsp:include page="url"/>
            2)包含文件的编译
                   文件包含的include指令是静态包含。即使被包含的文件中有jsp代码,在包含时也不被编译执行。将两个页面组成一个后,编译处理为一个java文件,最后返回结果界面
                   <jsp:include>动作标识的原理是将被包含的页面编译处理后将结果包含在页面中。当该标识被执行时,程序会请求转发到被包含的页面并将执行结果输出到浏览器中,然后返回包含页继续执行后面的代码。
            3)属性表达式支持
                   include指令通过file属性指定被包含的文件,该属性不支持任何表达式
                   <jsp:include>表示通过page属性指定被包含的文件,该属性支持jsp表达式
            4)变量/方法能否重命名
                   在应用include指令包含文件时,由于被包含的文件最终会生成一个文件,所以包含文件不能有重名的变量和方法

            在应用<jsp:include>包含文件时,由于每个文件单独编译,所以变量和方法名不冲突

综合练习8

login.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
  <head>
    <title>login.jsp页面</title>
  </head>
  <body>
    <form action="logincheck.jsp" method="post" name=form >
     <font size="5">登录界面</font><br>
     用户名:<input type="text" value=""name="username"><br>
     密    码:<input type="text"value="" name="password"><br>
     <input type="submit"value="提交"name="submit">
     <input type="reset"value="重置">   
    </form>
<%=(String)request.getAttribute("usertxt") %>
  </body>
</html>

logincheck.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
  <head>
    <title>login.jsp页面</title>
  </head>
  <body>
<%
String referer = request.getHeader("Referer");
if(referer==null||referer.trim().length()==0||
!referer.equals("http://localhost:8888/loginDemo/login.jsp")){
response.sendRedirect("login.jsp");
return;
}
request.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
String name=request.getParameter("username");
String password=request.getParameter("password");
//判断登陆界面的用户名和密码,根据输入的不同情况进行不同的处理
if(name.trim().equals("admin")&&password.trim().equals("admin"))
{
request.setAttribute("usertxt", "欢迎您!");
request.getRequestDispatcher("login.jsp").forward(request, response);
}
else if(name.trim().equals(null)&&password.trim().equals(null))
{
request.setAttribute("usertxt", "请先输入用户名和密码再提交哦!");
request.getRequestDispatcher("login.jsp").forward(request, response);
}
else{
request.setAttribute("usertxt", "用户名或密码错误,请重新输入");
request.getRequestDispatcher("login.jsp").forward(request, response);
}
%>
  </body>
</html>

综合练习9

one.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
 <form action="two.jsp" method="post" name=form >

     <font size="5">登录界面</font><br>

      长  :<input type="text" value=""name="length"><br>

      宽  :<input type="text"value="" name="width"><br>

     <input type="submit"value="提交"name="submit">   

    </form>
</body>
</html>

two.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    <jsp:useBean id="sumBean" class="Bean.sumBean" scope="request"/>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<jsp:setProperty name="sumBean" property="*"/>
矩形的长和宽
长:<jsp:getProperty name="sumBean" property="length"/>
宽:<jsp:getProperty name="sumBean" property="width"/>
<br>
面积:<jsp:getProperty name="sumBean" property="area"/>
</body>
</html>

sumbean.java

package Bean;

public class sumBean {
double length=0;
public double getLength() {
    return length;
}
public void setLength(double length) {
    this.length = length;
}
public double getWidth() {
    return width;
}
public void setWidth(double width) {
    this.width = width;
}
public double getArea() {
    area=length*width;
    return area;
}
public void setArea(double area) {

    this.area = area;
}
double width=0;
double area=-1;
}

综合练习10

input.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
 <form action="insert.jsp" method="post" name=form >

     

      姓名  :<input type="text" value=""name="name"><br>

      性别  :<input type="text"value="" name="sex"><br>
      
       籍贯  :<input type="text"value="" name="from"><br>

     <input type="submit"value="提交"name="submit">   

    </form>
</body>
</html>

insert.jsp

<%@ page language="java" import="java.util.*,java.sql.*" pageEncoding="utf-8"%>
<%@ page contentType="text/html;charset=utf-8"%>
<%  
   request.setCharacterEncoding("UTF-8");  
   response.setCharacterEncoding("UTF-8");  
   response.setContentType("text/html; charset=utf-8");  
%>  
<html>
<head>
<title>add message into table </TITLE>
</head>
<body>
<%
String name=request.getParameter("name"); //从表单获得
String sex=request.getParameter("sex"); //从表单获得
String from=request.getParameter("from"); //从表单获得

java.util.Date date=new java.util.Date();
String datetime=new Timestamp(date.getTime()).toString();
try
{
String driverName = "com.mysql.jdbc.Driver";
String DBUser = "root";
String DBPasswd = "123456";
String DBName = "html_db";
String connUrl = "jdbc:mysql://localhost:3306/" + DBName + "?user=" + DBUser + "&password=" + DBPasswd;
Class.forName(driverName).newInstance();
Connection conn = DriverManager.getConnection(connUrl);
Statement stmt = conn.createStatement();
stmt.executeQuery("SET NAMES UTF8");
String insert_sql = "insert into person_tb values('" + name + "','" + sex + "','" + from+ "')";
String query_sql = "select * from person_tb";

try {
stmt.execute(insert_sql);
}catch(Exception e) {
e.printStackTrace();
}
try {
ResultSet rs = stmt.executeQuery(query_sql);
while(rs.next()) {
%>
姓名:<%=rs.getString("name")%> </br>
性别:<%=rs.getString("sex")%> </br>
籍贯:<%=rs.getString("from")%> </br> </br>
<%
}
}catch(Exception e) {
e.printStackTrace();
}
//rs.close();
stmt.close();
conn.close();
}catch (Exception e) {
e.printStackTrace();
}
%>
</body>
</html>

综合练习11

purchase.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
 <form action="balance.jsp" method="post" name=form >

     <font size="5">登录界面</font><br>

      产品名称  :<input type="text" value=""name="name"><br>

     购买数量  :<input type="text"value="" name="number"><br>

     <input type="submit"value="提交"name="submit">   

    </form>
</body>
</html>

balance.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    <jsp:useBean id="sumBean" class="Bean.sumBean" scope="request"/>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
产品名称和购买数量
产品名称:<jsp:getProperty name="sumsBean" property="name"/>
购买数量:<jsp:getProperty name="sumsBean" property="number"/>
<br>
总金额:<jsp:getProperty name="sumsBean" property="sum"/>
</body>
</html>

sumsBean.java

package Bean;

public class sumsBean {
String  name;
public String getName() {
    return name;
}
public void setName(String name) {
    this.name = name;
}
public double getNumber() {
    return number;
}
public void setNumber(double number) {
    this.number = number;
}
public double getSum() {
    sum=number*100;
    return sum;
}
public void setSum(double sum) {
    this.sum = sum;
}
double number;
double sum;

}

综合练习12

radio.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

<html>

  <head>

    <title>答题页面</title>

  </head>

  <body>

    <form action="check.jsp" method="post" name=form >

     <font size="5">1.驾驶机动车在道路上违法交通安全法的行为,属于什么行为?</font><br>

     <input type="radio" value="A"name="R">A:违章行为<br>
     <input type="radio"value="B" name="R">B:违法行为<br>
     <input type="radio"value="C" name="R">C:过失行为<br>
     <input type="radio"value="D" name="R">D:违规行为<br>

     <input type="submit"value="提交"name="submit">
    </form>
    
    
<%=(String)request.getAttribute("usertxt") %>

  </body>

</html>

check.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
    <%
    
    String res=request.getParameter("R");
    if(res.equals("B"))
    {
        request.setAttribute("usertxt", "恭喜你,答对了!");
        request.getRequestDispatcher("login.jsp").forward(request, response);
    }else
    {
        request.setAttribute("usertxt", "打错了,很遗憾!");
        request.getRequestDispatcher("login.jsp").forward(request, response);
    }
    %>
</body>
</html>

你可能感兴趣的:(模板)