`
flash59
  • 浏览: 96181 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

某公司面试。。。

阅读更多

他问的问题如下:

1、谈谈你的工作经历吧

2、你做过webservice的项目,能给我写个soap的报文结构吗?

3、如果我要用soap传送很大的消息,怎么处理?

4、做WEB应用,如何防止客户端刷新重复提交表单?

5、算法题:

      String s=".................";//定义了一个只有n位数字组成的字符串,n>0

      如何判断这个字符串中的数字能被7整除?

6、事务有四种,哪四种?

7、开源的框架用过哪些?

8、请写一个hibernate 一对多关联的代码,标签也可以

 

答案:

      2、如下:

  1. <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance" xmlns:xsd="http://www.w3.org/1999/XMLSchema">  
  2. <SOAP-ENV:Header>  
  3. SOAP-ENV:Header>  
  4. <SOAP-ENV:Body>  
  5. <ns1:sayHelloTo  
  6. xmlns:ns1="Hello"  
  7. SOAP-ENV:encodingStyle="   
  8. http://schemas.xmlsoap.org/soap/encoding/">  
  9. <name xsi:type="xsd:string">Johnname>  
  10. ns1:sayHelloTo>  
  11. SOAP-ENV:Body>  
  12. SOAP-ENV:Envelope>  

    4、使用STRUTS的令牌机制

           Struts的Token(令牌)机制能够很好的解决表单重复提交的问题,基本原理是:服务器端在处理到达的请求之前,会将请求中包含的令牌值与 保存在当前用户会话中的令牌值进行比较,看是否匹配。在处理完该请求后,且在答复发送给客户端之前,将会产生一个新的令牌,该令牌除传给客户端以外,也会 将用户会话中保存的旧的令牌进行替换。这样如果用户回退到刚才的提交页面并再次提交的话,客户端传过来的令牌就和服务器端的令牌不一致,从而有效地防止了 重复提交的发生。

          第一:你需要在请求中有这个令牌值,请求中的令牌值如何保存,其实就和我们平时在页面中保存 一些信息是一样的,通过隐藏字段来保存,保存的形式如: 〈input type="hidden" name="org.apache.struts.taglib.html.TOKEN" value="6aa35341f25184fd996c4c918255c3ae"〉,这个value是TokenProcessor类中的 generateToken()获得的,是根据当前用户的session id和当前时间的long值来计算的。第二:在客户端提交后,我们要根据判断在请求中包含的值是否和服务器的令牌一致,因为服务器每次提交都会生成新的 Token,所以,如果是重复提交,客户端的Token值和服务器端的Token值就会不一致。下面就以在数据库中插入一条数据来说明如何防止重复提交。

在Action中的add方法中,我们需要将Token值明确的要求保存在页面中,只需增加一条语句:saveToken(request);,如下所示:
public ActionForward add(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
//前面的处理省略
saveToken(request);
return mapping.findForward("add");
}在Action的insert方法中,我们根据表单中的Token值与服务器端的Token值比较,如下所示:
public ActionForward insert(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
if (isTokenValid(request, true)) {
// 表单不是重复提交
//这里是保存数据的代码
} else {
//表单重复提交
saveToken(request);
//其它的处理代码
}
}

 5、自己的思路

    首先,把这个字符串转换成一个数组,取出第一个字符,转成LONG型,然后乘以10的n次幂,得到的数与7取余,把余数乘以10的n-1次幂再加上数组中第2个字符转成的数字并乘以10的n-1次幂,这个结果再与7取余,就这样进行下去,最后得到的余数如果为0则说明整除,如果不为0,则说明不能被7整除。

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics