当前位置: 首页 > news >正文

网站建站代理wordpress百度云伪静态

网站建站代理,wordpress百度云伪静态,网站是什么公司做的,移动端什么意思Servlet Servlet是sun公司开发的动态web技术 sun在API中提供了一个接口叫做 Servlet #xff0c;一个简单的Servlet 程序只需要完成两个步骤 编写一个实现了Servlet接口的类 把这个Java部署到web服务器中 一般来说把实现了Servlet接口的java程序叫做#xff0c;Servlet 初步…Servlet Servlet是sun公司开发的动态web技术 sun在API中提供了一个接口叫做 Servlet 一个简单的Servlet 程序只需要完成两个步骤 编写一个实现了Servlet接口的类 把这个Java部署到web服务器中 一般来说把实现了Servlet接口的java程序叫做Servlet 初步认识Servlet Servlet接口sun公司有两个默认的实现抽象类HttpServletGenericServlet 看看Serlvet接口是怎么在这两个类中实现的 Servlet接口 package javax.servlet;import java.io.IOException;public interface Servlet {void init(ServletConfig var1) throws ServletException;ServletConfig getServletConfig();void service(ServletRequest var1, ServletResponse var2) throws ServletException, IOException;String getServletInfo();void destroy(); } 这个接口里有五个抽象方法 init(ServletConfig var1)getServletConfig()service(ServletRequest var1, ServletResponse var2)getServletInfo()destroy() 这五个方法建立起了Servlet的基本框架初始化、获取配置、服务功能、获取状态信息、销毁 也体现了servlet的生命周期 Servlet 初始化后调用 init () 方法。Servlet 调用 service() 方法来处理客户端的请求。Servlet 销毁前调用 destroy() 方法。最后Servlet 是由 JVM 的垃圾回收器进行垃圾回收的。 其中比较值得观察的是service方法 GenericServlet package javax.servlet;import java.io.IOException; import java.io.Serializable; import java.util.Enumeration;public abstract class GenericServlet implements Servlet, ServletConfig, Serializable {private static final long serialVersionUID 1L;private transient ServletConfig config;public GenericServlet() {}public void destroy() {}public String getInitParameter(String name) {return this.getServletConfig().getInitParameter(name);}public EnumerationString getInitParameterNames() {return this.getServletConfig().getInitParameterNames();}public ServletConfig getServletConfig() {return this.config;}public ServletContext getServletContext() {return this.getServletConfig().getServletContext();}public String getServletInfo() {return ;}public void init(ServletConfig config) throws ServletException {this.config config;this.init();}public void init() throws ServletException {}public void log(String message) {this.getServletContext().log(this.getServletName() : message);}public void log(String message, Throwable t) {this.getServletContext().log(this.getServletName() : message, t);}public abstract void service(ServletRequest var1, ServletResponse var2) throws ServletException, IOException;public String getServletName() {return this.config.getServletName();} } 还是那五个抽象方法 init(ServletConfig var1)getServletConfig()service(ServletRequest var1, ServletResponse var2)getServletInfo()destroy() 可以看到对于service方法这个类并没有做任何的改变只是对初始化和状态信息获取做出了改变 HttpServlet package javax.servlet.http;import java.io.IOException; import java.lang.reflect.Method; import java.text.MessageFormat; import java.util.Enumeration; import java.util.ResourceBundle; import javax.servlet.GenericServlet; import javax.servlet.ServletException; import javax.servlet.ServletOutputStream; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse;public abstract class HttpServlet extends GenericServlet {private static final String METHOD_DELETE DELETE;private static final String METHOD_HEAD HEAD;private static final String METHOD_GET GET;private static final String METHOD_OPTIONS OPTIONS;private static final String METHOD_POST POST;private static final String METHOD_PUT PUT;private static final String METHOD_TRACE TRACE;private static final String HEADER_IFMODSINCE If-Modified-Since;private static final String HEADER_LASTMOD Last-Modified;private static final String LSTRING_FILE javax.servlet.http.LocalStrings;private static ResourceBundle lStrings ResourceBundle.getBundle(javax.servlet.http.LocalStrings);public HttpServlet() {}protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {String protocol req.getProtocol();String msg lStrings.getString(http.method_get_not_supported);if (protocol.endsWith(1.1)) {resp.sendError(405, msg);} else {resp.sendError(400, msg);}}protected long getLastModified(HttpServletRequest req) {return -1L;}protected void doHead(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {NoBodyResponse response new NoBodyResponse(resp);this.doGet(req, response);response.setContentLength();}protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {String protocol req.getProtocol();String msg lStrings.getString(http.method_post_not_supported);if (protocol.endsWith(1.1)) {resp.sendError(405, msg);} else {resp.sendError(400, msg);}}protected void doPut(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {String protocol req.getProtocol();String msg lStrings.getString(http.method_put_not_supported);if (protocol.endsWith(1.1)) {resp.sendError(405, msg);} else {resp.sendError(400, msg);}}protected void doDelete(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {String protocol req.getProtocol();String msg lStrings.getString(http.method_delete_not_supported);if (protocol.endsWith(1.1)) {resp.sendError(405, msg);} else {resp.sendError(400, msg);}}private Method[] getAllDeclaredMethods(Class? extends HttpServlet c) {Class? clazz c;Method[] allMethods;for(allMethods null; !clazz.equals(HttpServlet.class); clazz clazz.getSuperclass()) {Method[] thisMethods clazz.getDeclaredMethods();if (allMethods ! null allMethods.length 0) {Method[] subClassMethods allMethods;allMethods new Method[thisMethods.length allMethods.length];System.arraycopy(thisMethods, 0, allMethods, 0, thisMethods.length);System.arraycopy(subClassMethods, 0, allMethods, thisMethods.length, subClassMethods.length);} else {allMethods thisMethods;}}return allMethods ! null ? allMethods : new Method[0];}protected void doOptions(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {Method[] methods this.getAllDeclaredMethods(this.getClass());boolean ALLOW_GET false;boolean ALLOW_HEAD false;boolean ALLOW_POST false;boolean ALLOW_PUT false;boolean ALLOW_DELETE false;boolean ALLOW_TRACE true;boolean ALLOW_OPTIONS true;for(int i 0; i methods.length; i) {String methodName methods[i].getName();if (methodName.equals(doGet)) {ALLOW_GET true;ALLOW_HEAD true;} else if (methodName.equals(doPost)) {ALLOW_POST true;} else if (methodName.equals(doPut)) {ALLOW_PUT true;} else if (methodName.equals(doDelete)) {ALLOW_DELETE true;}}StringBuilder allow new StringBuilder();if (ALLOW_GET) {allow.append(GET);}if (ALLOW_HEAD) {if (allow.length() 0) {allow.append(, );}allow.append(HEAD);}if (ALLOW_POST) {if (allow.length() 0) {allow.append(, );}allow.append(POST);}if (ALLOW_PUT) {if (allow.length() 0) {allow.append(, );}allow.append(PUT);}if (ALLOW_DELETE) {if (allow.length() 0) {allow.append(, );}allow.append(DELETE);}if (ALLOW_TRACE) {if (allow.length() 0) {allow.append(, );}allow.append(TRACE);}if (ALLOW_OPTIONS) {if (allow.length() 0) {allow.append(, );}allow.append(OPTIONS);}resp.setHeader(Allow, allow.toString());}protected void doTrace(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {String CRLF \r\n;StringBuilder buffer (new StringBuilder(TRACE )).append(req.getRequestURI()).append( ).append(req.getProtocol());Enumeration reqHeaderEnum req.getHeaderNames();while(reqHeaderEnum.hasMoreElements()) {String headerName (String)reqHeaderEnum.nextElement();buffer.append(CRLF).append(headerName).append(: ).append(req.getHeader(headerName));}buffer.append(CRLF);int responseLength buffer.length();resp.setContentType(message/http);resp.setContentLength(responseLength);ServletOutputStream out resp.getOutputStream();out.print(buffer.toString());}protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {String method req.getMethod();long lastModified;if (method.equals(GET)) {lastModified this.getLastModified(req);if (lastModified -1L) {this.doGet(req, resp);} else {long ifModifiedSince req.getDateHeader(If-Modified-Since);if (ifModifiedSince lastModified) {this.maybeSetLastModified(resp, lastModified);this.doGet(req, resp);} else {resp.setStatus(304);}}} else if (method.equals(HEAD)) {lastModified this.getLastModified(req);this.maybeSetLastModified(resp, lastModified);this.doHead(req, resp);} else if (method.equals(POST)) {this.doPost(req, resp);} else if (method.equals(PUT)) {this.doPut(req, resp);} else if (method.equals(DELETE)) {this.doDelete(req, resp);} else if (method.equals(OPTIONS)) {this.doOptions(req, resp);} else if (method.equals(TRACE)) {this.doTrace(req, resp);} else {String errMsg lStrings.getString(http.method_not_implemented);Object[] errArgs new Object[]{method};errMsg MessageFormat.format(errMsg, errArgs);resp.sendError(501, errMsg);}}private void maybeSetLastModified(HttpServletResponse resp, long lastModified) {if (!resp.containsHeader(Last-Modified)) {if (lastModified 0L) {resp.setDateHeader(Last-Modified, lastModified);}}}public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {if (req instanceof HttpServletRequest res instanceof HttpServletResponse) {HttpServletRequest request (HttpServletRequest)req;HttpServletResponse response (HttpServletResponse)res;this.service(request, response);} else {throw new ServletException(non-HTTP request or response);}} } 可以看到这层的类实现了service方法的处理每次服务器接收到一个 Servlet 请求时服务器会产生一个新的线程并调用服务。service() 方法检查 HTTP 请求类型GET、POST、PUT、DELETE 等并在适当的时候调用 doGet、doPost、doPutdoDelete 等方法。 但是它默认处理并不是我们所需要的所以我们自己写的java类就是要重写这些方法。 现在这个简单的Servlet基础使用链就明了了 RMI RMI (Java Remote Method Invocation) Java 远程方法调用是一种允许一个 JVM 上的 object 调用另一个 JVM 上 object 方法的机制 ⼀个RMI Server分为三部分 ⼀个继承了 java.rmi.Remote 的接⼝其中定义我们要远程调⽤的函数⼀个实现了此接⼝的类⼀个主类⽤来创建Registry并将上⾯的类实例化后绑定到⼀个地址 来分析一下这个RMI设计的意图 一个RMI服务器的三个部分一个接口、两个类我理解的它们的作用如下 接口作为远程方法调用的调用目标实现接口的类用来承载接口方法 为什么要有这样一个类 有类就可以序列化序列化之后就可以把一个难以传输的目标变成一个便于传输的流 一个主类作为Registry存在。 打个比方它就像一个车站的售票处一样你来坐车你就要先去它哪里找他买票你有了对应的票才能找到、乘坐对应的车。 在RMI整体流程它也差不多扮演这个角色客户端去向Registry请求某个方法Registry返回一个stub给客户端客户端在通过stub种的信息找到对应的地址端口建立TCP连接 RMI简单流程 一个简单的demo 服务端 package rmilearn;import java.net.MalformedURLException; import java.rmi.Naming; import java.rmi.RemoteException; import java.rmi.registry.LocateRegistry; import java.rmi.server.UnicastRemoteObject;public class Learn01 {public static void main(String[] args) throws RemoteException, MalformedURLException {HelloRmi rmi new HelloRmi();LocateRegistry.createRegistry(1099);Naming.rebind(rmi://127.0.0.1:1099/hello,rmi);} }class HelloRmi extends UnicastRemoteObject implements Hello {protected HelloRmi() throws RemoteException {super();}Overridepublic String HelloRm() throws RemoteException {return hello rmi;} } -------------------------------------------------------------------------- package rmilearn;import java.rmi.Remote; import java.rmi.RemoteException;public interface Hello extends Remote {String HelloRm() throws RemoteException; } 客户端 public class client {public static void main(String[] args) throws RemoteException, NotBoundException {Registry re LocateRegistry.getRegistry(localhost,1099);Hello h (Hello) re.lookup(hello);String s h.HelloRm();System.out.println(s);} }
http://www.hkea.cn/news/14572680/

