向服务器发送请求的三种方式 and 转发和重定向的区别

1.三种方式:

     1.html超链接

     2.form表单

     3.AJAX技术

例子:不通过超链接和表单访问服务器,还有其他方式:可以通过Ajax技术访问服务器

js代码:

<script type="text/javascript" src="js/jquery-3.3.1.min.js"></script>

<script type="text/javascript">

$(function(){

$("button").click(function(){

$.get("testajax",{"stname":"zs","stpass":"123"},function(date,status){

alert("Data:"+date+"Status:"+status);

});

});

});

</script>

 

jsp代码:

<button>测试GET请求</button>

 

servlet代码:

response.setContentType("text/html");

PrintWriter out = response.getWriter();

String name = request.getParameter("stname");

String pass = request.getParameter("stpass");

if (name.equals("zs")&&pass.equals("123")) {

out.println("hello zs");

}else{

out.println("error page!!!");

}

out.flush();

out.close();

2.重定向与转发的区别

request:容器内转发

(1)地址栏不会变化

request.getRequestDispatcher("bservlet").forward(request,respone);

(2)/ 表示项目根目录

request.getRequestDispatcher("/bservlet").forward(request,respone);

(3)可以将参数传递个转发到的servlet

aservlet 可以将参数一起转发给bservlet

(4)AServlet可以用setAttribute添加新的值,BServlet然后用getAttribute取出添加的值

AServlet:request.setAttribute("LOL", "努努知道怎么做!!!");

BServlet:String lol = (String) request.getAttribute("LOL");

 

response:浏览器重定向

(1)地址栏会变成跳转后的位置

response.sendRedirect("bservlet");

(2) / 表示tomact根目录 会跳转到服务器的根目录下 需要再加一个项目名

response.sendRedirect("/hellojsp/bservlet");

(3)不能讲参数传递给重定向到的servlet

aservlet 不可以将参数转发给 bservlet

(4)BServlet不能通过getAttribute取到AServlet中用setAttribute添加新的值

 

3.request获取请求的一些方法

获取信息:

String method = request.getMethod();

String QueryString = request.getQueryString();

String cpath = request.getContextPath();

String spath = request.getServletPath();

输出页面:

PrintWriter out = response.getWriter();

out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");

out.println("<HTML>");

out.println("<h1>method="+method+"</h1>");

out.println("<h1>QueryString="+QueryString+"</h1>");

out.println("<h1>cpath="+cpath+"</h1>");

out.println("<h1>spath="+spath+"</h1>");

out.println(" </BODY>");

out.println("</HTML>");

out.flush();

out.close();

 

4.request获取客户端使用的浏览器信息

String userAgent = request.getHeader("User-Agent");

String message= "";

if ((userAgent != null) && (userAgent.indexOf("MSIE")!=-1)) {

message = "您正在使用MicroSoft IE浏览器";

}else if ((userAgent != null) && (userAgent.indexOf("Firefox")!=-1)) {

message = "您正在使用FireFox IE浏览器";

}else if ((userAgent != null) && (userAgent.indexOf("Chrome")!=-1)) {

message = "您正在使用Chrom 浏览器";

}

5.限制某些ip访问:

获取客户端ip:

String addr = request.getRemoteAddr();

String sip = addr.substring(addr.lastIndexOf(".")+1);

设置限制条件:

if (Integer.parseInt(sip)>103) {

PrintWriter out = response.getWriter();

out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");

out.println("<HTML>");

out.println("<h1>method="+method+"</h1>");

out.println("<h1>QueryString="+QueryString+"</h1>");

out.println("<h1>cpath="+cpath+"</h1>");

out.println("<h1>spath="+spath+"</h1>");

out.println("<h1>addr="+addr+"</h1>");

out.println("<h1>addr="+sip+"</h1>");

out.println("<h1>message="+message+"</h1>");

out.println("</HTML>");

out.flush();

out.close();

}else{

PrintWriter out = response.getWriter();

out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");

out.println("<HTML>");

out.println("<h1>访问受限!!</h1>");

out.println(" </BODY>");

out.println("</HTML>");

out.flush();

out.close();

}

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值