如何在JavaScript中获取字符串数组的字符串?
我在想一个像"Hello world!"数组一样的字符串['H','e','l','l','o',' ','w','o','r','l','d','!']
问题
在我们在项目之间重用的堆栈中,我们在会话中放置了一些过多的数据,用于在页面之间传递数据.这在理论上是好的,因为它可以防止篡改,重放攻击等,但它会产生尽可能多的问题.
会话丢失本身是一个问题,尽管它主要通过实现会话状态服务器(或使用SQL Server)来处理.更重要的是,使后退按钮正常工作非常棘手,而且创建一种情况也是额外的工作,用户可以在三个选项卡中打开相同的屏幕来处理不同的记录.
这只是冰山一角.
大多数这些问题都有解决方法,但是当我磨砺掉时,所有这些摩擦让我觉得使用session在页面之间传递数据是错误的方向.
我真正想要做的是提出一个最佳实践,我的商店可以一直使用它来在页面之间传递数据,然后,对于新的应用程序,替换当前依赖于Session的堆栈的关键部分.
如果最终解决方案不会导致大量的样板管道代码,那也很好.
提出的解决方案
会议
如上所述,严重依赖Session 似乎是一个好主意,但它会打破后退按钮并导致其他一些问题.
可能有办法解决所有问题,但似乎需要做很多额外的工作.
使用会话非常好的一件事是篡改不是问题.与通过未加密的QueryString传递所有内容相比,您最终编写的守护代码更少.
跨页发布
事实上,我几乎没有考虑过这个选择.我有一个问题,它如何使页面紧密耦合 - 如果我开始做PreviousPage.FindControl("SomeTextBox"),这似乎是一个维护问题,如果我想从另一个页面可能没有到达此页面一个名为SomeTextBox的控件.
它似乎也受到其他方面的限制.也许我想通过链接访问该页面.
请求参数
我现在正倾向于这种策略,就像在过去那样.但我可能希望我的QueryString被加密以使其更难以篡改,我也想处理重放攻击的问题.
来自Rolla的4个人,有一篇关于此的文章.
但是,应该可以创建一个HttpModule来处理所有这些并从页面中删除所有加密香肠.果然,Mads Kristensen有一篇文章,他发布了一篇文章.但是,这些评论听起来似乎有极其常见的情况.
其他选择
当然,这不是对选项的详尽看法,而是我正在考虑的主要选项.此链接包含更完整的列表.我没有提到的那些如Cookies和Cache不适合在页面之间传递数据.
在结束...
那么,您如何处理页面之间传递数据的问题?你需要解决什么隐藏的陷阱,是否有任何预先存在的工具可以完美地解决它们?难道你觉得你已经得到了你和完全满意的解决方案?
提前致谢!
更新:以防万一我不够清楚,通过'在页面间传递数据'我正在谈论,例如,将CustomerID密钥从CustomerSearch.aspx页面传递给Customers.aspx,客户将在那里打开并且可以进行编辑.
我有这个模板,其中包含来自youtube的视频,其中包含swfobject.
有没有办法包含脚本标签......
<script type="text/javascript">
</script>
Run Code Online (Sandbox Code Playgroud)
在jQuery模板里面?
<script id="filaVideoTemplate" type="text/x-jQuery-tmpl">
<!-- Some HTML here -->
<script type="text/javascript">
<!-- Some javascript here -->
</script>
</script>
Run Code Online (Sandbox Code Playgroud)
显然它不能直接工作,有没有办法在没有其他脚本内的脚本的情况下实现同样的事情?
完全免责声明:这不是一个真正的功课,但我标记它是因为它主要是一个自学习练习而不是实际的"工作".
假设我想用Java编写一个简单的线程安全模块计数器.也就是说,如果模数M为3,那么计数器应该0, 1, 2, 0, 1, 2, … 无限循环.
这是一次尝试:
import java.util.concurrent.atomic.AtomicInteger;
public class AtomicModularCounter {
private final AtomicInteger tick = new AtomicInteger();
private final int M;
public AtomicModularCounter(int M) {
this.M = M;
}
public int next() {
return modulo(tick.getAndIncrement(), M);
}
private final static int modulo(int v, int M) {
return ((v % M) + M) % M;
}
}
Run Code Online (Sandbox Code Playgroud)
我对此代码的分析(可能有问题)是因为它使用AtomicInteger,即使没有任何显式synchronized方法/块,它也非常安全.
不幸的是,"算法"本身并不完全"工作",因为当tick环绕时Integer.MAX_VALUE,next()可能会返回错误的值,具体取决于模数M.那是: …
操作系统:Windows XP
我正在使用yuicompressor-2.4.2压缩一些CSS,然后再上传到我的服务器.但是当我运行它时,会出现以下异常:
Exception in thread "main" java.lang.UnsupportedClassVersionError: com/yahoo/platform/yui/compressor/Bootstrap (Unsupported major.minor version 48.0)
所以我认为这是因为JRE.我输入的命令是cmd:java -version
它说:java版"1.3.1_01",但应该说"1.6.0_16",因为我已经安装了最新版本.
我该怎么做才能让Java使用最新版本而不是旧版本?
目前我正在使用Request.ServerVariables ["REMOTE_ADDR"]从客户端获取IP.
调用此方法时我得到了什么保证.或者我应该查看其他ServerVariables?
我必须使用facebook c#sdk作为.net 3.5中的新项目,我知道最新版本有4个示例 - 但它也是针对3.5编译的,因此完全可以正常工作.
无论如何,如果我非常愚蠢,请原谅我.但我正在寻找将json对象转换为我的模型,我可以这样做吗?
public ActionResult About()
{
var app = new FacebookApp();
JsonObject friends = (JsonObject)app.Get("me/friends");
ViewData["Albums"] = new Friends((string)friends.ToString());
return View();
}
public class Friends
{
public string name { get; set; }
public string id { get; set; }
public Friends(string json)
{
JArray jObject = JArray.Parse(json);
JToken jData = jObject["data"];
name = (string)jData["name"];
id = (string)jData["id"];
}
}
Run Code Online (Sandbox Code Playgroud)
这是使用Json.Net.显然这不起作用,我得到的错误是
从JsonReader读取JArray时出错.当前的JsonReader项不是数组:StartObject
我很确定我的方法完全是错误的 - 所以如果有人能提供任何提示,我会非常感激.
我想按如下方式检索价值:
string server = Request.ServerVariables("SERVER_NAME");
//Declare the form being accessed ex: Default.aspx
string url = Request.ServerVariables("URL");
// Declare the query string in the URL
string querystring = Request.ServerVariables("QUERY_STRING");
Run Code Online (Sandbox Code Playgroud)
但是我收到了一个错误:
不可调用的成员'System.Web.HttpRequest.ServerVariables'不能像方法一样使用.
请帮忙找出我的错误.谢谢.
asp.net ×4
c# ×3
.net ×2
java ×2
javascript ×2
webforms ×2
.net-3.5 ×1
ajax ×1
arrays ×1
concurrency ×1
encryption ×1
ip-address ×1
json ×1
json.net ×1
query-string ×1
script-tag ×1
string ×1