<script type="text/javascript">
window.parent.dialogArguments.document.execCommand('Refresh');
</script>
浮层内嵌iframe及frame集合窗口,刷新父页面的多种方法
<script type="text/javascript">
window.parent.location.reload();
</script> 弹出子页面<script type="text/javascript">
window.opener.location.reload();
</script>
子窗口刷新父窗口
<script type="text/javascript">
window.self.opener.location.reload();
</script>
刷新以open()方法打开的窗口[上面的弹出子页面也可以完成]<script type="text/javascript">
window.opener.location.href=window.opener.location.href;
</script>
javascript对象冒充示例
<script type="text/javascript">
function Animal(name,age){
this.name=name;
this.age=age;
this.eat=function(){
alert("动物可以吃东西");
}
}
function Dog(name,age){
//把Animal构造函数赋给this.an
this.an=Animal;
//运行调用@!!!!非常重要
this.an(name,age);
}
var dog=new Dog("小白",2);
alert(dog.name);
dog.eat();
</script>
<input name="keyword" type="text" value="请输入关键字" onFocus="this.value=''" onBlur="if(!value){value=defaultValue;}"/>
<a href="javascript:void(0)" onclick="changeMa()">看不清</a>
onclick事件会被引发,但是不会发生任何跳转,相当于一个死链接
<select id="myCol" onchange="getChange()">
<option value="1">
大连交大
</option>
<option value="2">
东北财经
</option>
<option value="3">
大连海事
</option>
</select>
<select id="myGet">
</select>
<script type="text/javascript" >
function getChange() {
//获取到第一个select表单value值
var myCol = document.getElementById("myCol").value;
//拼接成要获取值的url
var url = "getCateGory?myCol=" + myCol; //url
//利用jquery的ajax方法,使用此方法要引jquery包
htmlobj = $.ajax( {
url : url,
async : false
});
//此处利用json处理值,还需要引json包,在服务器端可以使用GSON转化数据,响应当前页面
/*服务器端:
//需要引GSON包
//创建一个Gson对象
Gson gson = new Gson();
//返回一个json格式的字符串
String pStr = gson.toJson(user);
System.out.println(pStr);
out.print(pStr);
*/
//接取响应值,并且转化成JSON对象
var obj = JSON.parse(htmlobj.responseText);
//此变量是为拼接而做
var options = "";
var myGet = document.getElementById("myGet");
//myGet.removeChild("option");
//删除现有option节点
for ( var i = 1; i <= myGet.length; i++) {
myGet.remove(i);
}
myGet.remove(myGet.selectedIndex);
//利用循环,在此将新的option添加上
for(var i=0;i<obj.length;i++){
alert(obj[i].uUserName);
var myOption=document.createElement("option");
myOption.setAttribute("value",obj[i].uId);
var testN=document.createTextNode(obj[i].uUserName);
myOption.appendChild(testN);
myGet.appendChild(myOption);
//此种方法最简单,但是没有技术含量
//options+="<option value='"+obj[i].uId+"'>"+obj[i].uUserName+"</option>";
}
// myGet.innerHTML=options;
}
</script>
这里的级联查询仿照Hibernate中的一对多关系映射,写个例子留个笔记
(地址表主表,用户表从表)
用户表(类)User
成员变量如下,并且对应有get和set方法
private String uId;
private String uUserName;
private String uPassWord;
private String uTelephone;
private int uAge;
private Date uBirthday;
对应的表如下:
地址表(类)Address成员变量如下:
private int no;
private String name;
private List<User> userList;

