- 浏览: 1119804 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (1055)
- quartz定时任务 (1)
- json (9)
- 接口 (1)
- http (1)
- sccket (2)
- xmlbean (1)
- webservice (1)
- flex (1)
- sitemesh (2)
- json组装 (2)
- 存储过程 (6)
- ajax后台返回前台上下问 (3)
- flect反射机制 (1)
- 页面列表 (1)
- oracal结果集合并 (1)
- lucene (1)
- 读取配置文件工具 (1)
- 框架整合 (1)
- jms (3)
- 断点续传 (1)
- 页面之间的传值 (1)
- jpa (6)
- sql (8)
- jsp跳转 (1)
- jsp (6)
- jquery (2)
- ui (1)
- js与jsp之间的值的交互应用 (1)
- js空值判断 (1)
- Ajax (9)
- web-inf 编译目录 (1)
- 多线程 (9)
- 资料 (0)
- oracal (4)
- 多线程webservice (1)
- ztree (1)
- 加载与内容的变化 (1)
- 页面的公用变量 (1)
- web-inf目录结构 (1)
- 登陆系列 (1)
- jass应用于webservice认证 (2)
- 路径问题 (1)
- list合并 (1)
- list map中的value获取 (2)
- 标签tag (4)
- 方法 (1)
- 树形数据及其渲染 (1)
- require js 回调 (1)
- tab 页面切换 (2)
- 计时获取验证码 (1)
- 模式 (6)
- easyui (3)
- dialog (2)
- 乱码问题 (1)
- spring (29)
- sqlserver (1)
- iis,netframework (0)
- iis (1)
- netframework (1)
- 处理乱码问题 (1)
- struts-ajax (0)
- ,理论,了;,; (0)
- 排错方法 (1)
- hibernate (1)
- 二级缓存 (1)
- portal (1)
- date类型 (0)
- jvm out of memery StackOverflowError (1)
- echart数据填充 (0)
- echart (1)
- jmv (1)
- 学习 (0)
- java基础 (1)
- oracle性能优化 (1)
- 数据库三范式 (1)
- easy UI (1)
- oracle11g (1)
- form (3)
- servlet (2)
- spring mvc (1)
- htm5 (0)
- ibatise (1)
- 序列化 (1)
- tomcat双认证 (1)
- maven Lib (1)
- tomcat eclipse (2)
- ehcache (1)
- http 代替 ajax (2)
- rest (6)
- script脚本占位模板 (1)
- strust 标签 el表达式 (1)
- js bo (1)
- 公司资料 (0)
- js return (1)
- spring 第三方插件的工具类 (1)
- linux (10)
- linux 克隆 (1)
- linux xshell连接 (1)
- yum expect (1)
- linux 应用命令 (1)
- yum 缓存rmp包 (1)
- yum 本地库离线安装 (2)
- yum错误 (1)
- jsp页面用定时调用 (1)
- ajax setup (2)
- Exception,RuntimeException (1)
- 对话框 dialog (1)
- maven (17)
- PropertyPlaceholderConfigurer properties文件 (1)
- 错误集 (1)
- mybatise (0)
- 拦截器filter (1)
- http get post 区别 (1)
- rest 客户端两种返回的数据处理方式 (1)
- listener (2)
- maven工程 (1)
- ContainerResponseFilter (1)
- ajax action 打印任意实体类jsp (1)
- yum svn mvn (1)
- 分页 (1)
- angularjs (1)
- memcached (1)
- git (12)
- yyyyyyyy (0)
- oracal安装 (4)
- jaxwswebservice (1)
- spring bean (1)
- 排方法 (0)
- java 生成pdf (2)
- 创建目录 (1)
- 下载与生产pdf文件 (1)
- base64 (2)
- 配置文件 (2)
- blob (1)
- pdf (1)
- yum linux 安装Oracle (1)
- excl 插入数据库 (1)
- 搭建框架 (1)
- .classpath和jdk jre (1)
- mybatise 配置文件通配 (1)
- 用Maven插件生成Mybatis代码 (2)
- springmvc值的传递 (1)
- js jsp html (1)
- ajax跨域 (1)
- javamail (0)
- 提交复杂格式json数据 (1)
- get中文乱码/post (1)
- 弹出框,承载弹出链接----页面,显示大图 (1)
- @RequestBody list bean (1)
- 隐藏域 (1)
- 多页保存 (1)
- form 校验 (1)
- 注册,上传图片 (1)
- 登录验证 (1)
- 全局的异常处理 (0)
- 异常捕获,显示在页面 (0)
- mybatise事物配置 (1)
- maven compile (1)
- 时间格式 (1)
- js 跳转页面 (1)
- pringsecurity 角色授资源要重启服务 (0)
- Retrofi restfull (1)
- session过期推出,直接点击退出,退出 (0)
- 参数放于requestbody (1)
- maven本地仓库jar包 (1)
- 编译环境出错jdk1.6 1,7 (1)
- jsonarray ---json数组格式 (1)
- java后台文件上传,接受的2种方式 (0)
- 生成保存图片 (1)
- 权限mysql数据库Md5加密sql (1)
- mysql一对多关联查询 (1)
- mysql批量更新 (0)
- oracle in exists 区别 (1)
- https (1)
- linux发布脚本 (1)
- dubbo zookeepr (1)
- request.getParameter() (1)
- request.setAttribute() (1)
- @RequestMapping @ResponseBody (1)
- @RequestMapping @responsebody src控件 后台如何写入src值 (1)
- dwz (8)
- lib jar maven (1)
- web服务访问名称 (1)
- mvc返回内容设置,拦截 (1)
- @ResponseBody 返回json处理 (1)
- 视图,函数,存储过程 (1)
- <context:annotation-config/> (1)
- <context:component-scan/> (1)
- xml路劲通配 (2)
- 杂项 (1)
- dubbo (34)
- redis (25)
- mybatis (34)
- springmvc (15)
- js (7)
- sprinvmvc (1)
- 设计理念 (1)
- 工程 (1)
- 其他 (149)
- 导出,下载 (1)
- session (4)
- token (1)
- Exception处理 (2)
- 注解 (2)
- 框架 (3)
- shrio (1)
- login (1)
- 项目结构设计 (1)
- mybatis两种关联查询 (1)
- mybaits (2)
- 迭代模式 (1)
- oralce树形数据结构构建 (2)
- 树形结构的jsp展现 (1)
- filter intecept(Struts) (1)
- 树形结构数据的提交 (1)
- @RequestBody @RequestParam (1)
- div (1)
- equals重写 (1)
- 程序设计 (1)
- f多层for循环跳出 (1)
- 看源码 (0)
- 权限系统普遍通性 (1)
- 设计程序 (1)
- 动态拼接元素样式问题 (1)
- sql迭代 (1)
- debug断点 (1)
- spring mvc 扫描注解(ioc (1)
- di) (1)
- jdk (2)
- cglib (1)
- mybatis 多层括号(超过三层)解析不了 (1)
- tiles (2)
- cacheManager缓存的切换 (1)
- jsp,xml中el表达式等占位符中的数据操作 (1)
- jpa 及spring data jpa开发 (1)
- compareTo equals toString (1)
- 子页面用父页面js (1)
- jsp相对路径自加问题 (1)
- bean之间的相互拷贝 (1)
- DECODE (2)
- 泛型 (2)
- NVL (1)
- jsp jstl函数 用标签声明页面变量,供jstl使用,时间格式问题 (1)
- form表单切换action值 (1)
- response.getWriter().write()功能优于springMvc的返回 (1)
- 快速复制构建项目 (1)
- activeMq (15)
- cache (2)
- sql获取序列号 (1)
- 上传 (2)
- tfs (1)
- jsp标签 (2)
- qita (1)
- 触发器 (1)
- Exception (1)
- mybais (1)
- 标签 (1)
- connect by (1)
- for ... in (1)
- map转化为list (1)
- 树形结构list构建(树形实体) (1)
- 左侧菜单的设计 (1)
- response.getWriter().write() (1)
- eclipse打断点之后断无效 (1)
- 直接访问/web-inf/下的页面 (1)
- clob (1)
- freemark (1)
- 框架的设计 (1)
- get方式处理乱码 (1)
- Request的getParameter和getAttribute方法的区别 (1)
- cas (9)
- 时间格式问题 (1)
- ResponseUtil.writeToResponse (1)
- 树形数据的反选 (1)
- spring data jpa (1)
- jsp异常提示 (1)
- jquery js (1)
- eclipse (1)
- 乱码 (1)
- Json OBJETC (1)
- PROCEDURE (1)
- pl/sql oracle (1)
- 设计 (1)
- el表达式 (3)
- iframe (1)
- map (1)
- jsp中调用Java (1)
- response.getWriter().write() ajax (1)
- mybatis xml 传入参数 (0)
- response与request在返回时作用区别 (1)
- spring cache (1)
- 模型驱动 (1)
- 关于mybatis传空值的处理 (1)
- 日志配置 (1)
- mapper (1)
- mapper mybatis (1)
- mapper mybatis-spring spring-data-jpa (1)
- js插件 (1)
- spring-data-jpa (2)
- 字节流转化过程 (1)
- 数据库 (11)
- jsp页面 (1)
- 局域网络访问问题 (1)
- plsql (2)
- response (1)
- plsq (1)
- Proxool (1)
- cas security (1)
- 系统配置化 (1)
- 集群 (4)
- springboot (24)
- 设计模式 (5)
- 通知 (1)
- 架构 (48)
- zookeeper (5)
- mvc框架 (1)
- 事物隔离策略 (1)
- jvm (8)
- 调研 (1)
- Java工具类 (1)
- 并发容器 (3)
- 多线程管理器 (4)
- 简历 (0)
- 查询 (1)
- 集群工具 (1)
- springMcv (1)
- ConcurrentHashMap (1)
- hashtable (1)
- cac (1)
- 树形结构 (1)
- 定时任务 (1)
- tortoiseGit (2)
- struts (11)
- shiro (31)
- log4j (3)
- struts2 (2)
- 编码 (1)
- request (3)
- Nginx (14)
- tomcat (1)
- idea (12)
- mvc (2)
- BeanUtils (2)
- image (1)
- mino (1)
- httpClient (1)
- volecity (1)
- swagger (3)
- 调错 (0)
- data (1)
- log (1)
- shell (1)
- 事物 (3)
- junit (1)
- RestTemplate (2)
- 线程 (0)
- Exception异常处理 (1)
- Exception异常注解 (1)
- lock (1)
- HashMap (1)
- 面试 (0)
- rabbitMq (1)
- rainCat (1)
- 其它 (1)
- activemq消息传送机制以及ACK机制详解 (0)
- mysql (7)
- fildder (1)
- UML (1)
- 校验 (1)
- 反射 (1)
- 切面 (1)
- springioc (1)
- urule2 (0)
- skywalking (1)
- urule (2)
- docker (2)
- 前端 (1)
- bootstrap (1)
- eureka (2)
- springcloud (16)
- jenkins (2)
- springsecurity (1)
- 数据结构 (4)
- gradle (1)
- mycat (3)
- nacos (1)
- canary (1)
- 线程池 (1)
- solr (1)
- resteasy (2)
- BI (1)
- dfs (2)
- elasticsearch (1)
- ruby (1)
- logstash (1)
- clickhouse (2)
- davinci (15)
- java (1)
- davinvi (1)
- fastdfs (1)
- vue (1)
- 《将博客搬至CSDN》 (1)
最新评论
-
nizhipeng123:
private SessionFactory sessio ...
用map接收参数的几个注意的问题
http://wenku.baidu.com/link?url=90oerGKwoYpsenwmAiQQtWtzAKFKYV33Ob8IMtXLtmKDdSdEsuRjVh7WrWrH29wgNTXAtiROvl6HB_049Er3HBpZyE2PhwDAvojzcUhjeqO
1,URL中中文部分编码
2,有&会被截断解决URL参数中带&连接符参数被截断问题
http://jingyan.baidu.com/article/48b37f8d7870df1a6464888d.html
下面举例JS的方法:a=encodeURIComponent(12&34)&b=56尤其适用于用ajax向动态脚本传递的时候。这样,脚本在取参数的时候,就不会被截断了。// NET 编码HttpUtility.UrlEncode(URL);
jsp
<%@ page language="java" pageEncoding="UTF-8" %>
<%
String webPath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort();
String path = request.getContextPath();
webPath += path;
%>
<!DOCTYPE html >
<html >
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>员福云</title>
<link href="<%=webPath%>/resourses/css/common.css" rel="stylesheet" type="text/css"/>
<link href="<%=webPath%>/resourses/css/style.css" rel="stylesheet" type="text/css"/>
<script src="<%=webPath%>/resourses/js/jquery-1.8.3.min.js" type="text/javascript"></script>
<script src="<%=webPath%>/resourses/js/My97DatePicker/WdatePicker.js" type="text/javascript"></script>
<script src="<%=webPath%>/resourses/js/custome.js" type="text/javascript"></script>
<script src="<%=webPath%>/resourses/js/jquery.pagination.js" type="text/javascript"></script>
<script src="<%=webPath%>/resourses/js/pagination-ext.js" type="text/javascript"></script>
</head>
<body>
<div class="main_con">
<h3 class="rt_cont noPrint"><span>当前位置 : </span><a href="<%=webPath%>/supplier/securityCenter/index.do">绑定手机</a> <input
type="button" class="btn_fh" value="< 返 回"
onclick="location.href='<%=webPath%>/supplier/securityCenter/index.do'"/></h3>
<div class="mc_tent" id="printDiv">
<div class="con_tent" align="center">
<table class="feedback">
<tr align="center">
<th colspan="2" class="fbk_th" align="center"><div align="center">我们不会泄露您的手机信息</div></th>
</tr>
<tr align="center">
<td class="fbk_lf" align="right" width="50%"><div align="right">国家/地区:</div></td>
<td align="left" width="50%"><div align="left">
<select >
<option value="0" selected="selected">===请选择===</option>
<option value="zg" >中国</option>
<option value="yg" >英国</option>
<option value="fg" >法国</option>
</select>
</div>
</td>
</tr>
<tr align="center">
<td class="fbk_lf" align="right" width="50%"><div align="right">手机号: +86</div></td>
<td align="left" width="50%"><div align="left"><input type="text" id="mobile"></div></td>
</tr>
<tr align="center" align="center">
<td class="fbk_lf" colspan="2" align="center"><div align="center"><input type="button" id="hqyzm" value="免费获取验证码" ></div></td>
</tr>
<tr align="center" align="center">
<td class="fbk_lf" align="right" width="50%"><div align="right">验证码:</div></td>
<td align="left" width="50%"><div align="left"><input type="text" id="yzm"></div></td>
</tr>
<tr >
<td class="fbk_lf" colspan="2"><div align="center"><input type="button" id="qd" value="确定"></div></td>
</tr>
</table>
</div>
</div>
</div>
<div class="clear"></div>
<script type="text/javascript" >
$(function() {
var yzdata;
$("#qd").unbind();
$("#qd").bind("click",function() {
var gj= $("select").val();
var mobile =$("#mobile").val();
var yzm = $("#yzm").val();
if(yzdata==yzm){
eventdata=[];
eventdata.push({
mobilePhone:mobile
});
var ndata={
mobilePhone:mobile,
yzm:yzm
};
$.ajax({
type: "post",
url: "<%=webPath%>/system/users/savemobile.do",
data: ndata,
dataType: "json",
success: function (data) {
if (data = 1) {
alert("绑定成功,谢谢!");
} else if (data = 0) {
alert("操作失败,该记录可能已不存在。");
} else if (data > 1) {
alert("错误,有多条记录被删除。");
}
},
error: function (textStatus) {
alert("数据加载失败!!!");
}
});
}else{
alert("请填写正确的信息!");
}
});
var url="http://10.1.67.253:8080/wondersSMS/getToken?sid=yfy&secret=406629b12c904b8c80c0c1263f37cb97";
var a=encodeURIComponent(url);
$("#hqyzm").unbind();
$("#hqyzm").bind("click",function() {
$.ajax({
type:"post",
url: "<%=webPath%>/system/users/msg.do?url="+a,
dataType: "json",
success: function (data) {
jsonpCallback(data.token);
},
error: function (r) {
console.log(r);
}
});
});
function jsonpCallback(token) {
var mobile =$("#mobile").val();
var taskid=getFormatDate();
yzdata =random();
var content="尊敬的用户您好,您本次的验证码为"+yzdata;
var url="http://10.1.67.253:8080/wondersSMS/sendSMS?content="+encodeURI(content)///url中注意中文部分编码+"&phonelist="+mobile+"&taskId="+taskid+"&token="+token+"&sid=yfy";
var a=encodeURIComponent(url);
$.ajax({
type:"post",
url: "<%=webPath%>/system/users/msg.do?url="+a,
dataType: "json",
success: function (data) {
},
error: function (r) {
console.log(r);
}
});
}
});
function random() {
return Math.round(Math.random()*99999)+100000;
}
function getFormatDate()
{
var day=new Date();
var Year=0;
var Month=0;
var Day=0;
var Hour = 0;
var Minute = 0;
var Second = 0;
var CurrentDate="";
//初始化时间
Year = day.getFullYear();
Month = day.getMonth()+1;
Day = day.getDate();
Hour = day.getHours();
Minute = day.getMinutes();
Second = day.getSeconds();
CurrentDate = Year;
if (Month >= 10 )
{
CurrentDate = CurrentDate + Month ;
}
else
{
CurrentDate = CurrentDate + "0" + Month;
}
if (Day >= 10 )
{
CurrentDate = CurrentDate + Day ;
}
else
{
CurrentDate = CurrentDate + "0" + Day ;
}
if(Hour >=10)
{
CurrentDate = CurrentDate+ Hour ;
}
else
{
CurrentDate = "0" + Hour ;
}
if(Minute >=10)
{
CurrentDate = CurrentDate + Minute ;
}
else
{
CurrentDate = CurrentDate + "0" + Minute ;
}
if(Second>=10)
{
CurrentDate = CurrentDate + Second;
}
else
{
CurrentDate = CurrentDate + "0" + Second;
}
return CurrentDate;
}
</script>
</body>
</html>
java
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils;
@RequestMapping(value = "/savemobile")
@ResponseBody
public String saveMobile(@RequestParam(value = "yzm", required = false) String yzm , User user ) {
UserDetails userDetails = (UserDetails) SecurityContextHolder.getContext()
.getAuthentication()
.getPrincipal();
User userdata= indexService.getUserByNameAndPwd(userDetails.getUsername(),userDetails.getPassword());
if(user!=null){
if(user.getMobilePhone()!=null){
userdata.setMobilePhone(user.getMobilePhone());
userdata.setMobileBindState("1");
Message msg = new Message();
msg.setContent("尊敬的用户您好,您本次的验证码为"+yzm);
msg.setReceiverPhone(user.getMobilePhone());
msg.setSenderFullname(userdata.getUserName());
msg.setSenderId(userdata.getId());
msg.setReceiverId(userdata.getId());
msg.setReceiverFullname(userdata.getUserName());
msg.setSenderTime(new Date());
msg.setSendState("1");
messageService.add(msg);
int i= userService.edit(userdata);
return i+"";
}else{
return "2";
}
}else{
return "0";
}
// System.out.println("111");
}
@RequestMapping(value = "/msg")
@ResponseBody
public Object msg(@RequestParam(value = "url", required = false) String url) {
HttpClient client=new DefaultHttpClient();
HttpGet get=new HttpGet(url);//访问域B的链接
HttpResponse responseproxy;
String msg="";
URLEncoder.encode(url);
try {
responseproxy = client.execute(get);
HttpEntity entity = responseproxy.getEntity();
msg=EntityUtils.toString(entity);
System.out.println(msg);
client.getConnectionManager().shutdown();
} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("====nihao==");// System.out.println("111");
return JSONSerializer.toJSON(msg);
}
1,URL中中文部分编码
2,有&会被截断解决URL参数中带&连接符参数被截断问题
http://jingyan.baidu.com/article/48b37f8d7870df1a6464888d.html
下面举例JS的方法:a=encodeURIComponent(12&34)&b=56尤其适用于用ajax向动态脚本传递的时候。这样,脚本在取参数的时候,就不会被截断了。// NET 编码HttpUtility.UrlEncode(URL);
jsp
<%@ page language="java" pageEncoding="UTF-8" %>
<%
String webPath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort();
String path = request.getContextPath();
webPath += path;
%>
<!DOCTYPE html >
<html >
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>员福云</title>
<link href="<%=webPath%>/resourses/css/common.css" rel="stylesheet" type="text/css"/>
<link href="<%=webPath%>/resourses/css/style.css" rel="stylesheet" type="text/css"/>
<script src="<%=webPath%>/resourses/js/jquery-1.8.3.min.js" type="text/javascript"></script>
<script src="<%=webPath%>/resourses/js/My97DatePicker/WdatePicker.js" type="text/javascript"></script>
<script src="<%=webPath%>/resourses/js/custome.js" type="text/javascript"></script>
<script src="<%=webPath%>/resourses/js/jquery.pagination.js" type="text/javascript"></script>
<script src="<%=webPath%>/resourses/js/pagination-ext.js" type="text/javascript"></script>
</head>
<body>
<div class="main_con">
<h3 class="rt_cont noPrint"><span>当前位置 : </span><a href="<%=webPath%>/supplier/securityCenter/index.do">绑定手机</a> <input
type="button" class="btn_fh" value="< 返 回"
onclick="location.href='<%=webPath%>/supplier/securityCenter/index.do'"/></h3>
<div class="mc_tent" id="printDiv">
<div class="con_tent" align="center">
<table class="feedback">
<tr align="center">
<th colspan="2" class="fbk_th" align="center"><div align="center">我们不会泄露您的手机信息</div></th>
</tr>
<tr align="center">
<td class="fbk_lf" align="right" width="50%"><div align="right">国家/地区:</div></td>
<td align="left" width="50%"><div align="left">
<select >
<option value="0" selected="selected">===请选择===</option>
<option value="zg" >中国</option>
<option value="yg" >英国</option>
<option value="fg" >法国</option>
</select>
</div>
</td>
</tr>
<tr align="center">
<td class="fbk_lf" align="right" width="50%"><div align="right">手机号: +86</div></td>
<td align="left" width="50%"><div align="left"><input type="text" id="mobile"></div></td>
</tr>
<tr align="center" align="center">
<td class="fbk_lf" colspan="2" align="center"><div align="center"><input type="button" id="hqyzm" value="免费获取验证码" ></div></td>
</tr>
<tr align="center" align="center">
<td class="fbk_lf" align="right" width="50%"><div align="right">验证码:</div></td>
<td align="left" width="50%"><div align="left"><input type="text" id="yzm"></div></td>
</tr>
<tr >
<td class="fbk_lf" colspan="2"><div align="center"><input type="button" id="qd" value="确定"></div></td>
</tr>
</table>
</div>
</div>
</div>
<div class="clear"></div>
<script type="text/javascript" >
$(function() {
var yzdata;
$("#qd").unbind();
$("#qd").bind("click",function() {
var gj= $("select").val();
var mobile =$("#mobile").val();
var yzm = $("#yzm").val();
if(yzdata==yzm){
eventdata=[];
eventdata.push({
mobilePhone:mobile
});
var ndata={
mobilePhone:mobile,
yzm:yzm
};
$.ajax({
type: "post",
url: "<%=webPath%>/system/users/savemobile.do",
data: ndata,
dataType: "json",
success: function (data) {
if (data = 1) {
alert("绑定成功,谢谢!");
} else if (data = 0) {
alert("操作失败,该记录可能已不存在。");
} else if (data > 1) {
alert("错误,有多条记录被删除。");
}
},
error: function (textStatus) {
alert("数据加载失败!!!");
}
});
}else{
alert("请填写正确的信息!");
}
});
var url="http://10.1.67.253:8080/wondersSMS/getToken?sid=yfy&secret=406629b12c904b8c80c0c1263f37cb97";
var a=encodeURIComponent(url);
$("#hqyzm").unbind();
$("#hqyzm").bind("click",function() {
$.ajax({
type:"post",
url: "<%=webPath%>/system/users/msg.do?url="+a,
dataType: "json",
success: function (data) {
jsonpCallback(data.token);
},
error: function (r) {
console.log(r);
}
});
});
function jsonpCallback(token) {
var mobile =$("#mobile").val();
var taskid=getFormatDate();
yzdata =random();
var content="尊敬的用户您好,您本次的验证码为"+yzdata;
var url="http://10.1.67.253:8080/wondersSMS/sendSMS?content="+encodeURI(content)///url中注意中文部分编码+"&phonelist="+mobile+"&taskId="+taskid+"&token="+token+"&sid=yfy";
var a=encodeURIComponent(url);
$.ajax({
type:"post",
url: "<%=webPath%>/system/users/msg.do?url="+a,
dataType: "json",
success: function (data) {
},
error: function (r) {
console.log(r);
}
});
}
});
function random() {
return Math.round(Math.random()*99999)+100000;
}
function getFormatDate()
{
var day=new Date();
var Year=0;
var Month=0;
var Day=0;
var Hour = 0;
var Minute = 0;
var Second = 0;
var CurrentDate="";
//初始化时间
Year = day.getFullYear();
Month = day.getMonth()+1;
Day = day.getDate();
Hour = day.getHours();
Minute = day.getMinutes();
Second = day.getSeconds();
CurrentDate = Year;
if (Month >= 10 )
{
CurrentDate = CurrentDate + Month ;
}
else
{
CurrentDate = CurrentDate + "0" + Month;
}
if (Day >= 10 )
{
CurrentDate = CurrentDate + Day ;
}
else
{
CurrentDate = CurrentDate + "0" + Day ;
}
if(Hour >=10)
{
CurrentDate = CurrentDate+ Hour ;
}
else
{
CurrentDate = "0" + Hour ;
}
if(Minute >=10)
{
CurrentDate = CurrentDate + Minute ;
}
else
{
CurrentDate = CurrentDate + "0" + Minute ;
}
if(Second>=10)
{
CurrentDate = CurrentDate + Second;
}
else
{
CurrentDate = CurrentDate + "0" + Second;
}
return CurrentDate;
}
</script>
</body>
</html>
java
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils;
@RequestMapping(value = "/savemobile")
@ResponseBody
public String saveMobile(@RequestParam(value = "yzm", required = false) String yzm , User user ) {
UserDetails userDetails = (UserDetails) SecurityContextHolder.getContext()
.getAuthentication()
.getPrincipal();
User userdata= indexService.getUserByNameAndPwd(userDetails.getUsername(),userDetails.getPassword());
if(user!=null){
if(user.getMobilePhone()!=null){
userdata.setMobilePhone(user.getMobilePhone());
userdata.setMobileBindState("1");
Message msg = new Message();
msg.setContent("尊敬的用户您好,您本次的验证码为"+yzm);
msg.setReceiverPhone(user.getMobilePhone());
msg.setSenderFullname(userdata.getUserName());
msg.setSenderId(userdata.getId());
msg.setReceiverId(userdata.getId());
msg.setReceiverFullname(userdata.getUserName());
msg.setSenderTime(new Date());
msg.setSendState("1");
messageService.add(msg);
int i= userService.edit(userdata);
return i+"";
}else{
return "2";
}
}else{
return "0";
}
// System.out.println("111");
}
@RequestMapping(value = "/msg")
@ResponseBody
public Object msg(@RequestParam(value = "url", required = false) String url) {
HttpClient client=new DefaultHttpClient();
HttpGet get=new HttpGet(url);//访问域B的链接
HttpResponse responseproxy;
String msg="";
URLEncoder.encode(url);
try {
responseproxy = client.execute(get);
HttpEntity entity = responseproxy.getEntity();
msg=EntityUtils.toString(entity);
System.out.println(msg);
client.getConnectionManager().shutdown();
} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("====nihao==");// System.out.println("111");
return JSONSerializer.toJSON(msg);
}
- ajax跨域.rar (33.8 KB)
- 下载次数: 2
相关推荐
本话题主要探讨如何使用JavaScript和AJAX来获取验证码内容以及服务器端的Session值。 验证码(CAPTCHA)是一种安全机制,用于防止机器自动操作,如防止恶意注册或登录尝试。通常,验证码会生成一串随机字符图像,...
3. **代理服务器**:使用Nginx或其他反向代理服务器,让Vue应用请求通过代理服务器转发到Spring Boot应用,这样所有请求都在同一个域下,避免跨域问题,同时Session可以正常工作。 综上所述,解决Vue+Spring Boot...
此时可以使用JSONP,它通过动态插入`<script>`标签来实现跨域请求。JSONP本质上是一个函数调用,服务器返回一个包裹在函数调用中的JSON数据。 ### 6. jQuery和Ajax jQuery库简化了Ajax的使用,提供了`$.ajax()`, `...
7. **JSONP跨域通信**:如果需要跨域请求,可以使用JSONP(JSON with Padding)技术,通过动态插入`<script>`标签来实现。 8. **错误处理**:在Ajax请求中,我们需要处理网络错误、服务器错误以及解析错误等各种...
10. **跨域问题**:出于安全考虑,浏览器限制了Ajax的跨域请求。不过,通过JSONP(JSON with Padding)或CORS(跨源资源共享)技术,可以在特定条件下实现跨域请求。 总结来说,Ajax验证用户注册是提升Web应用用户...
- **使用验证码**:在请求前要求用户输入验证码,防止自动化脚本。 - **用户代理检测**:识别非标准浏览器(如爬虫)并拒绝服务。 - **IP限制**:对特定IP地址的请求次数进行限制。 - **动态令牌**:每个请求都...
这样,当用户点击提交按钮时,JavaScript可以立即发送请求到服务器,验证验证码的正确性,然后根据结果给出反馈。 具体步骤如下: 1. **生成验证码**:通常,我们可以使用Java的图像处理库,如Java2D,来创建一个...
4. **Ajax库与框架**:jQuery、axios、fetch API等工具简化了Ajax的使用,提供了一致的接口和更强大的功能,如错误处理、跨域请求、进度监控等。 ### 三、Ajax的挑战与解决方案 1. **浏览器兼容性**:不同浏览器对...
在本例中,由于Nat123端口映射导致的跨域问题,作者选择使用session而不是cookie来存储验证码。 接下来,我们关注Ajax的核心部分。Ajax(Asynchronous JavaScript and XML)允许我们在不刷新整个页面的情况下与...
2. **安全考虑**:防止跨站脚本攻击(XSS)、跨站请求伪造(CSRF)等,使用验证码、令牌等机制增强安全性。 3. **性能优化**:减少 AJAX 请求的大小和频率,利用 JSONP、CORS 等技术解决跨域问题,提升用户体验。 ...
5. **安全验证**:生成的验证码需要与服务器端进行验证,确保只有正确输入验证码的请求才能通过。这涉及到服务器端的存储和比较逻辑,以及可能的会话管理。 6. **响应式设计**:为了适应不同设备和屏幕尺寸,验证码...
4. **跨域资源共享(CORS)**:如果网站有跨域需求,前端需要设置CORS策略,允许JavaScript发送请求到不同的域名。 5. **响应式设计**:考虑到不同设备的屏幕尺寸,H5滑块验证码需要做好响应式布局,确保在手机、平板...
9. **用户体验优化**:使用Ajax可以提供更流畅的交互,但也要注意避免过于频繁的异步请求,以免增加服务器负担。同时,应确保表单在没有JavaScript的情况下也能正常工作,以兼容不支持或禁用了JavaScript的浏览器。 ...
书中的内容可能包括如何处理跨域请求,如使用JSONP(JSON with Padding)或CORS(Cross-Origin Resource Sharing)。 7. **安全问题**:Ajax技术也可能带来一些安全风险,如XSS(Cross-Site Scripting)和CSRF...
何为跨域跨域session/cookie? 也就是第三方session/cookie。第一方session/cookie指的是访客当前访问的网站给访客的浏览器设置的seesion /cookie, 会被存储在访客的计算机上。第三方session/cookie指的是当前访问的...
可以使用多线程或异步IO来并发处理多个请求,使用代理IP池来避免IP被封,以及对请求进行合理的缓存。 以上就是关于“根据URL获取页面数据”的相关知识,涵盖了网络请求、爬虫技术、跨域处理、数据解析等多个方面。...
7. **跨域问题**:由于同源策略的限制,Ajax请求可能遇到跨域问题。解决方法包括CORS(跨源资源共享)设置、JSONP(JSON with Padding)或使用服务器代理。 8. **安全考虑**:AjaxComment应考虑到安全问题,例如...
2. **跨域请求和XHR(XMLHttpRequest)**:为了获取JSON数据,我们需要模拟AJAX请求。在C#中,可以使用`WebBrowser`控件的`Document.InvokeScript`方法执行`XMLHttpRequest`或者现代的`fetch` API,从而发送GET或...
如果Web服务不在同一个域下,需要开启服务器端的CORS(Cross-Origin Resource Sharing)配置,允许跨域请求。 10. **安全考虑**:在实际应用中,需确保调用Web服务的安全性,避免XSS(跨站脚本攻击)和CSRF(跨站...