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();
}