一、jsp中两种跳转的区别?
request.getRequestDispatcher("/getMessages.jsp").forward(request,response)跳转与
response.sendRedirect(request.getContextPath() + "/getMessages.jsp")跳转的区别
①.forward跳转到的页面能够接受到request设置的属性,
而sendRedirect不能(所以得使用比request范围更广的session设置属性)
②.forward跳转到的页面不必写全路径名,而sendRedirect必须写全路径名
③.forward不能跳转到此web项目以外的连接,而sendRedirect可以跳转到此web项目以外的连接
④.forward跳转后地址栏显示不变,而sendRedirect跳转后显示的是目标的地址信息
⑤.forward跳转的速度相对而言比sendRedirect跳转的速度要快
二、写一下json的数据格式?
下面是第八题选择年份返回月份的json数据
(
{
"1":{cityID:1,cityName:"1"},
"3":{cityID:3,cityName:"3"}
}
)
下面是第八题选择月份返回的json数据
(
{
"3434":
{
Manage_road_id:59,Range:"K0+000-K56+789",Create_date:"2010-11-03",
Weather:"晴",Management_id:"3",Id:"3434",Roadname:"西安绕城高速公路RC",
Companyname:"绕南管理所",Username:"王超"
}
}
)
-------------------------------------------------
[
{"id":1,
"name":"zhangsan",
"address":{"homeAddress":"beijing","companyAddress":"shanghai"},
"friends":[{"id":5,"name":"zhangsan11"},{"id":6,"name":"zhangsan12"}]
},
{"id":2,
"name":"lisi",
"address":{"homeAddress":"jilin","companyAddress":"liaoning"},
"friends":[{"id":3,"name":"lisi11"},{"id":4,"name":"lisi12"}]
}
]
--------------------------------------------------------------------------------------
①无数组
{ "firstName": "Brett", "lastName":"McLaughlin", "email": "aaaa" }
②有数组
三、1、存储过程和函数的区别?
①存储过程,用 EXECUTE 语句执行。
自定义函数,在查询语句中调用。
②存储过程,其返回值不能被直接引用。
自定义函数,其返回值可以被直接引用。
③存储过程,可返回记录集。
自定义函数,可以返回表变量。
④存储过程,可以使用非确定函数。
自定义函数,不允许在用户定义函数主体中内置非确定函数。
⑤存储过程,功能强大,可以执行包括修改表等一系列数据库操作,
也可以创建为 SQL Server 启动时自动运行的存储过程。
自定义函数,用户定义函数不能用于执行一组修改全局数据库状态的操作。
-----------------------------------------------------------------------------------------------------------------------
可以出于任何使用SQL语句的目的来使用存储过程,它具有以下优点:
(1)功能强大,限制少。
(2)可以在单个存储过程中执行一系列SQL语句。
(3)可以从自己的存储过程内引用其它存储过程,这可以简化一系列复杂语句。
(4)存储过程在创建时即在上进行编译,所以执行起来比单个SQL语句快。
(5)不能直接引用返回值
(6)可以有多个返回值,即多个输出参数,并且可以使用SELECT返回结果集。
------------------------------------------------------------------------------------------------------------------------自定义函数
诸多限制,有许多语句不能使用,许多功能不能实现
可以直接引用返回值
用表变量返回记录集
------------------------------------------------------------------------------------------------------------------------
总结:
用户自定义函数在处理同一数据行中的各个字段时,特别方便有用。
虽然这里使用存储过程也能达到查询目的,但是显然没有使用函数方便。
而且,即使使用存储过程也无法处理SELECT查询中的同一数据行中的各个字段的运算。
因为存储过程不返回值,使用时只能单独调用;而函数却能出现在能放置表达式的任何位置。
------------------------------------------------------------------------------------------------------------------------
四、checkbox选择问题?
<tr>
<logic:iterate id="company" name="list" indexId="index">
${ index%4==0 ? "</tr><tr>": "" }
<td align="center">
<input name="fgs_id" type="checkbox" value="${company.id}" checked="checked"
id="${company.id}" οnclick="checkOne('fgs_id',this.checked)">
<label for="${company.id}">${company.name}</label>
</td>
</logic:iterate>
</tr>
<tr>
<td align="right">
<input id="all" type="checkbox" checked="checked"
οnclick="checkAll('fgs_id',this.checked)">
<label for="all">全选</label>
</td>
</tr>
//全选控制单个的选择
function checkAll(str,checked) {
var a = document.getElementsByName(str);
var n = a.length;
for (var i = 0; i < n; i++) {
a[i].checked = checked;
}
}
//单个的选择影响全选
function checkOne(str,checked){
var a = document.getElementsByName(str);
var n = a.length;
var all = document.getElementById("all");
if(checked){
var flag = true;
for (var i = 0; i < n; i++) {
if(a[i].checked){
}else{
flag = false;
break;
}
}
all.checked = flag;
}else{
all.checked = checked;
}
}
五、ibatis怎样调用存储过程?
①修改"Contact.xml"并使用标签来在iBatis中调用存储过程
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sqlMapPUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN"
"http://ibatis.apache.org/dtd/sql-map-2.dtd">
<sqlMap namespace="Contact">
<!--- Calling stored procedure -->
<procedure id="storedInfo" resultClass="Contact">
{ call showData()}
</procedure>
</sqlMap>
②在java代码中调用
import com.ibatis.common.resources.Resources;
import com.ibatis.sqlmap.client.SqlMapClient;
import com.ibatis.sqlmap.client.SqlMapClientBuilder;
import java.io.*;import java.sql.SQLException;
import java.util.*;
public class IbatisStoredProcedure{
public static void main(String[] args) throws IOException,SQLException{
Reader reader = Resources.getResourceAsReader("SqlMapConfig.xml");
SqlMapClient sqlMap = SqlMapClientBuilder.buildSqlMapClient(reader);
System.out.println("All Contacts");
List<Contact> contacts = (List<Contact>)sqlMap.queryForList("Contact.storedInfo",null);
for(Contact c : contacts) {
System.out.print(" " + c.getId());
System.out.print(" " + c.getFirstName());
System.out.print(" " + c.getLastName());
System.out.print(" " + c.getEmail());
System.out.println("");
}
}
}
六、都用过哪些标签?
struts1、struts2、JSTL、自定义标签......
七、jquery怎样取一个文本框的内容?
$(function()
{
$("#testbut").click(function()
{
alert($("#testid").val());
});
});
<input type="text" name="test" id="testid">
<input type="button" name="testb" id="testbut" value="123">
八、级联是怎样实现的?
<div class="pagebar">
<span class="p"> 请选择年份: <select name="provinceName">
<option value="">
---请选择年份---
</option>
<c:forEach items="${ylist}" var="year">
<option value=${year }>
${year }
</option>
</c:forEach>
</select> </span>
<!-- style="width:110px;"---解决在IE6中显示不全的问题 -->
<span class="c"> 请选择月份: <select name="cityName" style="width:110px;">
</select> </span>
</div>
<span class="d" id="record"></span>
var obj;//使用一个全局的变量
var provinceValue;
var cityValue;
//在页面装载的时候完成的一些工作
$(document).ready(function(){
var l = $(".list");
//找到三个下拉框
var province = $(".p").children("select");
var city = $(".c").children("select");
city.parent().hide();//隐藏月份
var district = $(".d");
//给年份下拉框注册事件(选择改变的时候触发)
province.change(function(){
//需要获得当前下拉框的值
provinceValue = $(this).val();
//只要第一个(年份)下拉框内容有变化,第三个(记录列表)下拉框都要先隐藏起来
district.hide();
//如果值不为空,则将下拉框的值传送给服务器
if (provinceValue !== "") {
l.hide();
$.post("InspectionSelect",{keyword: provinceValue, type: "year"},function(data){
//接收并解析数据
obj=data;
city.html("");
$("<option value=''>---请选择月份---</option>").appendTo(city);
//遍历一个js的对象,json的应用。
for(var stockid in obj){
var stock=obj[stockid];
$("<option value='" + stock.cityID + "'>" +
stock.cityName + "</option>").appendTo(city);
}
//月份下拉框显示出来
city.parent().show();
//存放缓存数据,下次就不必再去请求服务器了。
province.data(provinceValue, data);
}, "json"); //json这个参数指定服务器端返回的数据类型。
} else {
//如果值为空,那么第二个下拉框所在span要隐藏起来。
city.parent().hide();
l.show();
}
});
//给月份下拉框注册事件(选择改变的时候触发)
city.change(function(){
//需要获得当前下拉框的值
cityValue = $(this).val();
//如果值不为空,则将下拉框的值传送给服务器
if (cityValue !== "") {
//year这个参数可以不传递,因为IE接受的值为undefined。
$.post("InspectionSelect",{keyword: cityValue, type: "month"
,year: provinceValue},function(data){
//接收并解析数据
obj=data;
district.html("");
var record = document.getElementById("record");
var tableHtml = "<table name='xxx'><thead>表头信息</thead>";
for(var stockid in obj){
var stock=obj[stockid];
//组装表格中的数据
}
tableHtml = tableHtml + "<tfoot>表尾信息</tfoot></table>";
record.innerHTML = tableHtml;
//记录下拉框显示出
district.show();
//存放缓存数据,下次就不必再去请求服务器了。
city.data(cityValue, data);
}, "json");
} else {
//如果值为空,那么第三个(记录列表)下拉框所在span要隐藏起来。
district.hide();
}
});
});
效果图: