[转] servlet

xiaoxiao2021-03-06  121

The following mainly introduces the HTTP Servlet application programming interface provided by javax.servlet.http.

HTTP Servlet uses an HTML form to send and receive data. To create an HTTP Servlet, extend the HTTPServlet class, which is a subclass of the genericServlet for the HTML table with a dedicated method. The HTML form is defined by

and tag. The form is typically included in the input field (such as a text input field, checkbox, radio button, and selection list) and buttons for submitting data. When submitting information, they also specify which servlets (or other programs) should be executed. The HTTPSERVLET class contains init (), destroy (), service (), etc. Wherein init () and destroy () methods are inherited.

(1) init () method

In the life period of the servlet, only the init () method is performed. It is performed when the server is loaded with a servlet. You can configure a server to load servlet when you start the server or client to access the servlet. No matter how many client access servlets, INIT () will not be repeated.

The default init () method is usually in line with the requirements, but can also be customized to override it, typically manage server-side resources. For example, a custom init () can be written only for one GIF image, improve the performance of servlet to return to GIF images and the performance of multiple client requests. Another example is to initialize the database connection. The default init () method sets the initial parameters of the servlet, and uses its servletconfig object parameters to start the configuration, so all servlets that override the init () method should call super.init () to ensure that these tasks are still executed. Before calling the service () method, you should ensure that the init () method has been completed.

(2) Service () method

The service () method is the core of the servlet. Whenever a customer requests an HTTPSERVLET object, the service () method of the object is called, and it is passed to this method a "servletRequest) object and a" SERVLETRESPONSE) object as a parameter. The service () method already exists in the HTTPServlet. The default service function is to call the corresponding DO functionality corresponding to the HTTP request. For example, if the HTTP request method is GET, DOGET () is called by default. The servlet should overwrite the DO function for the HTTP method supported by servlet. Because the httpservlet.service () method checks if the request method is called, it is not necessary to override the service () method. Just override the corresponding DO method.

When a client issues an HTTP POST request via an HTML form, the dopost () method is called. Parameters associated with the POST request are sent from the browser to the server as a separate HTTP request. DOPOST () method should be used when you need to modify the data of the server.

When a customer issues an HTTP GET request or directly requests a URL via an HTML form, the doget () method is called. The parameters associated with the GET request are added to the URL and send it with this request. You should use the doget () method when the server is not modified.

The response of the servlet can be the following types:

An output stream, the browser explained according to its content type (such as Text / HTML).

An HTTP error response, redirect to another URL, Servlet, JSP.

(3) DESTROY () method

The Destroy () method is only performed once, that is, the server is stopped and the servlet is unloaded. Typically, servlet is turned off as part of the server process. The default destroy () method is usually in line with requirements, but it can also overwrite it, typically manage server-end resources. For example, if the servlet accumulates statistics at runtime, a DESTROY () method can be written, which is used to save the statistics in the file when the servlet is not loaded. Another example is to turn off the database connection. When the server unresses the servlet, the destroy () method will be called after all service () method calls or after the specified time interval. A servlet may generate other threads when running the service () method, so confirm that when the destroy () method is called, these threads have terminated or completed.

(4) GetServletConfig () method

GetServletConfig () method returns a servletconfig object that is used to return to initialization parameters and servletContext. The servletContext interface provides environmental information about servlet.

(5) GetServletInfo () method

GetServletInfo () method is an optional method that provides information about servlet, such as author, version, copyright.

When the server calls the sevlet service (), doget (), and dopost (), "request" and "response" are required as parameters. The "Request" object provides information about the request, and the "Response" object provides a communication path to the browser to the browser in response information.

The related class in the Javax.Servlet package is ServletResponse and ServletRequest, and the related class in the Javax.Servlet.http package is httpservletRequest and HttpservletResponse.

Servlet communicates with the server through these objects and eventually communicates with the client. The servlet can know the client environment, the information of the server environment, and all information provided by the client. The servlet can call the "Response" object to send a response, which is ready to send back the client.

Cookie is a small piece of data that can be embedded in the HTTP request and response, which is generated on the server and returns the user as part of the response header. After the browser receives the response containing the cookie, the browser is written in the form of the "Keyword / Value" pair in the form of a client to store the cookie. The browser will send cookies and subsequent requests to the same server, and the server can read the cookie in the cookie to set the validity period, and the expiration cookie will not be sent to the server. The Servlet API provides a cookie class that encapsulates some operations for cookies. Servlet can create a new cookie, set its keywords, values, and validity periods, and then set the cookie to send back the browser in the HTTPSERVLETRESPONSE object, and get cookies from the HTTPServletRequest object. Programming: Cookie is widely used in the actual servlet program, which is an example of getting a cookie information from a servlet. The source code of ShowCookies.java is as follows:

import javax.servlet *;. import javax.servlet.http *;. / ***

This is a simple servlet that displays all of the * Cookies present in the request * / public class ShowCookies extends HttpServlet {public void doGet (HttpServletRequest req, HttpServletResponse resp) throws ServletException, java.io.IOException {// Set the content type of the response resp.setContentType ( "text / html; charset = gb2312"); // Get the PrintWriter to write the response java = Resp.Getwriter (); // Get an Array Containing All of the cookies cookie cookies [] = req.getCookies (); // Write the page header out.println (""); Out.println (""); out.println (""); Out.println ("</ head>"); Out.println ("<body>" ); If (cookies == null) || (cookies.length == 0)) {OUT.PRINTLN ("No cookies");} else {out.println ("<center> <h1> response message) Cookies Information </ h1> "); // Display a Table with all of the info outputln (" <table border> "); out.println (" <TR> <TH> Name < / TH> <TH> Value </ th> " " <TH> Comment </ th> <TH> Max Age </ TH> </ Tr> "); for (int i = 0; i <cookies.length ; i ) {cookie c = cookies [i]; out.println ("<tr> <td>" c.getname () "</ td> <td>" c.getValue () "<</p></div><div class="text-center mt-3 text-grey"> 转载请注明原文地址:https://www.9cbs.com/read-99007.html</div><div class="plugin d-flex justify-content-center mt-3"></div><hr><div class="row"><div class="col-lg-12 text-muted mt-2"><i class="icon-tags mr-2"></i><span class="badge border border-secondary mr-2"><h2 class="h6 mb-0 small"><a class="text-secondary" href="tag-2.html">9cbs</a></h2></span></div></div></div></div><div class="card card-postlist border-white shadow"><div class="card-body"><div class="card-title"><div class="d-flex justify-content-between"><div><b>New Post</b>(<span class="posts">0</span>) </div><div></div></div></div><ul class="postlist list-unstyled"> </ul></div></div><div class="d-none threadlist"><input type="checkbox" name="modtid" value="99007" checked /></div></div></div></div></div><footer class="text-muted small bg-dark py-4 mt-3" id="footer"><div class="container"><div class="row"><div class="col">CopyRight © 2020 All Rights Reserved </div><div class="col text-right">Processed: <b>0.047</b>, SQL: <b>9</b></div></div></div></footer><script src="./lang/en-us/lang.js?2.2.0"></script><script src="view/js/jquery.min.js?2.2.0"></script><script src="view/js/popper.min.js?2.2.0"></script><script src="view/js/bootstrap.min.js?2.2.0"></script><script src="view/js/xiuno.js?2.2.0"></script><script src="view/js/bootstrap-plugin.js?2.2.0"></script><script src="view/js/async.min.js?2.2.0"></script><script src="view/js/form.js?2.2.0"></script><script> var debug = DEBUG = 0; var url_rewrite_on = 1; var url_path = './'; var forumarr = {"1":"Tech"}; var fid = 1; var uid = 0; var gid = 0; xn.options.water_image_url = 'view/img/water-small.png'; </script><script src="view/js/wellcms.js?2.2.0"></script><a class="scroll-to-top rounded" href="javascript:void(0);"><i class="icon-angle-up"></i></a><a class="scroll-to-bottom rounded" href="javascript:void(0);" style="display: inline;"><i class="icon-angle-down"></i></a></body></html><script> var forum_url = 'list-1.html'; var safe_token = '_2FXfsqb2tll_2Fh5WVnhMp5o6t5gKMXsB2iwKhXlDwADz0B9hE2VzwMJDylKfVkxixAhW5x_2FA6p9oGLL4bmjj2sOA_3D_3D'; var body = $('body'); body.on('submit', '#form', function() { var jthis = $(this); var jsubmit = jthis.find('#submit'); jthis.reset(); jsubmit.button('loading'); var postdata = jthis.serializeObject(); $.xpost(jthis.attr('action'), postdata, function(code, message) { if(code == 0) { location.reload(); } else { $.alert(message); jsubmit.button('reset'); } }); return false; }); function resize_image() { var jmessagelist = $('div.message'); var first_width = jmessagelist.width(); jmessagelist.each(function() { var jdiv = $(this); var maxwidth = jdiv.attr('isfirst') ? first_width : jdiv.width(); var jmessage_width = Math.min(jdiv.width(), maxwidth); jdiv.find('img, embed, iframe, video').each(function() { var jimg = $(this); var img_width = this.org_width; var img_height = this.org_height; if(!img_width) { var img_width = jimg.attr('width'); var img_height = jimg.attr('height'); this.org_width = img_width; this.org_height = img_height; } if(img_width > jmessage_width) { if(this.tagName == 'IMG') { jimg.width(jmessage_width); jimg.css('height', 'auto'); jimg.css('cursor', 'pointer'); jimg.on('click', function() { }); } else { jimg.width(jmessage_width); var height = (img_height / img_width) * jimg.width(); jimg.height(height); } } }); }); } function resize_table() { $('div.message').each(function() { var jdiv = $(this); jdiv.find('table').addClass('table').wrap('<div class="table-responsive"></div>'); }); } $(function() { resize_image(); resize_table(); $(window).on('resize', resize_image); }); var jmessage = $('#message'); jmessage.on('focus', function() {if(jmessage.t) { clearTimeout(jmessage.t); jmessage.t = null; } jmessage.css('height', '6rem'); }); jmessage.on('blur', function() {jmessage.t = setTimeout(function() { jmessage.css('height', '2.5rem');}, 1000); }); $('#nav li[data-active="fid-1"]').addClass('active'); </script>