对应的UserDao中先写:
public List<User> findByAddressId(int a){
String sql="select * from usermbo where address=?";
List<User> users = new ArrayList<User>();
Object[] params=new Object[]{a};
users = jdbcTemplate.query(sql,params, new UserRowMapper() );
return users;
}
private class UserRowMapper implements ParameterizedRowMapper<User>{
public User mapRow(ResultSet rs, int rowNum) throws SQLException {
User user = new User();
user.setuUserName(rs.getString("username"));
user.setuAge(rs.getInt("age"));
user.setuId(rs.getInt("id")+"");
user.setuTelephone(rs.getString("telephone"));
return user;
}
}
此部完成以后,再写AddressDao
@Autowired
private UserDao userDao ;
public List<Address> getAddress(){
String sql="select * from address";
List<Address> addresss = new ArrayList<Address>();
addresss = jdbcTemplate.query(sql, new AddressRowMapper() );
return addresss;
}
private class AddressRowMapper implements ParameterizedRowMapper<Address>{
public Address mapRow(ResultSet rs, int rowNum) throws SQLException {
Address address=new Address( );
address.setNo(rs.getInt("no"));
address.setName(rs.getString("name"));
address.setUserList( userDao.findByAddressId(rs.getInt("no")));
return address;
}
}
Service层再配一下(此层不配也行直接将
@Autowired
private AddressDao addressDao ;引入Controllar中即可)
在Controllar中再写
addressService.getAddress()就可以查出结果
[Address [name=计算力, no=1, userList=[User [uAddress=null, uAge=12, uBirthday=null, uId=11, uPassWord=null, uTelephone=1234567, uUserName=张三]]], Address [name=大连, no=2, userList=[]], Address [name=海南, no=3, userList=[User [uAddress=null, uAge=34, uBirthday=null, uId=12, uPassWord=null, uTelephone=2323232323, uUserName=李四], User [uAddress=null, uAge=33, uBirthday=null, uId=13, uPassWord=null, uTelephone=2323, uUserName=王武]]]]
SPRING-MVC访问静态文件,如jpg,js,css
如何你的DispatcherServlet拦截 *.do这样的URL,就不存在访问不到静态资源的问题。如果你的DispatcherServlet拦截“/”,拦截了所有的请求,同时对*.js,*.jpg的访问也就被拦截了。
目的:可以正常访问静态文件,不要找不到静态文件报404。
方案一:激活Tomcat的defaultServlet来处理静态文件
Xml代码

<servlet-mapping> <servlet-name>default</servlet-name> <url-pattern>*.jpg</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>default</servlet-name> <url-pattern>*.js</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>default</servlet-name> <url-pattern>*.css</url-pattern> </servlet-mapping> 要配置多个,每种文件配置一个
要写在DispatcherServlet的前面, 让defaultServlet先拦截,这个就不会进入Spring了,我想性能是最好的吧。
Tomcat, Jetty, JBoss, and GlassFish 默认 Servlet的名字 -- "default"
Google App Engine 默认 Servlet的名字 -- "_ah_default"
Resin 默认 Servlet的名字 -- "resin-file"
WebLogic 默认 Servlet的名字 -- "FileServlet"
WebSphere 默认 Servlet的名字 -- "SimpleFileServlet"
方案二: 在spring3.0.4以后版本提供了mvc:resources
mvc:resources 的使用方法:
Xml代码

