把稳:下文代码中的“.”或“-”在运行时自行删除即可^+^
一、Http-Servlet接口及依赖类概括的讲,在详细利用Java Web根本核心技能进行Serv.let编程时,作为开拓者来讲,紧张要搞清楚Http-Servlet的接口以及其依赖的类,就完成节制了Java Web编程的精髓了。为能通盘把握Servlet编程的精髓,看下在编程是紧张面对的类的关系如何:
这便是在编程是须要面对的类,紧张便是4类,分别为1个抽象类Http.Serv.let和3个接口Http-Servlet-Request、Http-Servlet-Response以及Http-Session。可以把Http-Servlet看作是开拓职员的事情舞台,而其余三个接口,则是由容器为编程者供应的可用工具工具(其对应的接口工具不须要开拓者创建,而是由容器根据须要创建的,开拓职员只卖力创建Servlet实现类,并调用关联的接口,实现业务的运用逻辑掌握)。
下面总体先容类和接口的紧张方法
(一)HttpServ-let常用接口方法
1.protected void doOptions(Http-Servlet-Request req, Http-Serv-letResponse resp):由做事器调用(通过做事方法
service)许可servlet处理OPTIONS要求;
2.protected void doPost(Http-Serv-letRequest req, Http-Serv-letResponse resp):由做事器调用(通过做事方法service)许可serv-let处理POST要求;
3.protected void doPut(HttpServ-letRequest req, HttpS-ervletR-esponse resp): 由做事器调用(通过做事方法service)许可servlet处理PUT要求;
4.protected void doTrace(HttpServ-letRequest req, HttpServl-etResponse resp): 由做事器调用(通过做事方法service)许可servlet处理TRACE要求;
5.protected long getLastModified(HttpServ-letRequest req): 返回上一次修正HttpServ-letRequest工具的韶光,以毫秒为单位,从1970年1月1日GMT开始。
6.protected void service(HttpS-ervletRequest req, HttpS-ervletResponse resp): 从公共做事方法吸收标准的HTTP要求,并将它们分派到此类中定义的doXXX方法。
7.public void service(Serv-letRequest req, Serv-letResponse res): 将客户端要求调度或叮嘱消磨到受保护的做事service方法。
(二)HttpServ-letRequest常用接口方法
1.public Cookie[] getCookies():返回一个包含客户端发送的所有Cookie工具的数组;
2.public String getQueryString():返回路径后要求URL中包含的查询字符串;
3.public String getParameter(String):获取指定参数名的值;
4.public Http-Session getSession():返回与此要求干系联确当前会话,或者如果要求尚无会话,则创建一个会话。
5.public HttpSession getSession(boolean): 返回与此要求干系联确当前HttpSession,如果没有当前会话,并且create为true,则返回一个新会话;
6.public RequestDispatcher getRequestDispatcher(String path): 返回一个RequestDispatcher工具,该工具充当位于给定路径的资源的包装器。
7.其它接口方法请参照:官-方规范定义
(三)HttpServletResponse常用接口方法
1.public void addCookie(Cookie cookie):向相应工具中添加指定的Cookie;
2.public String encodeRedirectURL(String url): 对指定的URL进行编码,以在sendRedirect方法中利用,或者如果不须要编码,则返回URL不变;
3.public String encodeURL(String url): 对包含会话ID的URL进行编码,或者如果不须要编码,则返回URL;
4.public void sendRedirect(String location): 利用指定的重定向URL位置向客户端发送临时重定向相应;
5.public PrintWriter getWriter():返回可以向客户端发送字符文本的PrintWriter工具.在servlet中可以实现向页面输出显示内容;
6.public void setCharacterEncoding(String charset): 设置发送给客户真个相应的字符编码(MIME字符集),例如UTF-8。
7.其它接口请参照标准规范
(四)HttpSession常用接口方法
1.public Object getAttribute(String name): 返回在此会话中利用指定名称绑定的工具,如果在名称下没有绑定工具,则返回null;
2.public Enumeration getAttributeNames():返回包含绑定到此会话的所有工具的字符串名称的列举凑集;
3.public ServletContext getServletContext():返回此会话所属的ServletContext(Web运用高下文工具);
4.public void removeAttribute(String name): 从此会话中移除与指定名称绑定的工具;
5.public void setAttribute(String name, Object value): 利用指定的名称将工具绑定到此会话;
6.public void setMaxInactiveInterval(int interval): 指定会话有效期,韶光(以秒为单位);
7.其它接口请参摄影关标准规范。
二、[Servlet]运用实战
(一)实战哀求
通过前面对Java Web规范和理论上的先容和描述,该当可以较透彻的Serv.let的运行机制了。那么接下来,我们运用Serv.let的编程技能进行常规web运用开拓,来更深入的理解Servlet的核心处理机制和编程步骤。
在这次Servlet的实战学习,假设已经创建了Java Web项目工程,基于这个工程,我们须要开拓2个大略的页面和一个Servlet实现子类以及web.xml配置文件。
Servlet常规编程步骤哀求:
1、编写继续javax.servlet.http.HttpServlet类的子类;
2、实现父类的doGet和doPost方法(或其他须要实现的方法);
3、在子类定义一个供get/post方法调用的requestHandler方法;
4、创建登录JSP页面,实现前端和做事端Servlet掌握器的交互关联;
5、创建成功登录后相应JSP页面,实现Servlet处理后的相应结果;
6、在web.xml中配置Servlet类,实现所创建Servlet访问资源化(即访问URL)。
(二)运用编程
基于企业版Eclipse IDE进行运用编程。
1、右键点击项目,选择“New”菜单下的“Servlet”项(若无此项进入到Other中去找);
2、确定类所在的包并规范命名新建的Serv.let子类(此处命名为:LoginController);
3、在弹出的窗口中,点击“Next”按钮,末了点击完成,天生Servlet类框架代码;
4、删除自动天生代码中的注释以及并注释@WebServlet所在行,骨架代码如下:
/
Servlet 实现类 ControllerServlet
/
//@WebServlet(\"大众/loginHandler\"大众)
public class LoginController extends HttpServ-let {
private static final long serialVersionUID = 1L;
//Servlet布局器
public ControllerServlet() {
super();
}
protected void doGet(HttpServletR-equest request, HttpServletR-esponse response) throws ServletException, IOException {
//业务代码
}
protected void doPost(HttpServletR-equest request, HttpServl-etResponse response) throws ServletException, IOException {
//业务代码
}
}
5、在骨架代码中定义requestHandler方法并实现业务逻辑,实在现如下:
参考代码
/
要求处理器:处理客户端发送给做事真个要求
@param request
@param response
@throws ServletException
@throws IOException
/
protected void requestHandler(HttpServ-letRequest request, HttpServ-letResponse response) throws ServletException, IOException {
//获取用户名和密码:假设用户名和密码分别为solo和123ccc时,表示登录成功,否则表示失落败。
String userName = request.getParameter(\公众userName\"大众);
String password = request.getParameter(\"大众password\"大众);
//通过if语句判断登录结果情形或创建会话工具:
/HttpSession session = request.getSession(false);
if(session==null){
session = request.getSession(true);
//根据须要向会话绑定干系数据
//session.setAttribute(\"大众objName\公众, obj);
}/ if((userName!=null&&userName.equals(\"大众solo\"大众))&&(password!=null&&password.equals(\"大众123ccx\"大众))){
request.setAttribute(\"大众loginResult\"大众, \"大众登录成功!
\"大众);
}else{
request.setAttribute(\"大众loginResult\"大众, \"大众登录失落败:用户名/密码不匹配!
\"大众);
}
//转发到登录结果页面
request.getRequestDispatcher(\"大众result.jsp\"大众).forward(request, response);
}
之以是创建此方法,紧张是为供应代码的复用,为Servlet的干系处理方法,供应简洁的统一处理模式。当然,别忘了在相应的Servlet方法中调用此方法,即在POST方法和GET方法中进行调用:requestHandler(request,response)。
6、创建登录页面和处理结果页面:login.jsp和result.jsp。(关于页面创建另篇讲解)
分别在创建的login.jsp和result.jsp页面的body标签内容添加如下内容:
login.jsp参考代码:
<fieldset>
<form action=\"大众loginHandler\"大众 method=\"大众post\"大众>
<legend>输入用户名密码</legend>
<input type=\"大众text\公众 id=\公众userName\公众 name=\公众userName\"大众><br>
<input type=\公众password\"大众 id=\公众password\"大众 name=\公众password\"大众><br>
<hr>
<input type=\"大众submit\"大众 value=\"大众登录\"大众 /> <br>
</form>
</fieldset>
result.jsp参考代码:
<h2>登录结果</h2>
<!-- 利用JSP的EL表达式展现登录结果。
也可利用JSP页面java代码实现登录结果呈现
登录结果:String result=request.getAttribute(\公众loginResult\公众);
-->
<div>${loginResult}</div>
7、配置web.xml,资源化所创建的Servlet登录处理类。Servlet的配置代码如下:
在web.xml中配置Servlet的代码:
<servlet>
<servlet-name>LoginController</servlet-name>
<servlet-class>com.xs.servlets.LoginController</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>LoginController</servlet-name>
<url-pattern>/loginHandler</url-pattern>
</servlet-mapping>
把稳:
关于Servlet的配置,这里是通过传统的办法实现的,即通过运用的web.xml进行配置,现在还有一种办法,便是通过Servlet内置的标注或表明进行配置。表明配置Servlet比较简洁,如果想利用表明,你可以把web.xml中的配置内容注释掉,然后启用创建Servlet类时表明就可以,把稳资源url的命名和引用(反斜杠的取舍)。
作为初学者,建议利用web.xml办法,可以更多的理解Servlet的容器实现机制,若随着深入的学习,利用表明的办法则更高效,但若要修正url访问符,则比较麻烦——得在代码中进行修正并编译。记得全体项目组或团队要保持同等即可。
(三)检测运行
至此,我们就可以运行这个Web项目,来考验我们辛劳编程的结果了:
在确保Web项目有可运行的做事器(如Tomcat),右键点击项目,选择“Run As”菜单下的“Run on Server”(也可选择调试模式来运行,以便跟踪代码的实行情形:须要设置断点)。
等待程序运行的结果吧。
至此,我们对Servlet编程以及事理都该当比较清楚了,同时也能更深的理解Servlet容器的运作事理。
详细在进行Servlet编程时,只须要继续HttpServlet类来编写自己的Servlet子类就可以了,在须要实现的方法内实现相应的业务逻辑就OK了。
附送——事理彩蛋:
Servlet生命周期
做事架构和运行机制