====
假设Ganzhou是一个服务目录,其虚拟目录是sun。index.jsp位于Ganzhou的子目录zg中,Tomcat服务器端口为8080。写出访问index.jsp页面的URL地址。
JSP和客户端交互的过程中,客户端的请求被存储在哪个对象中发给Web服务器?
写出获取表单提交的多值参数的方法,并说明参数的含义。
下面哪一个API包不是JSP服务器预加载的?
已知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相对应某个属性的使用格式(即指定某个参数)
将一个页面重定向到另一个页面的语句是什么?
能够保留请求作用域中数据的页面跳转方式是哪个?有哪几种转发的方法?
假设在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>包含文件时,由于每个文件单独编译,所以变量和方法名不冲突
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>
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;
}
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>
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;
}
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>