相关文章:

  • 做旅游宣传图的网站有哪些centos 安装 wordpress
  • 模板型网站建设有关做洁净工程的企业网站
  • 做淘宝的网站有哪些焊枪公司网站怎么做
  • 怎么可以做网站的网站福州 网站备案
  • 企业建设营销型网站步骤足彩网站怎样做推广
  • 手机网站页面设计wordpress 编辑index
  • 自己做的网站网站搜索免费 wordpress
  • 合作网站建设网站建设课程教学改革
  • 秦皇岛网站制作费用揭阳住房和城乡建设厅网站
  • php和ASP网站那个好网站的运营模式
  • 某企业集团网站建设方案推广做网站
  • 营销型网站的建设流程常德市住房城乡建设局网站
  • 沈阳网站建设工作外贸线上推广
  • 北京网站建设找德冿朴深圳建工集团
  • 网站推广策划书怎么说简易购物网站模板
  • wordpress修改后台管理地址=seo如何网站正常更新
  • 网站制作 合肥上海市政大厅官网
  • 百城建设提质工程网站网站制作的基本流程是什么
  • 付费设计网站厦门建模培训
  • 微网站做的比较好的上海网站建设哪家公司好
  • 文件下载网站源码制作网页应该用哪个
  • 郑州外贸网站推广问什么出现 这个网站正在建设中
  • 网站获取访客手机号源码今天北京发生的重大新闻
  • 在线网站建设培训班网站注册备案之后怎么做
  • 网站模板wordpress家乡网站策划书建设背景
  • 无锡网站制作方案制作h5的基本流程
  • 科协网站建设建议设计网站教程
  • 做仓单的网站网络营销的网站的分析
  • 怎么样黑进网站后台网站流量 用什么表示
  • 网站开发需求 德州网页设计与制作平台