Java学习与工作少不了JavaWeb开发需求,而个人拙见servlet是JavaWeb开发的核心部分。浅谈一下我对servlet的了解与看法。
一、servlet个人看法与概述
网络交互流程一般为客户端请求服务端,服务端处理后再响应客户端,而servlet便是能够处理客户端请求和响应客户端的服务程序。
在JavaWeb开发之中,servlet和图片视频文本新闻这些一样都是网络资源,都通过URL(统一资源定位符)来在网络上进行定位查询。
下图很好的展示了servlet处理请求与响应的流程:
客户端通过http协议请求进入服务端,服务端中便实例化一个servlet通过URL被找到出来接收请求,由于servlet继承了HttpServlet的service方法,所以请求会先进入service方法判断是GET请求POST请求或PUT请求等等,然后再重写相对应的方法进行请求和响应的处理。处理结束后将响应返回给客户端,形成一个完整的客户端访问互联网流程。
二、servlet小例子
以下可做一个简单的实例体现流程
1、创建一个web工程或模块并添加tomcat和导入servlet.api的jar包
2、创建一个servlet类继承HttpServlet
public class SecondServlet extends HttpServlet
{
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
super.doGet;
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
this.doGet(req, resp);
}
}
3、添加@WebServlet注解给该servlet增加网络别名,且进行对请求和相应的处理
@WebServlet("/indexPlus")
public class SecondServlet extends HttpServlet
{
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String name = req.getParameter("name");
System.out.println(name);
resp.getOutputStream().print("name = " + name);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
this.doGet(req, resp);
}
}
getParamater()方法可获取从客户端请求里传来的参数
而servlet又可通过流传输的方式将信息传回响应里,以达到传回给客户端的目的
4、查看tomcat,端口号设置为9090,ip地址就是本地ip,再加上http协议和网络别名,可得知完整URL为:http://localhost:9090/my_servlet/indexPlus
5、开启服务端,从浏览器输入URL及其想要传递的参数
从上述步骤来看,一个简单的Web开发的servlet资源创造和使用流程大抵如此。
6、注意需要理解的地方:
上图便是servlet继承HttpServlet的service方法,该方法作用就是判断客户端请求是哪种类型,从而进行相应方法的重写与处理请求和响应,比如客户端只是想接受一些可看的内容,于是发出了GET型请求,通过service方法后,servlet就会重写doGet方法进行请求相应处理。