一、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}" onclick="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" onclick="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(); } }); });
效果图: