Servlet使用分析

来源:互联网 发布:什么是网络课件设计师 编辑:程序博客网 时间:2024/05/20 23:08

1.     可以通过Eclipse向导式创建,但是其本身还是一个集成自HttpServlet的普通java类。

2.     在Servlet中建立URLMapping的意义:Servlet是运行在Web容器中的(Tomcat/WebLogic/WS),要访问Servlet,要么在浏览器中通过get/post方式请求一个服务器地址去访问,要么在服务器中的另一个Servlet(或者JSP)通过服务器内部跳转去访问,访问是需要地址的,所以需要配置URLMapping。在类上通过注释@WebServlet(“URL”)的方式映射此Servlet对应的URL。

3.     HttpServlet需要servlet-api.jar的支持,此jar包一般在web容器的lib目录中。

4.     在类上定义的URLMapping会在服务器启动的时候建立一个映射表。在服务器启动的时候,会把有@WebServlet(“URL”)注解(或者通过在web.xml)的servlet类中的URL作为key,类作为value放置在一个映射表中,存在于容器定义的内存空间。在外部有请求访问服务器的时候,服务器会根据地址的匹配找到相关的Servlet去执行。

5.     关于doGet和doPost在什么时候执行:如果浏览器直接方法就是get方式,常见的post请求方式:form表单method定义为post、AJAX中的type定义为post,但是在后端的业务处理中,post和get处理的内容或者服务的内容一般都是一致的,所以可以直接在post中调用get方法,也有特例。

6.     在具体的doGet和doPost方法体中我们应该写些什么内容:

a)     输入一个文件流:text/html,json,img,pdf,文件的类型有很多(http://tool.oschina.net/commons/)定义文件输出的类型,需要使用response.setContentType(),然后在通过response.getWriter.print()去输出流。但是这个不是Servlet最重要的用途,在所有的流输出类型中,我们只要掌握如果返回JSON就可以,在实际开发中,JSON流输出用的是最多的。

b)     充当MVC层中的C(Controller),作为控制层,获取请求参数、调用Service处理业务逻辑、在request中setAttribute值、调整到相应的Viewer层做展现。这个是Servlet最重要的用途。

c)     在JSP中,JSP是可以充当MVC层的C,但是其设计的本质还是做为视图层来用的,更大的意义在于获取request(session/application)等的数据进行页面的输出。

7.     在一般的程序开发中会出现两种模式

a)     前端请求->Servlet直接返回JSON(text)结果,这种模式一般用在AJAX请求中,在现代应用开发中,一个页面一般会出现很多的AJAX请求,比如基本的用户管理的增删改查都是通过AJAX完成。

b)     前端请求->Servlet(业务逻辑处理,根据不同调整跳转到相应的JSP)->JSP页面

c)     如果一个请求是没有带参数的(包括get或post方式),此时的Servlet一般就是调整到一个特定的JSP页面,而且有的时候在Servlet中都不会出现任何的逻辑代码,只是做跳转用(一般都是服务器内的调整)

d)     在实际开发中,(为了保证安全)JSP页面一般都放在WEB-INF目录下面,由于WEB-INF只能被服务器内部跳转访问,所以我们一般都是使用Servlet的forward方式跳转到JSP页面。

8.     客户端跳转和服务器跳转:

a)     客户端跳转:

                i.         通过客户端浏览器跳转(a标签、form提交、window.location等);

               ii.         在服务器页面中(JSP和Servlet)通过合适的方式通知客户端浏览器,你要去给我完成一个跳转。在Servlet中使用reponse.sendRedirect(“URL”);

              iii.         客户端的调整值传递都只能是符合条件的字符串数据,例如name=xx&code=xx

b)     服务器端跳转:一般出现在Servlet请求JSP完成视图展现这种场景中。在服务端跳转时的数据传递使用request.setAttribute(“name”,”value”),在传递到达的页面使用request.getAttribute(“name”)获取数据显示输出。在服务器跳转时可以传递任何数据类型(如List...);

原创粉丝点击