在Java中,一个Servlet类继承了HttpServlet类,而对于一个Servlet来说,最重要的就是重写父类的两个方法,doGet()和doPost()方法.HTML的form表单有两种提交方式(method),分别为get和post,前者会导致请求地址的改变并且将传输的信息放在URL中,后者则不会将传递的信息显式的放在URL中.
下面我将分别列出在Java中调用Servlet的6种方式:
1.Form表单
form表单可以算是最基本的调用Servlet的方式之一了,在form中为action属性配置Servlet的地址,填写时应尽量使用相对地址或者说用项目的路径表示法(即"/project/*Servlet").其中method属性决定了是执行Servlet中的doGet方法还是doPost方法.
<form action="TestServlet" method="get"></form>
2.Ajax
Jquery中ajax通过url和type指定的访问方式连接Servlet中的doGet或doPost方法.ajax一般应用于页面的部分刷新,例如在不刷新整体页面的情况下为select框添加多个option选项,具体请自行百度ajax.
$(function(){
//页面加载完成后自动执行
$.ajax({
//在type中设置访问方式
type: 'POST',
url: 'TestJsonServlet',
data: {},
dataType:"JSON",
success: function(data,msg){
console.log(data);
console.log(data.data);
},
error:function(xhr,errorMsg,error){
console.log(xhr.status);
console.log(errorMsg);
console.log(error);
}
});
});
3.<a/>标签访问
通过a标签访问相当于form的get访问方式,通过改变请求地址访问Servlet,为了给Servlet传指定的参数可以在a标签的href属性中为Servlet后添加一个"?",用于连接传输参数,多个参数之间可以通过&&符号连接,对于a标签来说没有post访问方式.
<a href="TestServlet?id=3&&name=bery"></a>
4.Servlet访问另一个Servlet
Servlet跳转到另一个Servlet主要通过请求的转发和重定向来实现,通过Servlet中的request对象和response对象实现.
//请求转发,对于下一个Servlet来说,它的request对象和response对象与当前Servlet的相同
request.getRequestDispatcher("/"+path).forward(request,response);
//请求重定向,请求重定向后新的Servlet和旧的Servlet的request,response对象不同
request.sendRedirect(path);
//同上,也属于重定向访问
response.setHeader("Location", path);
5.JavaScript中的location.href
对于JavaScript中的window.location.href来说可以动态的实现<a/>标签的跳转,无论是跳转的地址还是传递的参数都可以利用JavaScript动态生成.通过href跳转到Servlet也是属于doGet()方法,不能利用post实现.
window.location.href = path + "?" + parameter ;
6.地址栏访问
直接通过地址栏访问就算的上是最原始的get访问方式了,可以传递任意的参数跳转到任意可以接触到的Servlet中,这样的访问方式有时可以用在测试当中.