ServletDemo
1、 Servlet 接口
继承 Servlet 接口,实现Servlet 接口的 所有抽象方法!
实现类代码
package xw.servlet; import java.io.IOException;
import java.util.Enumeration; import javax.servlet.Servlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse; public class ServletInterfaceDemo implements Servlet {
//继承 Servlet 接口,实现接口中所有的抽象方法 总共五个, 如果不实现,那么该类就要定义为抽象类 public void destroy() {
System.out.println("destory()...");
}
/*
* 可以用来获取Servlet的配置信息
*/
public ServletConfig getServletConfig() {
System.out.println("getServletConfig()...");
return null;
}
/*
* 获取Servlet的信息
*/
public String getServletInfo() {
System.out.println("getServletInfo()...");
return "我是一个快乐的Servlet";
}
/*
* 它是生命周期方法
* 它会在Servlet对象创建之后马上执行,并只执行一次!(出生之后)
*
*/
public void init(ServletConfig servletConfig) throws ServletException {
System.out.println("init()...");
/*
* 获取初始化参数
*/
System.out.println(servletConfig.getInitParameter("p1"));
System.out.println(servletConfig.getInitParameter("p2"));
/*
* 获取所有初始化参数的名称
*/
Enumeration e = servletConfig.getInitParameterNames();
while(e.hasMoreElements()) {
System.out.println(e.nextElement());
}
}
/*
* 它是生命周期方法
* 它会被调用多次!!!
* 每次处理请求都是在调用这个方法!
*/
public void service(ServletRequest request, ServletResponse response)
throws ServletException, IOException {
System.out.println("service()...");
}
}
web.xml 配置文件
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<servlet>
<description>This is the description of my J2EE component</description>
<display-name>This is the display name of my J2EE component</display-name>
<servlet-name>servletInterfaceDemo</servlet-name>
<servlet-class>xw.servlet.ServletInterfaceDemo</servlet-class>
<init-param>
<param-name>p1</param-name>
<param-value>v1</param-value>
</init-param>
<init-param>
<param-name>p2</param-name>
<param-value>v2</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>servletInterfaceDemo</servlet-name>
<url-pattern>/servlet/ServletInterfaceDemo</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
web.xml
访问路径:http://localhost:8080/JavaWebTest/servlet/ServletInterfaceDemo
显示效果:
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAroAAAFBCAIAAAAXIpsJAAAgAElEQVR4nO2dbbAlR3nfT5WTSgUw+eJKVT7lS6ospJSdRLARY2wnZUKFVIxDEiMbiHVZrcdIYF4MCDDYik3si2QZTgxerQNmRWIIeJHRCjxOjE0lxi+kglcxQq6CGxNjG4wAScdatLqrKzT5MOf0PN39PN095+Xec+75/WpLOnemp6f76Z7u/3T39DOa+Nx33313AAAAAAhGsVCYHF+OfQbnwxV9u024Z+C+++476hI4eng0ACDNVC50HcbRJmXVHPsMzkdX9Efddx8l6AYHzwgAWIwmaIUtpiv6J+CJJ5544glEw4QnBQAMRtumFe6+9R+o/44udUcGWkEFxXDsGwQAmIOtkwsffus/vPzY48G/z9x9wxYqhq7ovyF44c0fftorfzf974U3f/gbx50tH2Y49g0CAMzB6Ng3DUEGP7T7j2K58LnffvN9W6YYOq3wuM/TXvE7//bUW9L/nvaK33l8O1hcMbz2Ja9wv2944c3u9+tO/ugi0R4Cx75ZAIChZOTCLec/Xb3hzqtvPFO94c6d05/4yKf+7NBS1nNuZ3Ri98K8VwcZ/MDPXv3o5ce7f1ecPP3o5cf3Lx/86Sff/rnffvNn7n7pB3/m6sXTa3NuZ7RzblmRXdg9sYBddLnw8o9f+yM/e88DB9a/a3/kZ5/28o8fSect+MgPj374IwOvuWFG9qBkQcVw44tfN5lM/uDXTr33dU957+ue8l9uesr/vvslk8nkFT/0Y3PHeTggFwAgICUXnvnyM09/7bmP/dEXuwXkH/3DP6vecOe7f/tzqfgW69pXEWeQwV95y9MfefTgkUcPrjh5uvvxyP7Bpf2DR/YPHtk/eN9/eLod04XdEyPBHB3/2smFA5+nvew3X/iyt97zwMGlyweX9g8e3T+4tH9w6fLjl/Yfv7R/cGn/8Re97JYrb/zNA52PnHK2OfURI8xS+Mip4Te44YYbPvXlez715XtuuOEG64jKIorhuhe8eTKZ/Mrrv/nx+z/Y/fvgG//mZDK5/gdfZ190bmeBGrYskAsAEGDKhZ3Tn6jecGcnFL780KXuxx987ivVG+5Mxbf2cuHsTz/j4qWDi5cOrjh5uvtx8ZGDi48cdL/Pv/077Zgu7J4QLfi5neEN+uJywU/DAnRy4TGfK1/669e98rZ7Hjiob/7wv3vd+/9VfeZ7fuDnquf91MVLjz186eDiIwfXvfK2p7301x+LufvUaDQ6dXf/5zN//o+VYMvh7lPiVoU4cdDpg+DP9LVzK4Z/8y///WQyGV/3N/7Pf35y9++dJ79pMplc+6/faFxxbqevVBd2TxyZYEAuAECALhfu+B+fHX3/7Z+//2LbttUb7rzt7nuvvvHMy375k23bXn3jmVR8ay8X3n3zMyYXD644eXpy8WBy8eBl49+64uTp7s+Hvn7wsV96th1T1FUP7rvXXS48rb7r1GvH9zxw8ODFxx68+NgDFx97UPx74OHHTr12fGV9Xuu/h3fg8zOPXHjMVwzlWqFjPsXw7O/+6clk8kcffsktL/hrt1z712+59pv+269872Qyee5zf0K/4MLuiaU/PnOBXACAAF0uvOKOP/i2l55p23bn9Cd2Tn+ibdtnvny4XBCD9zvnJsHoef9HGMxFJOjbUHlc9pv98aC9DTJ4+0/84689/NjXHn7sipOnux8PPPzY1/7qsQcevvzAw4/97vuus/MWd9XyiJqA4KCQC0quu9jO7bgowjAi7yd2L3jJUc1ybmd0Ynd3RzVLJxcu+1x5/Ydu+PFf7EYX6ps/vPP6D7zgR9/zL3Z+4Z++4K3V837q/ocu3/DGd1556lxw1eXzp0bX3PbH4VF3rp+iOC8vuG16xl36x7ddo4VUL1cCmEkQBIrhhhtuyF7iGKQYTv/OR5/98zc++z/+6Pf8wqtP/+HvTSaTZ3zXO93Z6jt/0rhOji6Ex/1ylLVlZ0d9sjJX7V6wHj7kAgBEZOTC6Ptv/79ffrj78cm9r37+/ovFcuHC7s6sAXNtoDx7YqYh4mB+o3luZySbP1859OGtt7Igg7/wpmvuf+jy/Q9dvuLk6fsfuuxGF74yuXz+pqeev+mpdt4SciFUSa5391Pl5IKa667pdncww0xD9D9TZhHXeWnp5MK+z5Uvef8rbj5zzwMHX/za/l98bf8vvrb/xa/tf9H9eGD/FT955qqXvD+4av/89aNrbrsvPNqdEGfOXz8aXX9+9mv6877brumC3HfbNdNDJZe7H+68cn1MLBcyF/iUK4Z/9vM3Pvbw7v5k9+Drb/3nv/SqyWTy7c9822Qy+Y3/ec/zXv2h73v1uee98lc/+lu/r1w57eIDKRzXLr+2KE9WwVX2WBVyAQACdLnwpg98ysmFtm3PfOyz3Y+rbzzzyb2vpuLzJw6id5fZab+dUt6iZdfm/gxnJWaxJGcrggy+7fXP/NKD+196cP+Kk6e7H1964PKXHtz/ywf2z9/01Ce+8ZCtGFS5MBs18Dmxe0FLlTcZERlHabxTYdR+wTwRDnPrcuG69/7YW951zwMHf/qVR79w//4XvvLoF76y/4X7979wf/fn/mve8u6rrntv2ItaciE87nr0oJvvfp+/vhsjuK/k8tn/fXTRMsOajMiJBI9CxfCsN/7Q2z723O7fP3nLdZPJ5Fuf/rbJZPL8H/vQH371we7f973yV63Lp+UuVF9Yu8LaEj1ZpVeNVKWNXACAAF0unPv9z19945kvPvj1Mx/77NU3nrnl/Ke/7aVnvu2lZ37jnr+45fynE9H1rdGF3ROj6IVn1qr1fZcabIBcmPXWxXLhrTd9x59/db/7d8XJ03/+1f1uUKH798Q3Hvr6l37NUAxRd24mzD/rHerf8SLjKBoqFSYlF+Jk6XLhUZ+rXvyum3bP3rR79vW777lp9+zrd8++/q1nb9o9e9Pue26a/jh71Yvf/WjIXdePrvm5z2QPf+bnrun+lifcQffnaNSdTV1+/V32bVXSSx3L4phSohhuOfe+q69//tPr5z+jfv6bP/7OyWTyd7/9HZPJ5LtffPqmj36s+/fdL04O1LlhIr16h7UxfLLKrnIHA9GAXACAAPPLiJs/+KlXvfd/ffwzf9kteOz45Y9/9szHPmvH5k+byvlSOf55YmfHdV16sGB9uD0ZIY67Ydnd5NqFn3nNs75w/777d/6mpx5MPhr8+6vPveVDr/5mNXf+lxEuLcHsSZyLLlUzuaDnOoo/HSYxGaH0GLpcuOTznNfcedWLbr/qRbdf+aLb3Y8rX3j7VS+6/aoXTv98zmvuvBRx763XjEbX3Hrv7O+7Tl5z672XLt11Uh696+Tsj/7XpUv33nrNNbfee+nSvbfeelcf2cm7LiUvP3nX9Mf016VLl+466X4qyM8mrSPlFI4x/O1vPet+/52/f2YymXzov3+6+v63P+va8Xe8YPzaWz+qVDGlBqi1S1t4K5+skqsu7O4a0xLIBQAISO278F9/70/e9IFPdasdd05/4k0f+FQiomjKtR9HP7GzI9oiTzyYweQird0dvzN0iPatjyZ8dwoy+FOvftb/+/Kj7t/ZU086uP89wb/Lf/Lj73vZU6Is+vsuBK9u6pqxMFVi7YKS66DJ1i0zPVq+1HGIXJA85zV3XvUD77jyB95x5Q++Q5UIIXed7JPQd9zqUU0uyKD5y08KaRFdpOF2ZMoeLKREMXzLFX3d+5Yr3+V+/62/9y4teFjJEhNX1koa71DBVdYmD8gFAAjYuk2gb37Vd77pld/15ld91y/+9LPf//bnNv/pe8+eetLZU086e+rJZ089+eDzP3P53vrsDz/5qFJ7aHRy4ZGI57zmzqt+YHzVtW+f/vfat1917fjKa8dXXTu+6trxc15zZ3zJ1nKM/Uoc+2YBAIaydXIhwbt2nnT53vpdO09aaXrWhE4ufB0W47g6ozr2zQIADAW50POunSdtiVaYIBeWyvFTDMe+WQCAoSAXtpROLlyEJXHMhhl4agAgALmwpXRy4WFYKnfM2HTdwFMDAAHIhS0FubBSNl038NQAQMDoDthi/gpWzFGXMADAchjdwWsEAAAAJEEuAAAAQAbkAgAAAGRALgAAAEAG5AIAAABkQC7AcpFOum234mkWuXab6e3mnJmtGVbJ9t7QVBfba4uR2kEVmNq+TkhnfTrSW+KWldvayAXFNZ7lLe+w0rJzLuOF8giRziaXSeTVcDBHJhempaZc5xeikr3Ymt4l69p7RZVzTrlgVKYl1LEoikXkwrmdVFmkWgt3LpefC7snArf03rOv15OBcqHYJutNn3PVGa9l86gQIyMbKKVfUKwZR8FZs6eeowK1kDKC2bRY9dyvnJmzUR6X0mNIuXCYut6/l5KVczue191DbbFFHYm8RK8kIcMtvyK5cGH3xIkTi9WCud9rl1H9dLNElS0qxujJFwfWtzVPWGxYKegN3zLqWOkLWEYudG2h9HBfnlRRfpkHeFr7pVyI1UHc1Q+ttMfhpbTPw7kdlxlfQUQ21wuxoJapF5YUq5o2ETp/78RzZA9DiJqspDBXV416HlbO5Fk1j0uod+sgF7RsHOkjZcmFlQ3xrotc6Ky+WC7XXi6otwrrm/f3qoZyFmVpckF/3JaS7cIHuWgywjqVvId3UaqOucqfkAtaPRleaTdfLxjVa5axlM1DixXXMv/C4mIN0+bdL1sS5nPkSxShS/T0uj9Kyl7JTlw5U2etPC7cf/VyYScUR1I9yRfsE7vnpgMdO+f6UCIb/YWiBZARiZi7EdQTu7vhqI2lGKPIp8Y9tzOa6jJPUEZ50a4KS8CQC8FrZhznMOPM8udbQ49ZM4OXTxmjl87+D33MUGI9UTNDeddax+VkhDKvVFoltGvDejirNLmOXVUHbq6pt47fqMWxxnVGTZs8fmJ3N+gIxeVKiZRUITtf3iuUbXzlzlqDu5w6lmjl/fezWC50sRkXe7lWGhCRC3+IXH+mtLov0pfu/KKnwCuIuKLaNpnXziLZ6bfnsDJcELOP/pWGPaWxQma2TtlckQvaExSTenMr0BwibWHjlr5Ke6cPDaDJBTWFal0Nxy+15zqonPKS+KyVx4V1qjW6cG4naIVl39ad6Mo5bG38C7tzO/L5i5onOTgsrTCtR5YSlXptFLS3frtTcJVPIBe0B0eNc6BxVGvoMWtJdNmMzasYQS0FK864o5D1QgwtKsdjuTC8SuQtJipNUGfmlAvB4y0erLCR9no7K21e/fEkkuh4FCNkq1CYC692KnJBq05qbPGbx7LqmIzZL1nNlLMQca2xHgerAdGuMfqVoHvXXhSliPC7euUp8LOpV1TFJvPbWd7wxIkTrgb5edHblulR+/EvqCveZUmbm21aVHTKeUu1ZeWCb0Wt60ldJ59iI1h0Vk+hWlczckGrnNp7TkEe9YIrx5ALofnVrlf7nXgcPQlp3iuIYHqhePQk4p1vEkbgd+K5qzwCuWA0b3GcQ43jaZdI1isixUti8Ah65o2MoAczoxS/rbprHY/kwhxVwrzWkoBzyIX064AqE6P3GzVtwXGluU8YIVeF0vmK5YJZUeOaFTUlS6tj2vOUttLOjlZFbblgNyBBtrJ2NGprUBZWtxULMqOi6m3M7K857NzXvhO7F7reK6rkZtvi14dsE6Q9PWHzOFwuiIAuBXYnqt9CvTB6PxKhdpVhgSBJok0SeirDiXBON9JksWX0nKYrp3lWz+OiwwvlciEWrGVyIXy/0vqGjAVnxV3WGThBqGhl+6rgftqjLGqdHuccciGS41mdHCRLN29kBCOYn/gA9cV2GXKhpEqYciGuh8PlQr5PUJ+rrFzQStmSC7oRViAXzOrU9TheC6M3zwvXMcUGSSupA8DmM5tuQLy/1RikNPTrvhFLXkzn5YJmk4XsfGE6f+2EwrmoCpuVIZILmSYoVJZKf2zavEQuqCSevkxjbr9RRxI5HcDsbY3JiDiF+c5u4mcnXTkLq66h44ZTPBmh9L3qb1k653Z9PXWhHyMJLSJq/0xKK1UjkLBqf9YVyc6OJ+QLrhJYyl8kVI2zyDjJBsOKOcBPiGLeyAhWMJnnSIH3bZhXeUUfohyP5MIcVcK/NlcPB8oFGaUwpB9TgVxIpc03TKYLDay3VLmgVqcLu7vWi63fwC2tjinCOGclpZrGequPVGlARuEtS7S4CNI/fH5JB/VEewoK5IJik8XsfEF81dT9Dm1itC1OjiQbN8NI4SPUH7TfPP2HyDJyiC07zGJV06Znww5S0r9qckFPYbquRhdaCdZypmanWFYV4e27MNUqotJEiqWgOesVj+hXunER8YWIdS+vb07KKbVH7wPJQ0VX9VhyIe4u/ThL2nrVqr41lJi9tFkW8T/ACYxgBRPR+sdmRy7sTgeHlfLRjsdyYXiV8KyerYdFcqEnfDDVfqBELlhp8/IXLXXUAvVGWLpc0KuT8ryJ7K+gjs3sGQrjtJW6EDvnoreoWcVUHitRmawWKUU4jBDXGZkd6ykokQuKTRazc6AdVE0cVQbRSacbt9BKfUfokbC5VogpI0tDaRdmi1VPm3w401rBy2gmmBqXnsJEXTVyKq4skwtGHhcdXFifbZrWiYWtepywdNXCSnUVFLwvpFl+rhZO0mGyukKdxryWtWYOlpKPDbaJKqePIYvJhfViCWWGXFCI3q62mY2RC9NSW/SJWFwrXhATabkR1rVjdVL53M5oZzc9OnxIhG+dc2V4KYZaH5sMZu2ef0iylNcW5AKk2Ri5sEaIMcUN7AhWAxo8BpvARoFcAAAAgAzIBQAAAMjQy4U7AAAAADRGd8zkQisZjfTfCQqDAQAAwKZRIBfiP5Vo0AoAAADHFk0udH3/aGT+8yIoCwYAAAAbiy0XSiMwAiMXAAAAjguRXJADAyVjBowuAAAAHHd8ueCmIQZEsILRhb2xrzzq+aMaV9NIxnvzR+KolxTP4skYVe2RJCRtz1Xb5zDs37SjUVuND/2+h0hTe89XnNnC464y9P+OqFoCwOpJTkYc4ehCU7d10/9eRDG0bTuujlVz37ZtdaTt8krtWS1W1kugCXvKlXIk+ZUlKMVQPeqfu3HV20E97iKpR2138mirJQCsksNcu9AMGCqQcqEVDZMceHBtWTVqR1U7rs1XHLV7q6LRi2nks8u7lyfXMsZv1d3Bug7j6TMrEpboX7uUuPzWIndqftu2raq2GZv5jZEvlC4llt3msGdi1EG+lbruRE1POKo064TS8cflmCoXA3nrplFeoIP7VrOD0wC1Ek/i7byzQyK/ar6s+ybqrYUswb3xtO7tjZU0N/Zx608AOI4c5ujCAnLB/SlfX+TbTxU02f5d4u6tEh1AU/fxNLUXssrFM668Xkr2xI1LTG4o27XXjtr13In8zk7F+Y1pRPyVaNwtuw21p3U8eCt1abbS0ybftsvL0SoXnUZIIm0yQo2hUzxdyKZWXq8Tb+dSgan5tfJl3Tddb2PUuhpns4vWOu5ALgBsATm5EAZPDjwsOAEhUeVC/DYmuzfZYI2r8E/ZuiW651Y0tUGbGMcT3MiFD97GSobuu5tWXTfQKEMLg/IbE0Ql5YIazyB7msftUX0rPe0QuZAoR7VcLIIA8cu0JReCg2Z5JWc34vym66eVnUS9jZHLDlxg5AIA2CxDLsiD1u+h6JMRdrMbTJouIhdcUxi34/PJhZLmu67avaatxm1dtY1L3rz5DWm811kZ2IpnkD3N41b67fS0mywXEvk9BLmQqLcxLkdyYRCTEQBgs5hcGEVfUqgBpsw9GdH0V1lr1Ktgaj87GSG7w6g1r2q9US6UC0H8VcG6+qZu67od77VN3VYizpL8ZicjZHPfvQHL0QXVbkPtaR330t9Mb51IT9v66xvmLcdBckFWsC7Nc8oFu7xUOwRZkPlN1M9Edqx6GyNzNK68dTPlSx1l7pALAMedxdYuxHIhjqGnWC6ULgEbec1rHY+vNlH6tSVpo6ixCzsqIx43otuItXvKksyCyYi98eyFuwmXFsb57T6k7PNbsNRxLAJ3F7pRBMVuQ+1p2zlIf7x0MUhPK1dBukgGlmOiXCzk0svaLQ4ozm+2flp20PNr1c/kfdvib4jcHeVSGKkMgrOJ4963lEf+SQsArJAFRheC38G/Q2a5X3AVvqIVss6fcVp244u4TWS59RYAQGC4mNosKuN9aA5q+9XtCFO1IqwUrn/KIWCJ9RYAQONYyAUAAABYJcgFAAAAyIBcAAAAgAzIBQAAAMiAXAAAAIAMyAUAAADIgFwAAACADJFccN/cWx6Kw93stcDennRle72p8STua2Gl332YXhiPlZ5lxdO20036SuJJ2HOofTaXcbVdmwocTn7T9bxk0ye3R2Tj/z7CdHoba5bl4khIuGUHWD98uVD72/3KfXnlHrFyK9+60V3zDeq9rHis+1oUpr/EX5+anmB3/Wx6rHg6qlE7LjOUZc+h9tl0so4314cSP09ZEvm14h9033Q9L98jMvDQIevq0aTTdwKyyBalSynHNEvZ9XVZ6TyE/MLGYk9GyCZAOsSLu67F5YIVT/q+aWT6vWY36R4wnZ4gzsD7ojWUkvBFpGRKi8fK+xz2qbRRimr2ijN93YmdNVTtuB7meaF3PyEu76LaS4afZk3sLFkJP5PjsZJ+z0NHWeGq8av2mUYu0hB4W9DDa9ssDk2nml8rfut4wv4dWReXJemM5cJRptOXC9Itu17PB5ajGr6jvF7J5JXLhX7H1Zmjr0Q6redLtUM6vwC2XPD71KBbClo6VS5Yg+cJsnJhwJ7EkRM/6auw3Cum0gxZzf0QueBGKcrlgmrPofaRvjGlTdpZy9Idaeq+eZVNfN6vpnyt9P1eeq1wnQkf+D/0umopHTT/n7G/xBgrfss+QQlKv52WPdW3tKHptPJrxW/e17C/S/nicsEa/D+adNqjC1Y9H1aORvih9cqFLLezC1knfcZO72U8X61hBysegLZtdbkQ+xQeKheCs9NHKOm3UI1Hv28unjj9rWjRqnHpI6FOjvSjC3XpCKeSrwXmVuVg7yC5EEuT2m9GY80X+B4s8qupvZ0ETZV727P8LloZUd1Sx29FGTloxJ+2j6sz8r4l4WX8w9KZdMM9tBtW7a/GnD2+AelszOerZCg0W456+LnqVTtodKExK49qz4TfXXOGFLkAJpFckKLYUfsDqtnJCP/0/IP/6fuqqOlfWnqS/Wt5PI55Zm0a722m3D4LyoV8fn3X27Ktr6L2sUmEHygXygvUpXOOZt3drqqLwivN7tB0LrEbVu1vxJw9vgHpbEwpttlyQZAfBbGfxxa5APMQLXW0arwcBAuHz6OaJwff5PLANOqTnLhvjJX+IExhB51euxCeHbh2oaNwMsKy51D7eM1xNF8TJzKYfE3nV8qLYICn0gZOE+G95ahi1apl/9TyVc2eVvwJ+3TJDvtCO7w71dT93YemM9UNa/Fbx1X793ceJBc2Ip1D5EI7vByt8PPVq3K5EMyqeEtKo3Qmnq82IReM8gLw5ELh0h5ZR4NBde8xs+b4NUriyWqOwiU/JdrFTI89GGh1S1a+5NkS2ZF1Nj34g0wx+G/ZzVuaV7C0s5/DrtpafAdYzf4M8muFl/mSWsH96QrUW1CpFk3OnlZ+R5osTq0p0eaGVeVXmM50fq341eOW/a36maq3m5DO3sh+P11Sz0vKMRF+QL3KTarGmJXHSKf+fNl2sOIBaNuWbZqglEU+91rkS7b1oXxwft3YFPtvSjoBthLkAiQZNEq0ohiOnNp4FdsINsX+m5JOgG0FuQAAAAAZkAsAAACQwZALo5H+OxVTWTAAAADYNArkQvynEg1aAQAA4NiiyYWu7w8/8hH/vAjKggEAAMDGYsuF0giMwMgFAACA40IkF+TAQMmYAaMLsCBLceALAACrxJcLbhpiQAQrG13o9yuMfLitmtRmvcuI3H1fHmzkvia4nd0a/3fgeNDtmmcdb4N96FSrRvv11lZIg6HhF2fsb0B5yLj6E+zj6Uoh9FAwMDwAgEZyMuIIRxeGumqdgyNxphK6uF1Br7OUfAVeALo0u0Kp/c3wreNtG6qBeNu+YGih84gxyLnRoPDLIqHzBjlVmuO+vT9Sf5tz1fHY0PAAAAaHuXbBdsIUow5QF3qF8DzczI5M36XqTDzulSvow7pBjlG8m7rbgL1qx3XmNTftNLJ/ERc+D+WbepcMZWP8ILyWL8/7Q8FQjSoXHFYHoxxvwk3sG/tsf3hg9z8ofGy3VPkajKt2PC61v3W8EtVGFnT6vrKu9pLad2UuJemg8AAABoc5ujBELrQJp0pqByOds2lOU7pImlo4MbJTEouVceX1LtKzkewS0p1WolerfK88LsuWO2ArfGvkq/Jd2WYVQzC/kHAsnjmeHF2wVi2sTi5YdrPK10L6SQ/CD3PZHKiN7NMh/APJQgy6f9UpWlF4AACdnFwIgycHHhacgLAIuje12U37lBvq2V2VC7GL3qCdzXYzVkri1zvZmrt0yvuWhJfxh2Iu1y2lXHUPlQuW7BjoZThBYfiE3dL5jUm5bB4oF2SKptHavgql3h3XfaFb3f/Q8AAABsuQC/Kg9XshgjfUuNltvIHcYMT70ORCtpux2uV09++ireqi8Kp9hvYHy5QLhp0T6mqL5EI03JKeFlArRutbXmZzaHgAAIPF5MIo+pJCDTClfDLC7/6D5sy1sE3dr0Vw3WH3Jl0kF6J4HIVyofWb+6pgfb73zUUjprFltxH17lUd9Ul2eDVfQ7/1WLlcsGWEesfpJUb9GTAZYdhtmXLBqFfq8WrgMl7rvntjXQoMDQ8AYLDY2oVYLsQx9AySC/Km/htYoy1J6+faq7Z2XxxEg7rxmgYvHmMQ2EUuPyx0Awz93HDZ/gGVlp7EZEqrCZr05Is641BF+bJI5Ndb06Da3z/e37Rs1YJ0FR0uW9HqTyq8hmq3RH6H2qe17cvfgAEAAB07SURBVK8er2bVNXtTzwjJ8vWGCoaGBwDQWWB0IfidUBVbwuq2Gzr8DwVXS1P0FcA2EH9ZCgCwluDAemGsLziWQh29CsOxYaU1BwBgqSAXAAAAIANyAQAAADIgFwAAACADcgEAAAAyIBcAAAAgA3IBAAAAMiAXAAAAIEMkFypjgzm3k13syzgO7O2dV+aCUo0ncV8LK/31wD3srPQsK562ne64VxJPwp5D7bO5jKslbz4Re4Csot0njw212OOh2xl66fYsR3UT39HvNVnPvx3F4ZTj0I3Vh4YHWDN8udBX6MZrSqSr32BH+rpR9hwc6rTGise6r0Vh+ks8Aqjp6Y6Xp8eKp6MateMyQ1n2HGqfTSfrgWlxjuU2i7VQk1IlHII9E6ieWaQni0V2rxpajllvHSviqO4LMBx7MkI2JbXt8KnVtiiez8ed4sooed80Mv1es1jsnlGVCzLO0B2zMZSiyoVOtSiZ0uKx8j6HfSptlKKavepNX/tiJxpVO67zTg16twgiZCUuD5xHqOGnWRNvw5XwGzkeK+n3PHcUFK50nxHct7tX7wIj15qr6WwjO3cprGbmnWa8No8rSZ0d7NJWG54pYhIVw7KnWi7WfRPpSZdLWi4EqPW2TdhfK0c1PbF795LXgLjyJOyghp/jvgBHiiUX/D416JaCJ1+VC0MnI9R40vdNxhW6lpa+BwuTpHTzjd38DZELbpSiXC6o9hxqn8r3hBSYyGWqqWd+MmdNWJeA7KhMIx2HiuavEsmWUwBW+PBtWMgF+Vv1CzquBtSTuGj6bqagkljpVO3sfKU6h2Gd+rSOW/G0fvKynkoSDkcse1rlYt3XOp4uFzXl6sbYlh0s+7dGOSbSM8dbvip3EuWi55fRBdgYNLkQ+4AeKheCs9NH2vD3mIhHv28unjj9rRD41bj0EVUnR/qmsy4d7VQdQMv0D5rR7O05UC7E0qT2X/RjzScjLHGgZfnJrPzicN2hHt4e/lHdMcdvaYso1Kp4iMJKp2VnZ09Xgk4uWMet8hrkbjstFyz31mo5WuHnK5d0jXLduWmH5DBhXI7p9CxLLiTKBbkAG04kFwKR3lH7rpazkxH+6fkH/9P3VVHTv7T0JPvX8ngc88zaNN7bVbl9FpQL+fz6fiZl0xlMJE9PWeEHyoXyAlWSrMmFOnIXbly8GXIhoSMte1rlOEguZMslI0CbfgZhPrkQlmM6PHIBIEO01NFqAeUSpHD4XGtzZVNS2COqPVbivjEly6PKlwSm1y6EZweuXegonIyw7DnUPl63Hc3XKG2ZPxmfzq/sloIBnmqkDPwmwnvLUcWqVcv+qeWrdrm0atWt2j0xL5COx0qnauehcsGKJ2GHoem0RgWschkmF3LLipXVP8ZaHMsOVr5aoxwT6XG3UIq+MP3zyYXh9wU4IoRcSC+96T9wEkeDQfVgutFa4hRTEk9WcyTSL5dulWgXMz1yHqSsO7HyJc+WyA7LnuX2ae3Bf8tu3tKwgqWd/cqyqq3FCvxq9meQXyu8zJfs29yfrkC9BZVq0QyRC+4DPKVocuVi2a077o50X8qM5MJS43hjlFfaDuXpTMSjlosVfnC5WJOJwXFfOqj107J/ohytetIULx210m/aITl5OuC+AEcM2zRBGSVrFyzW9uvERTIFALBNIBcgyaBRohXFsGQSn7cAAIAOcgEAAAAyIBcAAAAggyEXRiP9dyqmsmAAAACwaRTIhfhPJRq0AgAAwLFFkwtd3x9+/CP+eRGUBQMAAICNxZYLpREYgZELAAAAx4VILsiBgZIxA0YXYE1gEwUAgJXhywU3DTEggpWNLoS7NNaemyh3dhWfzkuviVnqYFu9GTK1WVQXt/IWR9IRHtV956Ext5gs3IN83cK7HQmD8FY81nErHgCAISQnI9ZkdMFyclOvQQvYeXBQnWPJHf4LO92lvB9vp9OawHSBm+NsNVm38NIzSO1vZ67GU3h8Y8QfAKwdh7l2Ibl7fwJVLlSxVhgSv/QiEXoNUPeZr9qxuyTa0jjtFXARuZAYdeh3SxSufgPFpnt/GHuR19qu9ep9E+H7rRJnhspmuTf1LJ5U/GmioYXacFZkcZThDe8bss73TpuMeKzjMp5FXHcCwNZzmKMLy5ILjdEbDZILor2utLc9xfnQLOZ4qkKXC7MetLyNtoSFKiOk37/Y32NA5bsk9hSD6K2zPvSs8M6GnS4p0QoujHwDTqfHIg4ZdJ95P6VHGF6tt8ZO1VY81nHLtgAAA8nJhTB4cuBhaRMQTfimK+VC99Ic+lMeSMLH3TQJkVyQYbyXttzoQvkgcLlcSPjGjOVCPOogu+RBLnezLo8TuZDpCefXZ71dOj060dBCu1lyQaOpRZ2v+2uHyoXWX0OznRNVALAMliEX5EHr9zD8DkDOxcruZP62r/EmFIK+fxokkAv+BMQguVA+CDxALvh3z4wu2AlYhVzIdvPLlQuqcWp/IiY/WbBu4UV9k3aw4imKn8kIAJifxeTCKPqSQg0wZchkgRs82BubXXtT5+eAVWT31r15l4wuJLrkuGOToxHlSzLL5ULldycyfneqqXtrWCMcS5ELQXpKBn48+dV4A+bD5II2tNC27d5Y72Knl0T1ZN3CW3aw4knF32aOAwAUsNjahVguxDH0DFy7UEUzBeGniY0/szskfhfVqGrrSlEM8ehCXfVGkE2zNE6YmMK1C01k5zp53F+SGS+k0CcpokucERpx1XjPvK8ZPlhKWbDmQJ0MSsRvkRh3cfktXBK7XuETk01GPOpxuaT3yD8jAoBNZoHRheB3QlVsIkE/VEVfQ4DF4W2X1ChfqQAAwArAgbXEGBKotIMQgJUAAI4vyAUAAADIgFwAAACADMgFAAAAyIBcAAAAgAzIBQAAAMiAXAAAAIAMyAUAAADIEMkF9/W85Uk53O1fC+zt2Ve2zaIaT+K+Flb664F721npWVY8bTvd5qEknoQ9h9pncxlrm28uQuxZtPNUfiz3fQrdjNVtq+a3mW51KrcYL9xLo9yVGgBsIL5c6B/4xmuapROjwOFT3Sh7+5c40ZFY8Vj3tShMf7ZRs9LTHS9PjxVPRzVqx2WGsuw51D6bjuoMbLkc++07AxvG+e2ERV/Pq7XwY7msNKxDXgA2E3syQjYrgXvcoOtaXC5Y8aTvmyZwe91fWuyXT5ULMk7vrO2xQpULnWpRMmU4KFLzPod9Km2UopoNgUzHKtwpt81l1Y7rvAcH6aGg9z4lLlffXNOjQdW479LGVTseK+n3PFYUFK50n6H67updiuR6l34vyyr0W2ZtDxrYuRYpcQbprhoUTyGqXJD57SpS163K361dXu7y+GBteDCxiO0Zu1+XrwFqelT7JOIBgAIsueD3qUG3FLTIqlwYOhmhxpO+bzKu0KWy9HlYmCSlm084jhoiF9woRblcUO051D7SV2Tg9lqOOTf1tCV1fjW7BGRHZRrpGFM0x5VItpwCsMJLH57jqlcYwW/VH+a4GlBPFFeirvssqCQyDbWoEon0qHaW8Uj/okPjKcGUC6KA3JBYN2RV5crLxazMYNbmWTVtqj1bY1QgkR7LPowuAMyLJhdin85D5UJwdtr82f4VrXj0++biUX1SS2+WhU2GOjnSjy7UpaPWSr789A+a8ZXdySC5EEuT2n/RjzWfjLCkuVf9TLZRU+56LD28PfyjunWO3xoXUajVILcXmt/IdHr0h0W44XYSYZ54rESKC0O5EOV3Wk+Eu9fKyFqJXBjsjtwoRPWZTaTHnAFELgDMSSQX5AucQ86Ll0xG+KfnH/xP31dFTf/S0pPsX8vjccwzayPSP8g+C8qFfH59/5CyqwgmyKenrPAD5UJ5gSpJ1uRCXQ8b3ndROTmbSI9lxi5rUgvOF48W1B+RGoVyIcivqyfu3b1y7tSN8nVHFpULMtV1bnQhmR7kAsCyiZY6qi3U3tgbJAyHz7U21x2RywPTqD1W4r4xVvqDMIUddHrtQnh24NqFjsLJCMueQ+3jddvRfE2cSBm+GmXyK+VFMMBTaQPLifDeclSxatWyf2r5ql0urVp1q3avG8oOLlHLxddbchmslR6zMjTeKo1F4knUn71xKKbj/MZ1MlteHYvLBcue8pRLajo9plyI4gGAMoRcSC8FckuQ5DMcDKrP7fS5JJ6s5ihcElWiXcz02IOlajOdyFfrr3FLx9Pa9iy3T2sP/lt285baFSzt7FfMVW0tvnusZn8G+bXCy3xJreD+dAXqLahUi2aIXHAfFipFY3TD5uB5fMq2s7NGXIiD48nVn/Ch9vNb+ytS9/yFpXp5GZOD6fJSSdiz0ZZMFqYnXtOQqBIAYMA2TVBGydoFi7X9OnGRTAEAbBPIBUgyaJRoRTEsmcTnLQAAoINcAAAAgAzIBQAAAMhgyIXRSP+diqksGAAAAGwaBXIh/lOJBq0AAABwbNHkQtf3hx9HiX9eBGXBAAAAYGOx5UJpBEZg5AIAAMBxIZILcmCgZMyA0QU4ZNgsAQDg0PHlgpuGGBDBykYXwl0a67YV+9CtFalNiBeOWRrB+bGMLZPFbYE3h2/xOFWr67Az6Wz0rTPj9Cwxv8tClmbjHz9kAaS6nE4cB4CtJzkZsSajC6rL3a0ifp+WO+qX7H4vHfYUes04Emc82XQGpug2TlZ9hw7N76oZ5oH9ULDGaRi/AYCIw1y7kNy9P4EqF/rt4pMRVrNXpWl4sZt9F6d8N+2O19Gu8tbx1ngbS4TvtxSs2nFd+hqXlgsuwLhSRFt3YeDqOuu7Moikd9sd5bcLXM3MO92TX3N57DrL+dMZDS04a6Rdny8ywFCL9Ac+t8rrieU9xHyb1+qJZbd0vY3ruQO5AADFHObowtLlQllUXQfWNdBNnfFtKKOVjaZ1PHFEDV/Nmu+uHy1slLNyIfgzJug+S15zE6MLQXqcP0A3zuHMW/kuhvP+QpPptLqxrFyY+7W+FnMZ0je69M8pRzIS9SSRjDhfQ+tJot4mfEIiFwCgmJxcCIMnBx6WNgHRhG/wsW/M8g5AdWWbkAuDjruzJa57gw6jvFEulAvlb+1LlwtOjXWp6rIfj1KEjg0HpdMYWmhXJxca/cJ4uMLdLlFPyuWCVU8SdltWvU0fB4AtZhlyQR60fg+jCQdyA7lQD/FVv7ZyQU2YSuFkRILad0tdMji/uFywutv50pnIoyIXhudXi3ct5EJJPUEuAMCKWUwujKIvKdQAU4ZMRrjB3r1x+ClEN75dsr5veltDLvTxjw5JLrRtOPm9HLlgv3Y79sZ9DKVLHWdJjU1dKheGr/k305nMY1wic+RXxUt/0y8F8NbbNt5kxOJyoR1eTxL1Vq3n1n3TxwFgi1ls7UIsF+IYegauXXBLycKZiKrdE2vHUu1aEyZevnEmlpI1sxUP6eNx/MFgexg+WPpX0CgXfUhZ2P37kWRp4iV7Wn5dYrovFKTFGv++haWvptPqwKwlhHPkN5sevf6I44lyr/x0TpNk1J92YD0pqm9yaa11Xzs9ALD1LDC6EPxOqApQ4R2ulGYdN9s4NKgnALAG4MD60HEvmuv2FT6sFdQTAFgnkAsAAACQAbkAAAAAGZALAAAAkAG5AAAAABmQCwAAAJABuQAAAAAZkAsAAACQIZIL7mtvxcWitkee6hjX2/OubGM4NZ7EfS2s9Lvt/wrjsdKzrHjadrqJXkk8CXsOtc/mIneKXHNMt9Rt2w7fGHurkO7CA99yi0O5ACyALxf6B6bxmmbpolfuwD+uplv/xnJhUO9lxWPd16Iw/SU78Kvp6Y6Xp8eKp6MateMyQ1n2HGqfTWfp/Uc5CYdbFmu1G+Mc6V9pPCqhu/CCKk25LDceABt7MkI2zYE74KDrWlwuWPGk75tGpt/rZordJKpyQcbpnbU9YqhyoVMtSqa0eKy8z2GfShulqALvGLGTCOlxwKZ3MyFCVuLyLqq9ZPhp1sRbZiX8PY7HSvo9DwtlhavGr6Yn4aEjkf7WcDwWB+4O1rGHjlz8Kv1ekNXUFHOkX60PVjyyX5djaYlyV0lUYMpFRlJYLgDLxpILfp8adEtBi6zKBWvwPEFWLgzYDbcJXQBLn4Hzu7IUPnjCxAyRC26UolwuqPYcah/p21DapJ21UM6xpPMO1YgEZFvGRuSlEs1WNfKdJ9WZ8OFbppAL8rfq53Nc5e1gxW+lpzXe3hLhW/stVu+uauVsOv50zHXgcGtg+tX6YMVj+l81yl0l4aebculPDSkXgKWiyYWub5B1dKhcCM5m/e9Z8ej3zcUTp78VLxDVuPTRUidH+tGFutTpkZIvP/2Dhkal6+pBciGWJrX/oh9rPhlhyRCu6qexjZo817vo4e3hH7Vbit+uMnLQjt9Kf2s0x4nw7cBuSe1u0/GrWbOMMDT95gzaQLmglruedrsZoVz6mIaUC8BSieSCfNlyyHnxkskI//T8g//p+6qo6V9aepL9a3k8jnlmbRp9vUI2qgXlQj6/vt9I2dRWfolMT1nhB8qF8gJ16dTD2+lv1eY4Gb5dvFvKxZ8mGD0amv7lyAW13A1MvUu5+JcjF+CIiJY6qk/s3tgbTAuHz6MaLAe95fLANGqPlbhvjJX+IEzh451euxCeHbh2oaNwMsKy51D7eM13NF8TJ1KGr0aZ/MrmPhjgqbQB2ER4bzmqWLVq2T+1fFWzpxp/Ij3SFE3dzxknwrcLd0uZ+NV64us/WbWGpt/slqJ4ZI6CSSu13BPpPw7lonFU5QKwVIRcSC+ZcUt1ZF0PBtW9psGa49coiSerOQqXDpVoFzM99qCi1fxZ+ZJnS2SHZc9y+7T24L9lN28JYcHSTjfjM6raWqyAq2Z/Bvm1wst8Sa3g/nQF6k2Tq0WTs6e8aSI9jbbkTQ9vTZYZxxP5SqTHkpVW/Vwk/fHceRBPX0/8JbFWuR/nctE4qnIBWCps0wRlLPL5WZWeHoJjCuUOcIxALkCSQaNEK4oBNhHKHeB4gVwAAACADMgFAAAAyGDIhdFI/52KqSwYAAAAbBoFciH+U4kGrQAAAHBs0eRC1/eHHxeJf14EZcEAAABgY7HlQmkERmDkAgAAwHEhkgtyYKBkzIDRBQAAgOOOLxfcNMSACFY2utDvV1jz6fZqSW2iPCSScOe+BY6PyvapBACAQyE5GXGEowsJl6+bwrKcvmyE85jOk4Xlqnvo8Y5y7x4AALBiDnPtgu2EKcbactjzYhC5lhjvzbZbr9vWd8rg9lTvrhoUT5p+97pKiTzY3V16r5AZVO9rxTMW29TLd/RKbNrfbTifHTJwu9PLxHQH6+G70Fv+b8qPS6c+6W2nO+NUM3NNDSuSGpcLAADMy2GOLgyRC62xiWzlu3YNfCq6wE3d96yuy5G+4IbGY5EYBVFHBRrpjE5zEhPfd5jLYGHhvfH84mxcKf4GsywuF6QfnWwf7/z1OS98zizHYHQKAGCdyMmFMHhy4GFFyxvH9lu77A71PqnpwziJME88FraPSrWb131CJu87VC40RrAEha57sywuF6ROGteZ0RHn6tcJwT7ZCd+hAAAwmGXIBXnQ+r0QTe9qNvGaaPVJXRfiuZmfK558Muvc6ELjTRAEffly5II/AbFxcqEW6c/eNyUX/LswugAAsBiLyYVR9CWFGmBK+WSE363ujb3lb1YXYvYuTVuNw350nng0Kr97k4v53Sk3VO66t1YMpGfvG8fTig6+i0eOLmQnRGLWRy4Mum9CLiTKBQAAhrPY2oVYLsQx9AySC/Kmfk9fxZMITZjIoHeQ6+0XiSdGicRlQlsq6JYWjqq2disWk/dV4+knNWZrG6erHWfRjqIFjArRfd0KAJcMd/d0VLUfj5MsQ4+XTyI4C3RfWIzEQtEmWS4AADCcBUYXgt8JVQGHRlXwNQQAAMBAcGB9jFC/JQEAAFgY5AIAAABkQC4AAABABuQCAAAAZEAuAAAAQAbkAgAAAGRALgAAAEAG5AIAAABkUORCU4+qIU4ThobvGFfior1xxVYBAAAA68qqRhfGVXKb/qYe+eejAwAAALAueHJhb1yNRqPRyBst6A7WdT2a0nfravj+aHzBjHEVHWSAAQAAYF1RRhf2vHmC6RHX6atn48mI5OiCOpQw35wGAAAArJxSuVALt8KLyoU9ZXChVYccAAAAYA1ALgAAAECG1cmF2bGmjlYvDJqMaGp9/cPQ4wAAADAnUi409WgUL1J0Kxfrpg9Sjfes8FMaZWmkY8hSR+QCAADAEXNE2zTxISUAAMDmcGS7OrJNEwAAwKbAJtAAAACQAbkAAAAAGZALAAAAkAG5AAAAABmQCwAAAJABuQAAAAAZkAsAAACQoVQudHsl4jISAABgCymSC1OfUJG3CAAAANgGerngnDxU471W/NGHRS4AAABsJd7ogudbMvbigFwAAADYSoLJiF4jKF6pkQsAAABbSbh2YW9cTR1Va66hkQsAAABbSLzUsamrsTK00CIXAAAAthTly4jpdxACt/BRWf8IAAAAxx22aQIAAIAMyAUAAADIgFwAAACADMgFAAAAyIBcAAAAgAzIBQAAAMiAXAAAAIAMyAUAAADIgFwAAACADKVyYVwJ99YAAACwTRTJhaZ2KqGpR4rzKQAAADjG9HLBOYaoxnut+CO4YOqyEgAAALYGb3RhT3qiVH1Yt02NfykAAIAtI5iM6DWC4sN6b1wxEwEAALB9hGsXpnMN0dDC3rhimSMAAMB2Ei91bOpqHAwtNLWyiAEAAAC2BOXLiL1x5Q0t7LmPKKcwHwEAALBVsE0TAAAAZEAuAAAAQAbkAgAAAGRALgAAAEAG5AIAAABkQC4AAABABuQCAAAAZEAuAAAAQAbkAgAAAGQolQtuZ0f8RgAAAGwbRXKhqZ1KaGo2gQYAANgyerkwrkajUTUe16PkOMLUZSUAAABsDd7owrgSDqRCT1MdTY1rSgAAgC0jlAuBK0pPL+yNK2YiAAAAto9ALngTEFIu7I0rljkCAABsJ9FkhJhrcGqhqb3jAAAAsFWEowt1Pfti0g0m7I37Q6PRiPkIAACALSM1GQEAAADQRh9STkcVjjpVAAAAsEawCTQAAABkQC4AAABABuQCAAAAZEAuAAAAQAbkAgAAAGRALgAAAEAG5AIAAABkKJULTW37tAYAAIBjTZFcmPqybmrkAgAAwBYS7OpYjcd14DKiB7kAAACwlUQeKZ0DqemQggC5AAAAsJWEckEKhD3nwboDuQAAALCVpDxSIhcAAACgVSYjhDvKQC0gFwAAALaTcHShrp0f636tY+OWP+LhGgAAYPtITUYAAAAAtNGHlAweAAAAQAibQAMAAEAG5AIAAABkQC4AAABABuQCAAAAZEAuAAAAQAbkAgAAAGRALgAAAECGI5ALTR37xp4fb2upvXHFphEAAADLZsNHF5o6crIdHAAAAIBFCeWC2Nux6t/U98aV5jCiO1qN92bn60Y4mKjGe/IPGU08utC7pajG/YCBcV+ZgFAcMMAAAACwbDy5sCdG9pu676HlgP/euPJ67q6f7440ddd5y3ji9/29yDVFU49cmL3OLeZe7r5q1NODeL4AAABYJsHogvQ96XXgPqKT1r1a9x157LYqkgtNrY4HpO87DaDMPOhHAQAAYF7stQtNPXubN7rz1p1U3uX3xtV0ZiLqukvlQvq+LXIBAADgkLAdWIuePjW+b8iF7oTqEVudjPBvPL1zbl5h0GREN3Cihh90HAAAYOsI5II58q+dkjMXStcavfyH4eUVMn55USJJ7bCljsgFAACAOeFDSgAAAMiw4XKBbZoAAABWz8bLBQAAAFg1yAUAAADIgFwAAACADMgFAAAAyIBcAAAAgAzIBQAAAMiAXAAAAIAMyAUAAADIgFwAAACADMgFAAAAyIBcAAAAgAzIBQAAAMiAXAAAAIAMyAUAAADIgFwAAACADMgFAAAAyIBcAAAAgAzIBQAAAMiAXAAAAIAMyAUAAADIgFwAAACADMgFAAAAyIBcAAAAgAz/H/jpR1mw6ZIdAAAAAElFTkSuQmCC" alt="" />
2、GenericServlet 抽象类
模拟 GenericServlet
通过两个servlet 类,模拟 GenericServlet 实现原理
package xw.servlet; import java.io.IOException; import javax.servlet.Servlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
/**
* 模拟GenericServlet,理解 GenericServlet 类的内部实现原理
*
*/
public class AGenericServlet implements Servlet {
//GenericServlet类内部定义 一个ServletConfig 类型的 config 属性
//类继承了GenericServlet 类之后,可以直接使用 ServletConfig类的config 对象
private ServletConfig config; /*
* 需要就写,不需要就不写
*/
public void destroy() {
System.out.println("啊~我要死了!");
} /*
* 请放心,这个方法一定会在init()方法之后被调用!
* init()被调用后,本类的成员this.config已经有值了!
*/
public ServletConfig getServletConfig() {
return this.config;
} /*
* 没有用的东西,爱实现不实现
*/
public String getServletInfo() {
return "我是一个快乐的Servlet";
} /*
* 由Tomcat来调用,并且只调用一次
* 它是这些方法中第一个被调用的,它会在构造器之后马上被调用!
*/
public void init(ServletConfig config) throws ServletException {
// 把tomcat传递的Servletconfig赋值给本类的一个成员,其实就是把它保存起来,方便在其他方法中使用!
this.config = config;
init();
} /*
* 这个方法是本类自己定义的!不是Servlet接口中的方法
*/
public void init() {
} public void service(ServletRequest arg0, ServletResponse arg1)
throws ServletException, IOException {
/*
* 这里是否可以使用ServletConfig的成员呢?
*/
System.out.println("每次处理请求都会被调用!");
} public ServletContext getServletContext() {
return config.getServletContext();
} public String getServletName() {
return config.getServletName();
} public String getInitParameter(String name) {
return config.getInitParameter(name);
} }
实现类 ,继承 模拟的GenericServlet 类
package xw.servlet; import java.io.IOException; import javax.servlet.Servlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse; public class BGenericServlet extends AGenericServlet {
public void init() {
System.out.println("哇~~~~,很高兴啊~~~");
} public void service(ServletRequest arg0, ServletResponse arg1)
throws ServletException, IOException {
String value = getInitParameter("p1");
System.out.println("重写父类service 方法!");
}
}
<servlet>
<servlet-name>BGenericServlet</servlet-name>
<servlet-class>xw.servlet.BGenericServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>BGenericServlet</servlet-name>
<url-pattern>/servlet/BGenericServlet</url-pattern>
</servlet-mapping>
Web.xml
访问地址:
aaarticlea/png;base64,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" alt="" />
显示效果:
aaarticlea/png;base64,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" alt="" />
继承 GenericServlet
package xw.servlet;
import java.io.IOException;
import javax.servlet.GenericServlet;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse; public class CGenericServlet extends GenericServlet { @Override
public void init() throws ServletException {
System.out.println("哈哈哈~我来也!");
} /*
* 查看帮助文档 GenericServlet 类为抽象类,类中唯一的抽象方法为 service,必须重写。
* */
@Override
public void service(ServletRequest req, ServletResponse res)
throws ServletException, IOException {
System.out.println("hello world");
} @Override
public void destroy() {
System.out.println("destory()");
}
}
显示效果如下:
aaarticlea/png;base64,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G/e9mTbVjll9sMadJCgAfKGmBF2ibpdD6mjytY1lSyeo/Ef8GFM7ZrVUe0iCAsAX6jiL61U5rfF0yKqW8Z+VoI1Rqj7lLJcEBYAv9K8naMtwsPqsusShjdUZEhQAvlzHdVAnXc5rHHlLRvL5ZVsWTYICABat/5vlmASDMZ57beO+N2PUrCaobFBttvuZmASA73Spe3GdCruF+k85Y8qWRQAAvkHr3yTqCozzGjdyxqDqU/7PjR1T3wixCgBX1ZGgR2bR0xq3vis7F52zr8df/QbOQq0KAIDLuNoYdJfBT/bEqX9G8AMAPgizmwEAEEGCAgAQQYICABBBggIAEEGCAgAQQYICABBBggIAEEGCAgAQoSfobUzDMOTSUWh+yTAMaby1PP4uDf0peRiGNP7VbgEAPo05Br2NqStBZ7cxqclkPf4utf6UTIICAFxugo6P8Zocji6DOG2g1pWgolAlrO8tH61K3ixdrTM/mMbbbfdiqz/ifeVCggIAKrwEXc50yryR0XMb0y5E2xN0TOI8asmVs6aHEXHJ91d7deaknR8pWRY49KfktQxncQEAdW1ncZe8kgNQbfjYmqB2IlrmF8yxvp5l9evYRff92bW8jYkEBQC4OhO0doHwvAQtOY23ktNYchrL4+UkKADgTXoTdHO686jnLK58oOG6Y8k55zTeppJTWvvm1WlP0KnkQb5dzuICACq8/81yP0V7v29nDc7tmdw5eB6NWh/fnxCu3/d7W654bkNcr7NfrvW4/kzOXAoFAPj4iwoAAESQoAAARJCgAABEkKAAAESQoAAARJCgAABEkKAAAESQoAAARJCgAABEkKAAAESQoAAARJCgAABEkKAAAESQoAAARJCgAABEkKAAAESQoAAARJCgAABEkKAAAESQoAAARJCgAABEkKAAAESQoAAARJCgAABEkKAAAESQoAAARJCgAABEkKAAAESQoAAARJCgAABEkKAAAESQoAAARJCgAABEkKAAAESQoAAARJCgAABE/A9Axn93cHMUOQAAAABJRU5ErkJggg==" alt="" />
2、HttpServlet 抽象类
package xw.servlet; import java.io.IOException; import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; public class DHttpServlet extends HttpServlet {
/*
*HttpServlet 是抽象类,类中没有抽象方法,extends 自 GenericServlet
*抽象类可以没有抽象方法,但是如果你的一个类已经声明成了抽象类,即使这个类中没有抽象方法,它也不能再实例化,即不能直接构造一个该类的对象。
如果一个类中有了一个抽象方法,那么这个类必须声明为抽象类,否则编译通不过
*/ //httpServlet 是高效的,线程不安全的,每次请求服务器都会开启一个线程。
//但是如果,该类中,只有get读方法,没有set写方法,也不会出现 ,线程安全问题。 高手的写法。 但是,最好还是都写出局部变量
private User user = new User();
@Override
public void init() throws ServletException {
System.out.println("hello --> world!");
} public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
System.out.println("doGet()...");
} public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
System.out.println("doPost()...");
} }
访问页面 login.html:
aaarticlea/png;base64,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" alt="" />
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action="/JavaWebTest/servlet/DHttpServlet" method="post">
<input type="submit" value="提交"/>
</form>
</body>
</html>
显示效果:
aaarticlea/png;base64,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" alt="" />
ServletDemo的更多相关文章
- Weblogic部署项目三种方式
在weblogic中部署项目通常有三种方式:第一,在控制台中安装部署:第二,将部署包放在domain域中autodeploy目录下部署:第三,使用域中配置文件config.xml 进行项目的部署. 控 ...
- web学习之servlet
1)web服务软件作用: 把本地资源共享给外部访问 2)tomcat服务器基本操作 : 启动: %tomcat%/bin/startup.bat 关闭: %tomcat%/bin/shutdown. ...
- 跨域资源共享(CORS)问题解决方案
CORS:Cross-Origin Resource Sharing(跨域资源共享) CORS被浏览器支持的版本情况如下:Chrome 3+.IE 8+.Firefox 3.5+.Opera 12+. ...
- eclipse搭建servlet项目
1.创建web项目 2.勾选Generate web.xml 3.创建Class文件并实现Servlet接口 当搜索Servlet接口时,如果未发现接口则Add library→选择tomcat版本至 ...
- 动手学servlet(六) 过滤器和监听器
过滤器(Filter) 过滤器是在客户端和请求资源之间,起一个过滤的作用,举个例子,比如我们要请求admin文件夹下的index.jsp这个页面,那么我们可以用一个过滤器,判断登录用户是不是管理员 ...
- 动手学servlet(五) 共享变量
1. 无论对象的作用域如何,设置和读取共享变量的方法是一致的 -setAttribute("varName",obj); -getAttribute("varName&q ...
- 初学 Java Web 开发,请远离各种框架,从 Servlet 开发
Web框架是开发者在使用某种语言编写Web应用服务端时关于架构的最佳实践.很多Web框架是从实际的Web项目抽取出来的,仅和Web的请求和响应处 理有关,形成一个基础,在开发别的应用项目的时候则可以从 ...
- 传智播客JavaWeb听课总结
一. JavaWeb基础 第一天: 1.Eclipse详解: (1).Bad versionnumber in .class file:编译器版本和运行(JRE)版本不符合.高的JRE版本兼容低版本的 ...
- java servlet上传centos服务器
前面一篇随笔说了Centos上架设javaWeb运行环境的方法,这篇主要讲打包上传服务器. 一.数据库连接文件.propeties 为了数据库安全,mysql3306端口访问我做了ip访问限制,由于m ...
随机推荐
- JSON浅总
我们在以前的学习中了解到XML是一种结构化的数据表示方式,一种可扩展标记语言!可以把XML理解成一个微型的结构化的小的数据库,保存一些小型的数据和传输数据,有严格的显示限制.但是XML语句有些冗长和繁 ...
- Ajax 学习之动态获取,返回服务器的值
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...
- Let the Balloon Rise
Problem Description Contest time again! How excited it is to see balloons floating around. But to te ...
- BZOJ3746 : [POI2015]Czarnoksiężnicy okrągłego stołu
NOIP前做了几道POI,现在终于能在BZOJ上提交了… 交上去最后几个点WA,看了数据发现p=0的特判错了… p=0,1时特判 p=2时构造两种情况判断 p=3时不考虑1的座位进行DP 可以发现对于 ...
- 达成成就:排名和AC数相同
233333 纪念一下.(268会不会是幸运数字呢0.0
- 【BZOJ】1076: [SCOI2008]奖励关(状压dp+数学期望)
http://www.lydsy.com/JudgeOnline/problem.php?id=1076 有时候人蠢还真是蠢.一开始我看不懂期望啊..白书上其实讲得很详细的,什么全概率,全期望(这个压 ...
- 【BZOJ】1270: [BeijingWc2008]雷涛的小猫(DP+水题)
http://www.lydsy.com/JudgeOnline/problem.php?id=1270 这完全是一眼题啊,但是n^2的时间挺感人.(n^2一下的级别请大神们赐教,我还没学多少dp优化 ...
- 【wikioi】1285 宠物收养所
题目链接:http://www.wikioi.com/problem/1285/ 算法:Splay 刚开始看到这题,就注意到特征abs了,并且数据n<=80000显然不能暴力,只能用nlgn的做 ...
- windows环境下nginx的启动、停止
Windows下Nginx的启动.停止等命令 在Windows下使用Nginx,我们需要掌握一些基本的操作命令,比如:启动.停止Nginx服务,重新载入Nginx等,下面我就进行一些简单的介绍.1.启 ...
- 常用正则表达式(?i)忽略字母的大小写!
1.^/d+$ //匹配非负整数(正整数 + 0) 2.^[0-9]*[1-9][0-9]*$ //匹配正整数 3.^((-/d+)|(0+))$ //匹配非正整数(负整数 + 0) 4.^-[0-9 ...