<!-- 对静态资源文件的访问 --> <mvc:resources mapping="/images/**" location="/images/" />
/images/**映射到 ResourceHttpRequestHandler进行处理,location指定静态资源的位置.可以是web application根目录下、jar包里面,这样可以把静态资源压缩到jar包中。cache-period 可以使得静态资源进行web cache
如果出现下面的错误,可能是没有配置<mvc:annotation-driven />的原因。
报错WARNING: No mapping found for HTTP request with URI [/mvc/user/findUser/lisi/770] in DispatcherServlet with name 'springMVC'
使用<mvc:resources/>元素,把mapping的URI注册到SimpleUrlHandlerMapping的urlMap中,
key为mapping的URI pattern值,而value为ResourceHttpRequestHandler,
这样就巧妙的把对静态资源的访问由HandlerMapping转到ResourceHttpRequestHandler处理并返回,所以就支持classpath目录,jar包内静态资源的访问.
另外需要注意的一点是,不要对SimpleUrlHandlerMapping设置defaultHandler.因为对static uri的defaultHandler就是ResourceHttpRequestHandler,
否则无法处理static resources request.
方案三 ,使用<mvc:default-servlet-handler/>
Xml代码

<mvc:default-servlet-handler/>
会把"/**" url,注册到SimpleUrlHandlerMapping的urlMap中,把对静态资源的访问由HandlerMapping转到 org.springframework.web.servlet.resource.DefaultServletHttpRequestHandler 处理并返回.
DefaultServletHttpRequestHandler使用就是各个Servlet容器自己的默认Servlet.
补充说明:多个HandlerMapping的执行顺序问题:
DefaultAnnotationHandlerMapping的order属性值是:0
<mvc:resources/ >自动注册的 SimpleUrlHandlerMapping的order属性值是: 2147483646
<mvc:default-servlet-handler/>自动注册的SimpleUrlHandlerMapping的order属性值是:2147483647
spring会先执行order值比较小的。当访问一个a.jpg图片文件时,先通过DefaultAnnotationHandlerMapping 来找处理器,一定是找不到的,我们没有叫a.jpg的Action。再按order值升序找,由于最后一个SimpleUrlHandlerMapping 是匹配"/**"的,所以一定会匹配上,再响应图片。
访问一个图片,还要走层层匹配。真不知性能如何?改天做一下压力测试,与Apache比一比。
最后再说明一下,如何你的DispatcherServlet拦截 *.do这样的URL,就不存上述问题了。
转载至:http://hi.baidu.com/blueskyfaith/item/a47483a91d5cfce015329b98
在JSP编程的过程中会遇到各种各样的问题
JSP常见问题1:
表单request汉字处理:
- request.setCharacterEncoding("GB2312")
JSP常见问题2:
在JSP网页中获取页面的名称:
- request.getRequestURI() ;//文件名
- request.getRequestURL() ;//全部url
JSP常见问题3:
页面不保留缓存:
- response.setHeader("Pragma","No-cache");
- response.setHeader("Cache-Control","no-cache");
- response.setDateHeader("Expires", 0);
-
JSP常见问题4:
日期时间(服务器端)
- String datestr ;
- java.text.DateFormat df = new java.text.SimpleDateFormat("MM月dd日 HH:mm E"); //这里格式化
- datestr = df.format(new java.util.Date()) ;
- out.println(datestr);
-
或者
- % java.util.Date shijian= new java.util.Date();%>
- %=shijian.getYear()+1900%>%=shijian.getMonth()+1%>%=shijian.getDate()%>
- %=shijian.getHour()%>%=shijian.getMinute()%>
-
JSP常见问题5:
java中运用正则。
jdk需是1.4以上 import="java.util.regex.*
JSP常见问题6:
点后退显示网页过期
在里面加以下代码
- META http-equiv=Pragma content=no-cache
- META http-equiv=Cache-Control content=no-cache
- META http-equiv=Expires content=0
-
和 3 原理一样。
JSP常见问7:
swtich不能作用在long上和String上:
switch(expr1)中,expr1是一个整数表达式。传递给 switch 和 case 语句的参数应该是
int、 short、 char 或者 byte。long,string 都不能作用于swtich。
JSP常见问题8:
计算执行所花费的时间
代码开始取时间,结束后取时间,相减
- long t1 = System.currentTimeMillis();
- .... ...... .... ...your code
- long t2 = System.currentTimeMillis() ;
- long time = t2-t1;
-
JSP常见问题9:
四舍五入,保留小数点后两位小数?
- import java.text.*;
- NumberFormat nf=NumberFormat.getNumberInstance();
- nf.setMaximumFractionDigits(2);
- nf.setMinimumFractionDigits(2);
- nf.format(numb);
或者(+0.005 - 0.01)再取.后两位
JSP常见问题10:
form的默认方法是get.
post方式是向服务器传送大容量数据时使用的方法。(再打开一个socket.?)
JSP常见问题11:
防止用户直接输入url进去页面:
◆是在要访问的页面中加入控制.这个一般用session。
◆是从web服务器控制,对某一目录的所有访问要通过验证.(有人说把jsp放到web-inf下)
JSP常见问题12:
数据库是datetime 型 ,插入当前时间到数据库:
- java.sql.Date sqlDate = new java.sql.Date();
- PreparedStatement pstmt = conn.prepareStatement("insert into foo(time) values(?)");
- pstmt.setDate(1,sqlDate);
- pstmt.executeUpdate();
-
其实一般数据库都有自己的系统时间函数。
insert into foo(time) values(sysdate)
JSP常见问题13:
session存取int类型的变量:
- session.setAttribute("int", i+""); //注意这里i+""
- int i = Integer.parseInt(session.getAttribute("int"));
-
session的一些概念。
用户在浏览网页时,由于Http 协议是一种无状态的协议,往往在不同的页面之间存在数据交换的问题,这就需要在这些不同的页面之间共享数据。常见的实现方法是把要共享的数据保存到 Session 中。比如在用户登录的页面中把一些用户的信息保存到Session 之中,然后在其他的页面中读取用户的信息。这些共享的数据可以是字符串或者与Java 的原始数据类型相关的对象,也可以是一个Java 对象。
Session 只能保存对象,不能保存原始的数据类型,比如:
session.setAttribute(“count”,10)
是非法的语句,如果要把值为10 的整数保存到Session 中,需要使用以下的方法:
session.setAttribute(“count”,new Integer(10));
然后在另一个页面中使用:
(Integer)session.getAttribute(“count”)
来把这个整数读取出来。
was中设置可以把session放在系统的数据库中,但这样影响效率。session大小最好不要太大
JSP常见问题14:
把字符转化成ASCII码
int a='A'; out.println(a);
JSP常见问题15:
String s = new String("xyz");创建了两个String Object对象,一个是“xyx”,一个是指向“xyx”的引用对象s。
还有典型的equals() 与 == 这个参考在堆栈原理。
JSP常见问题16:
Hashtable和HashMap
Hashtable继承自Dictionary类,而HashMap是Java1.2引进的Map interface的一个实现HashMap允许将null作为一个entry的key或者value,而Hashtable不允许
Hashtable的方法是Synchronize的,而HashMap不是,在多个线程访问Hashtable时,不需要自己为它的方法实现同步,而HashMap就必须为之提供外同步。
师者,所以传道授业解惑也。”一千多年前韩愈在《师说》里讲的这句话,几乎成了教师职业的定义,直到今天,我们很多中小学老师仍然常常以“传道授业解惑”者自居,却不知韩老先生说的“传道授业解惑”,本不是指的中小学老师。
韩愈在《师说》中说得很清楚:“彼童子之师,授之书而习其句读者也,非吾所谓传其道、解其惑者也。”(那些小孩子的老师,是教孩子读书,掌握句读的,并不是我所谓的传授道理、解答疑难的人)古代所谓的“童子”,大致相当于今天的未成年人,也就是中小学生。这些孩子的老师的工作,在韩愈眼里,是谈不到“传道授业解惑”的。可见,今天中小学教师以传道授业解惑者自居,并不符合韩老先生的本意。
韩愈的这种态度说明了什么呢?我想,这一方面说明了韩愈对基础教育的轻视,另一方面也说明了他的清醒。我国古代的教育,基本上是成人教育,孔子的学生好像没有未成年人,都是大老爷们。所以我国古代的教育思想,都是成人教育思想,那时的教育家们,对于儿童心理和儿童的成长规律,比较生疏,也不屑于研究,这应该说是一个缺点。这也提醒我们,在继承古代教育思想的时候,要注意有所分析、改造和取舍,不能盲目传承。
今天的中小学教师,张口就说什么“传道授业解惑”,这是比较盲目的。同时我们应该看到,韩愈的这种态度自有一定的合理性。他对未成年人的教育,期望值不算高,相较于今日每天高喊“人文主义”的教育者们,我觉得韩愈的头脑没有发热,他并不指望孩子小小年纪就能入“道”。韩愈的要求或许低了点,基础教育确有影响学生世界观价值观的作用,但是,把“立人”的千钧重担都放在或主要放在中小学教师的身上,显然缺乏合理性。
不过,传道授业解惑这种提法,用于今日,毛病还是很大的。传,授,解,分明是一副教师中心,居高临下的姿态,抹杀了受教育者的主体性,有明显的灌输色彩。这种教育姿态,无论在成人教育、高等教育还是基础教育中,都是落后的。
要“解惑”当然必须学习,但学习不等于必须“从师”,“从师”而学只是学习的一部分,或者一小部分。离开学习就没有老师,离开老师却有学习。“惑而不从师,其为惑也,终不解矣”,等于宣布学生不可能超过老师,也就等于否定了革新和创造,剩下的只有继承。这是一种将人际关系凌驾于智慧之上的思维方式,是学习领域中的“人治”。它当然会抑制智慧的发展。这是一种封闭的思维方式,它只有单向的传递,没有双向的交流。它当然会抑制科学的进步。西方的哲人却另有一种思维方式:“我爱老师,但更爱真理!”这是一种真理高于人际关系的思维方式。这是一种开放的、双向的思维方式。它推动了西方智慧的发展,科学的进步。
往事越千年。在我们的学校里,绝大部分老师至今还姓“韩”,学生还是在等着老师来“解惑”,甚至连他们的“惑”都是老师提出的,只是一种“解惑表演。”(考试不就是这样吗)我见到有的博士生,一接触到和导师不同的见解,立刻噤若寒蝉,一副“若为尊师故,真理亦可抛”的架式。你看这人际关系有多么厉害!要想鼓励创新,只好对“惑而不从师 ,其为惑也,终不解矣”的思维方式进行改革,没有办法。
转载至:http://hnpx.cersp.com/article/browse/102634.jspx
摘要: 摘要:虽然session机制在web应用程序中被采用已经很长时间了,但是仍然有很多人不清楚session机制的本质,以至不能正确的应用这一技术。本文将详细讨论session的工作机制并且对在Java web application中应用session机制时常见的问题作出解答。目录:一、术语session二、HTTP协议与状态保持三、理解cookie机制四、理解session机制...
阅读全文