别人调用我们提供的MsgManagerdo这个servlet来向我们传递数据,地址格式如下:
/MsgManagerdouser=aa&password=aa&txflag=1&tel=13618668888&sendtime=2009-06-17#14:33:47&msg=306测试
请教一下如何能在MsgManagerdo这个servlet里提取这个地址并进行分析,从而获取里面的参数
关键是里面带的有#号和中文
我们整个网站都用的编码过滤器,统一的“utf-8”
import javaioBufferedReader;
import javaioIOException;
import javaioInputStreamReader;
import javanetMalformedURLException;
import javanetURL;
import javautilArrayList;
import javautilList;
public class GetLinks {
private String webSource;
private String url;
public GetLinks(String url) throws MalformedURLException, IOException {
thisurl = Complete(url);
webSource = getWebCon(thisurl);
}
private String getWebCon(String strURL) throws MalformedURLException,
IOException {
StringBuffer sb = new StringBuffer();
javanetURL url = new javanetURL(strURL);
BufferedReader in = new BufferedReader(new InputStreamReader(url
openStream()));
String line;
while ((line = inreadLine()) != null) {
sbappend(line);
}
inclose();
return sbtoString();
}
private String Complete(String link)throws MalformedURLException{
URL url1 = new URL(link);
URL url2 = new URL(link+"/");
String handledUrl = link;
try{
StringBuffer sb1 = new StringBuffer();
BufferedReader in1 = new BufferedReader(new InputStreamReader(url1
openStream()));
String line1;
while ((line1 = in1readLine()) != null) {
sb1append(line1);
}
in1close();
StringBuffer sb2 = new StringBuffer();
BufferedReader in2 = new BufferedReader(new InputStreamReader(url2
openStream()));
String line2;
while ((line2 = in2readLine()) != null) {
sb2append(line2);
}
in1close();
if(sb1toString()equals(sb2toString())){
handledUrl = link+"/";
}
}catch(Exception e){
handledUrl = link;
}
return handledUrl;
}
/
处理链接的相对路径
@param link 相对路径或绝对路径
@return 绝对路径
/
private String urlHandler(String link) {
if (link == null)
return null;
link = linktrim();
if (linktoLowerCase()startsWith(">
如果是javaweb 项目,那么非常简单,直接调用 >
通过你dispacher拦截器的请求就可以进来 并且在请求分发的时候 如果没有配对的请求 就会报错的 你这种安全性设置其实没什么意义 可以把重要文件放在WEB-INF下 因为这是隐藏目录 所以按路径找不到的。如果你真想让url访问不了 方法如下
1如果你用的是springMVC的注解模式 在Controller里RequestMapping的method全变成post(因为url 是要用get方法的对吧)
2springMVC的声明模式 那你需要去spring的主配置文件去配置那个Conntroller 方法同上
这样的即便前面拦截器拦到了 到这里也就被挡住了
以上就是关于如何在servlet里提取别人直接传过来的url里带中文和#的地址全部的内容,包括:如何在servlet里提取别人直接传过来的url里带中文和#的地址、java提取网站内部所有URL、java怎样获取url参数等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)