把稳:下文代码中的“.”或“-”在运行时自行删除即可^+^

一、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实现类,并调用关联的接口,实现业务的运用逻辑掌握)。

jspfieldset和form运用级焦点私家定制之SERVLET技巧实战二 Bootstrap

下面总体先容类和接口的紧张方法

(一)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=\"大众登录\"大众 /> &nbsp;&nbsp;<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生命周期

做事架构和运行机制