精华内容
下载资源
问答
  • 如何编写一个Servlet

    千次阅读 2019-10-07 21:54:54
    2.怎么按照JavaEE的规范编写一个servlet 关键字 作用 说明 Servlet 接口 有五个抽象方法 GenericServlet 抽象类 有一个抽象方法 HttpServlet 抽象类 没有抽象方法 ...

    Servlet day2

    1.什么是servlet

    servlet本身就是一种java类,这种java类可以提供web形式的访问(Java EE 规范)

    2.怎么按照JavaEE的规范编写一个servlet

    关键字作用说明
    Servlet接口有五个抽象方法
    GenericServlet抽象类有一个抽象方法
    HttpServlet抽象类没有抽象方法

    HttpServlet-继承->GenericServlet-实现->Servlet接口

    所以编写一个servlet,有三种方式

    第一种方式:
    写一个类去实现接口servlet
    最重要的是实现接口中的service方法
    这个方法就是我们在访问servlet的时候被tomcat服务器调用的


    第二种方式:
    写一个类去继承父类GenericServlet
    抽象类GenericServlet里面有一个抽象方法service,这个方法是servlet接口中的方法,所以GenericServlet只实现了Servlet接口中的四个抽象方法,还剩下这个service没有实现。同时,GenericServlet类中不但实现了Servlet接口中的init方法,而且还重载了一个无参的init()方法

    源代码中两个init方法的实现:

    			//tomcat服务器默认调用的是这个init方法
    		    @Override
    			public void init(ServletConfig config) throws ServletException {
    				this.config = config;
    				this.init();
    			}
    			//用户需要重写的是这个init()方法
    			public void init() throws ServletException{
    				// NOOP by default
    			}
    

    第三种方式:
    写一个类去继承父类HttpServlet
    HttpServlet是一个抽象类,但是没有任何抽象方法
    HttpServlet类中自定义了很多doXxxx方法,每一种方法都对应了浏览器发送请求的方法,一般常用的浏览器发请求方式为get和post,这两种方式分别对应了这个类中的doGet方法和doPost方法。
    HttpServlet类中,有两个service方法

    		//这个service方法Servlet接口中的
    		void service(ServletRequest req, ServletResponse res){...}
    		
    		//这个service是HttpServlet中重载的方法
    		void service(HttpServletRequest req, HttpServletResponse resp){...}
    		
    
    		源代码中俩个service方法的实现:
    		//实现Servlet接口中的service方法
    		@Override
    		public void service(ServletRequest req, ServletResponse res)
    			throws ServletException, IOException {
    
    			HttpServletRequest  request;
    			HttpServletResponse response;
    
    			try {
    				request = (HttpServletRequest) req;
    				response = (HttpServletResponse) res;
    			} catch (ClassCastException e) {
    				throw new ServletException("non-HTTP request or response");
    			}
    			//调用重载之后的service方法
    			service(request, response);
    		}
    
    		
    		//HttpServlet类中重载的service方法
    		protected void service(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {
    
    			String method = req.getMethod();
    
    			if (method.equals(METHOD_GET)) {
    				long lastModified = getLastModified(req);
    				if (lastModified == -1) {
    					// servlet doesn't support if-modified-since, no reason
    					// to go through further expensive logic
    					doGet(req, resp);
    				} else {
    					long ifModifiedSince;
    					try {
    						ifModifiedSince = req.getDateHeader(HEADER_IFMODSINCE);
    					} catch (IllegalArgumentException iae) {
    						// Invalid date header - proceed as if none was set
    						ifModifiedSince = -1;
    					}
    					if (ifModifiedSince < (lastModified / 1000 * 1000)) {
    						// If the servlet mod time is later, call doGet()
    						// Round down to the nearest second for a proper compare
    						// A ifModifiedSince of -1 will always be less
    						maybeSetLastModified(resp, lastModified);
    						doGet(req, resp);
    					} else {
    						resp.setStatus(HttpServletResponse.SC_NOT_MODIFIED);
    					}
    				}
    
    			} else if (method.equals(METHOD_HEAD)) {
    				long lastModified = getLastModified(req);
    				maybeSetLastModified(resp, lastModified);
    				doHead(req, resp);
    
    			} else if (method.equals(METHOD_POST)) {
    				doPost(req, resp);
    
    			} else if (method.equals(METHOD_PUT)) {
    				doPut(req, resp);
    
    			} else if (method.equals(METHOD_DELETE)) {
    				doDelete(req, resp);
    
    			} else if (method.equals(METHOD_OPTIONS)) {
    				doOptions(req,resp);
    
    			} else if (method.equals(METHOD_TRACE)) {
    				doTrace(req,resp);
    
    			} else {
    				//
    				// Note that this means NO servlet supports whatever
    				// method was requested, anywhere on this server.
    				//
    
    				String errMsg = lStrings.getString("http.method_not_implemented");
    				Object[] errArgs = new Object[1];
    				errArgs[0] = method;
    				errMsg = MessageFormat.format(errMsg, errArgs);
    
    				resp.sendError(HttpServletResponse.SC_NOT_IMPLEMENTED, errMsg);
    			}
    		}
    

    3.servlet的生命周期

    3.1 servlet是单例,在web项目运行期间,一个servlet只会创建一个对象

    web项目本身就需要在多线程的环境中运行,tomcat服务器会提供这样的多线程环境,当浏览器发送一个请求,tomcat接收到这个请求之后会开启一个线程去处理这个请求

    在这种环境下,由于servlet是单例,所以在servlet中声明的成员变量,就会有线程安全的问题。

    所以我们应该尽量少的在servlet中定义成员变量

    3.2 默认情况下

    servlet对象是在用户第一次访问它的时候,由tomcat服务器来创建的(可以通过配置进行改变)。

    3.3 servlet对象创建成功之后

    tomcat服务器还会调用servlet里面的init(ServletConfig config),这个有参的init方法会调用无参的init()方法,程序员就可以重写这个无参的init()方法,对创建好的servlet对象进行初始化操作。

    3.4 如果用户要访问这个servlet对象

    那么tomcat服务器会调用这个servlet对象中的service方法,只不过service方法中又进行了方法的层层调用,最后调用到了我们重写的doGet或者是doPost方法

    3.5 当servlet对象被销毁的时候

    tomcat服务器会调用servlet里面的destory方法,程序员就可以重写这个方法,表示当对象销毁的时候需要做哪些额外的处理
    servlet对象被销毁的情况
    1.服务器【正常】关闭的时候
    2.服务器重新加载web项目的时候(reloading)

    3.6 可以通过修改web.xml文件中的配置,去改变servlet对象创建的时间

    只要在<servlet>标签中,添加一个子标签<load-on-startup>就可以了
    <load-on-startup>标签表示当前这个servlet需要在启动tomcat服务器期间就被创建出来

    <load-on-startup>标签里面需要放一个正整数,数值的大小可以决定servlet对象被创建的先后顺序,数值越小就越先被创建。(如果有多个servlet对象需要在tomcat启动期间被创建的话)

    4.Servlet接口中的方法(共有五个方法)

    	//初始化servlet对象的时候被调用
    	void 	init(ServletConfig config)
    
    	//销毁servlet对象的时候被调用
    	void 	destroy()
    
    	//访问servlet对象的时候被调用
    	void 	service(ServletRequest req, ServletResponse res)
    	
    	//返回servlet相关信息,比如作者、版本、版权等
    	//父类中(GenericServlet)默认返回一个空字符串 ""
    	//如果需要的话,程序员可以自己重写这个方法
    	String 	getServletInfo()
    
    	//返回ServletConfig对象
    	ServletConfig 	getServletConfig()
    

    5.ServletConfig接口中的方法(共有四个方法)

    ServletConfig接口的实现类对象,表示一个servlet在web.xml文件中的配置信息

    	//返回servlet在web.xml文件中所配置的名字
    	//也就是<servlet-name>这个标签中的值
    	String 	getServletName()
    
    	//获得在web.xml中所配置的指定名字的参数值
    	//在web.xml可以通过<init-param>标签给servlet传参
    	String 	getInitParameter(String name)
    
    	//获得给当前servlet传的所有参数的名字
    	Enumeration 	getInitParameterNames()
    
    	//获得ServletContext类型对象
    	//ServletContext是web项目中非常重要的一个类型对象
    	ServletContext 	getServletContext()
    

    6.servlet的访问

    使用web.xml文件里面的这个<url-pattern>标签映射的路径,来访问servlet

    6.1 在浏览器的地址栏中,直接输入servlet映射的路径来访问

    这时候是get方式的访问,servlet中的doGet方法最终会被调用

    6.2 在页面中,可以使用超链接来访问servlet

    这时候是get方式的访问,servlet中的doGet方法最终会被调用

    6.3 在页面中,可以使用表单发送请求去访问servlet

    这时候默认情况下是get方式访问,但是可以通过表单里的属性值进行设置为get或者post方式

    6.4 将来还可以使用javascript或者在ajax中发请求访问servlet

    这个时候也可以进行设置使用get方式还是post方式进行访问servlet

    6.5 其他的情况:

    还可以使用标签语言来访问servlet

    7.get方式的访问和post方式的访问

    get方式访问
    浏览器地址栏直接输入地址访问
    超链接访问
    <image src="">访问图片
    外部js文件的引入
    外部css文件的引入
    表单提交数据method=“get”
    在javascript代码中访问
    在ajax中访问
    使用jsp相关标签访问


    post方式访问
    表单提交数据method=“post”
    ajax中设置本次请求为post方式


    在http协议规范中,定义了四种访问方式(常见的)
    get(查) post(改) put(增) delete(删)


    http协议规范下的请求格式(分为四部分)
    1部分: 请求行
    2部分: 请求头部/消息报头
    3部分: \r\n
    4部分: 请求正文


    get方式传参数 参数在uri后面(uri和url的区别)
    GET /hello.html?name=tom HTTP1.1
    key: value
    key: value
    key: value

    \r\n


    post方式传参 参数在请求正文中
    POST /hello.html HTTP1.1
    key: value
    key: value
    key: value

    \r\n
    name=tom


    • get和post的【传参】的安全性
      get方式的参数由于是在地址栏中显示的,所以安全性低一些,post传参的时候参数在请求正文中,相对会安全一些。但是真正重要的数据在传的过程中还会更换协议http–>https,比如在网上支付的过程中

    • get和post在传参过程中参数长度的限制
      get方式传参,参数长度是要看浏览器对地址栏中字符长度的限制,也就是要看浏览器对url地址的长度限制,我们只是把参数放到url后面了。url?参数=值
      post方式参数,参数长度是要看服务器一次性最多能够接受并且处理多少数据

    8.在servlet中,接受客户端传的参数

    不管客户端是post方式还是get方式传参,只是参数存放的位置在传输过程有所变化,但是对于servlet接收参数来讲,俩种情况都是一样的接收

    下面的测试是在这样的传参中进行的
    http://127.0.0.1:8989/web_servlet/ParamServlet?name=tom&age=20&like=0&like=1

    8.1 接收单一的值(一个参数名对应一个值)

    		String name = request.getParameter("name");
    		String age = request.getParameter("age");
    		System.out.println(name);
    		System.out.println(age);
    

    8.2 一个参数名对应多个值(比如多选框)

    		String[] like = request.getParameterValues("like");
    		System.out.println(Arrays.toString(like));
    

    8.3 获得本次传参中的所有参数名

    		Enumeration<String> names = request.getParameterNames();
    		while(names.hasMoreElements()){
    			String str = names.nextElement();
    			System.out.println(str);
    		}
    
    	打印结果:
    	name
    	age
    	like
    

    8.4 获得本次传参中的所有参数及对应的值

    		Map<String, String[]> map = request.getParameterMap();
    		for(String key:map.keySet()){
    			System.out.println(key+" : "+Arrays.toString(map.get(key)));
    		}
    
    	打印结果:
    	name : [tom]
    	age  : [20]
    	like : [0, 1]
    

    9.客户端传参过程中,出现中文乱码

    9.1 get方式传参,中文乱码

    需要在tomcat服务器中server.xml文件中进行配置

    	在<Connector>中加入新的属性URIEncoding="XXX"
    	<Connector URIEncoding="UTF-8" connectionTimeout="20000" port="8989" protocol="HTTP/1.1" redirectPort="8443"/>
    

    9.2 post方式传参,中文乱码

    在使用request获取参数【之前】,先把request中的编码进行设置

    		request.setCharacterEncoding("UTF-8");
    		String name = request.getParameter("name");
    		System.out.println(name);
    

    9.3 servlet中使用io流写数据到浏览器,浏览器里面显示中文乱码

    http协议规范中响应的格式为:
    1部分 响应状态行
    2部分 响应头部/消息报头
    3部分 \r\n
    4部分 响应正文


    如果响应头部信息中没有设置编码,那么浏览器会默认使用简体中文(GBK)来解析响应中的内容


    所以在使用io流之前,需要设置一下response中的编码,同时还要告诉浏览器本次响应内容的编码是什么
    //设置response中的编码为UTF-8
    response.setCharacterEncoding(“UTF-8”);
    //设置响应头部,告诉浏览器响应内容编码为utf-8
    response.setContentType(“text/html;charset=utf-8”);

    9.4 Unicode(字符集)和UTF-8(编码规则)

    Unicode符号范围 | UTF-8编码方式
    十六进制 二进制
    0000 0000-0000 007F | 0xxxxxxx
    0000 0080-0000 07FF | 110xxxxx 10xxxxxx
    0000 0800-0000 FFFF | 1110xxxx 10xxxxxx 10xxxxxx
    0001 0000-0010 FFFF | 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx

    展开全文
  • 编写一个Servlrt程序编写Servlet映射配置Tomcat启动Tomcat服务器测试 JavaWeb——编写一个Servlet程序 1.Servlet简介 Servlet是Sun公司开发的用于交互式地浏览和生成数据,生成动态Web的技术。 狭义的Servlet是...

    JavaWeb——编写一个Servlet程序

    1.Servlet简介

    • Servlet是Sun公司开发的用于交互式地浏览和生成数据,生成动态Web的技术。

    • 狭义的Servlet是指Java语言实现的一个接口

    • 但一般情况下,我们把实现了Servlet接口的Java程序叫做Servlet

    • 开发Servlet程序的两个步骤:

    • 编写一个类,实现Servlet接口

    • 把开发好的Java类部署到web服务器中

    • Servlet 通常情况下与使用 CGI(Common Gateway Interface,公共网关接口)实现的程序可以达到异曲同工的效果。但是相比于 CGI,Servlet 有以下几点优势:

      • 性能明显更好。
      • Servlet 在 Web 服务器的地址空间内执行。这样它就没有必要再创建一个单独的进程来处理每个客户端请求。
      • Servlet 是独立于平台的,因为它们是用 Java 编写的。
      • 服务器上的 Java 安全管理器执行了一系列限制,以保护服务器计算机上的资源。因此,Servlet 是可信的。
      • Java 类库的全部功能对 Servlet 来说都是可用的。它可以通过 sockets 和 RMI 机制与 applets、数据库或其他软件进行交互。

    2.HelloServlrt

    1.建一个普通的Maven项目

    建一个普通的Maven项目,作为父项目,并删掉里面的src目录

    点我查看建立方法

    在主项目里面添加maven依赖:

     <dependencies>
           <dependency>
               <groupId>javax.servlet</groupId>
               <artifactId>javax.servlet-api</artifactId>
               <version>4.0.1</version>
           </dependency>     
    
           <dependency>
               <groupId>javax.servlet.jsp</groupId>
               <artifactId>javax.servlet.jsp-api</artifactId>
               <version>2.3.3</version>
           </dependency>
       </dependencies>
    

    2.建一个子项目

    在主项目里面建一个子项目(MavenWeb项目)

    右键主项目–>new–>module

    点我查看建立方法

    在这里插入图片描述

    关于Maven中父子项目的理解:

    父项目的核心配置文件中会有

     <modules>
            <module>servlet-01</module>
        </modules>
    

    子项目的核心配置文件中会有

    <parent>
        <artifactId>javaweb-01-servlet</artifactId>
        <groupId>com.cheng</groupId>
        <version>1.0-SNAPSHOT</version>
      </parent>
    

    父项目中的jar包子项目可以直接使用,但子项目中的jar包父项目不能使用

    3.Maven环境优化

    1.替换子项目中web.xml配置文件的内容为最新的

    方法:把web.xml原有的内容都删掉,然后加入下面代码,就替换成功了。

    <?xml version="1.0" encoding="UTF-8"?>
    
    <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
                          http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
             version="4.0"
             metadata-complete="true">
    </web-app>
    

    2.补全maven子项目的结构

    在子项目–>src–>main下建立java文件和resources文件,并做好功能标记

    java文件:放置java源代码

    resources文件:放置一些配置文件
    在这里插入图片描述

    点我查看功能标记方法

    4.编写一个Servlrt程序

    1.编写一个普通类
    2.实现servlet接口

    package com.cheng.servlet;
    
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.io.IOException;
    import java.io.PrintWriter;
    
    /**
     * @User len
     * @Classname HelloServlet
     * @Project javaweb-01-servlet
     * @Description TODO
     * @Author wpcheng
     * @Create 2021-02-03-11:28
     * @Version 1.0
     */
    public class HelloServlet extends HttpServlet {
    
        //由于get或者post方法只是请求实现的不同方式,可以相互调用,因为业务逻辑都一样
        @Override
        protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    
            PrintWriter writer = resp.getWriter();
            writer.println("第一个servlet程序");
        }
    
        @Override
        protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            doGet(req, resp);
        }
    
    }
    
    

    编写Servlet映射

    为什么需要映射:

    我们写的是Java程序,但是要通过浏览器访问,而浏览器需要连接web服务器,所以我们需要在web服务器中注册我们写的Servlet,还需要给它一个路径,以便浏览器访问。

    在web.xml配置文件的web-app标签内添加下面代码

     <!--注册servlet-->
        <servlet>
            <servlet-name>hello</servlet-name>
            <servlet-class>com.cheng.servlet.HelloServlet</servlet-class>
        </servlet>
    <!--Servlet映射的请求路径-->
        <servlet-mapping>
            <servlet-name>hello</servlet-name>
            <url-pattern>/hello</url-pattern>
        </servlet-mapping>
    
    

    配置Tomcat

    配置时要注意项目的发布路径

    在这里插入图片描述

    点我查看Tomcat配置方法

    启动Tomcat服务器测试

    这个是webapp文件下的index.jsp文件的页面

    在这里插入图片描述

    在路径后面加上我们的servlect映射路径后,浏览器就可以访问到Helloservlect的页面了

    在这里插入图片描述

    展开全文
  • 编写一个servlet例子

    千次阅读 2018-06-21 01:12:58
    手动编写servlet步骤 虽然已经不需要它了,但还是讲讲web.xml的配置方法吧 实现第一个servlet例子——向页面输出内容 servlet简介 简单来说,servlet就相当于是后台处理数据的一个东西。比如说表单要...

    servlet简介

    简单来说,servlet就相当于是后台处理数据的一个东西。比如说表单要提交了 action提交到哪里去呢?就写一个比如XX.java 这个里面写一个java类(servlet) 这个类用于处理提交过来的信息。

    然后接下来我们瞎bb一会儿:
    servlet是jsp的前身,是一个可以通过”请求-响应”编程模型来访问的 在服务器上运行的小程序。
    servlet容器管理context容器,一个context容器对应一个web工程
    Servlet(接口):有三个方法 :Init()、service()和destroy();
    类的关系
    GenericServlet(抽象类,实现servlet接口):是与协议无关的servlet类。
    HttpServlet(抽象类):实现了http协议的servlet类。
    自定义Servlet(继承HttpServlet方法):一般重写(覆盖)doGet与doPost方法。重写哪个方法取决于用户用什么方式提交请求。

    servlet生命周期

    1. init 初始化
    2. 响应客户请求 service-(doGet或doPost)
    3. 服务器关闭-终止:destroy(只有服务器被关闭时才会执行destroy,仅仅终止程序是没有用的)

    一旦servlet实例被装载,servlet对象会一直保存在服务器内存当中

    Tomcat装载servlet的三种情况:

    1. 当客户端首次访问某个servlet时
    2. servlet容器启动时可以自动装载某些servlet(不需要客户端进行请求)
      需要在web.xml文件中进行如下配置:
    <servlet>
        <loadon-startup>1</loadon-startup>//数字越小优先级越高
    </servlet>
    1. servlet类文件被更新后,也会重新装载servlet

    手动编写servlet步骤

    1. 继承HttpServlet
    2. 重写(覆盖)doGet与doPost方法.(这取决于用户用什么方式提交请求,超链接使用的是get方式,表单可以指定使用post方法)
    3. 在web.xml中注册servlet
      在新版的eclipse中创建servlet时取消了自动在web.xml中生成servlet 和mapping,取而代之的时在servlet中加入注解@webservlet,在@WebServlet 中定义Servlet的name、urlPatterns等信息。

    虽然已经不需要它了,但还是讲讲web.xml的配置方法吧

    注意不要既配置web.xml又配置@WebServlet,不然可能tomcat会启动出错

    <welcome-file-list></welcome-file-list>后面加上:

    <servlet>
        <servlet-name>TaxiPriceServlet</servlet-name>//servlet的名字
        <servlet-class>Servlet.TaxiPriceServlet</servlet-class>//这里的类名要写完整,是带包名的
    </servlet>
    
    <servlet-mapping>
        <servlet-name>TaxiPriceServlet</servlet-name>//和上面的servlet-name相同(对应)
        <url-pattern>/Servlet/TaxiPriceServlet</url-pattern>//映射地址
    </servlet-mapping>

    实现第一个servlet例子——向页面输出内容

    1. 在src中新建一个包。就叫servlet好了。
    2. 右键包-新建servlet,然后就会发现它自己生成了很多内容。
    3. 我们现在只需要覆写一下doGet方法
      因为一般来说自动生成的doPost都会调用doGet,像这样:
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            // TODO Auto-generated method stub
            doGet(request, response);
        }

    当然覆写doPost然后用doGet去调用它也是可以的,也可以都进行覆写(两种提交方式写不同的代码)
    4. 调用PrintWriter类(需要import java.io.PrintWriter)——实现向浏览器输出东西
    doGet和doPost方法要抛出异常:ServletException, IOException(import java.io.IOException;
    import javax.servlet.ServletException;)

    response.setContentType("text/html;charset=utf-8");//可以使下面的引号里支持html代码 并向页面输出中文 注意这句一定要写在printwriter前 不然输出的中文会是问号
    PrintWriter out = response.getWriter();
    
    out.println("");
    
    //当然也可以用system.out.println来向后台输出东西
    展开全文
  • package cn.itcast.servlet; import java.io.IOException; import java.io.PrintWriter; ...import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax
    package cn.itcast.servlet;
    
    import java.io.IOException;
    import java.io.PrintWriter;
    
    import javax.servlet.ServletContext;
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    /**
     * Servlet implementation class VisitTimes
     */
    
    //该注解的作用等价于 在web.xml中配置的该servlet的<servlet-mapping>元素中<url-pattern>的配置
    @WebServlet("/VisitTimes")
    public class VisitTimes extends HttpServlet {
    	private static final long serialVersionUID = 1L;
           
        /**
         * @see HttpServlet#HttpServlet()
         */
        public VisitTimes() {
            super();
            // TODO Auto-generated constructor stub
        }
    
    	/**
    	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
    	 */
    	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    		// TODO Auto-generated method stub
    		
    		ServletContext context = getServletContext();
    		
    		/*
    		 * 	Integer是java为int提供的封装类
    			Integer的默认值为null
    			即Integer可以区分出未赋值和值为0的区别,int则无法表达出未赋值的情况
    		*/
    		Integer times = (Integer)context.getAttribute("times");
    		
    		if(times == null) {
    			times = new Integer(1);
    		}else {
    			times = new Integer(times.intValue() + 1);
    		}
    		//设置HTML
    		response.setContentType("text/html;charset=utf-8");
    		PrintWriter out = response.getWriter();
    		out.println("<html><head><title>");
    		out.println("页面访问统计");
    		out.println("</title></head><body>");
    		out.println("当前网页被访问了");
    		out.println("<font color=red size=20px>"+times+"</font>次");
    		
    		//设置ServletContext的域属性,在这里就是设置times
    		context.setAttribute("times", times);
    	}
    
    	/**
    	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
    	 */
    	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    		// TODO Auto-generated method stub
    		this.doGet(request, response);
    	}
    
    }
    
    展开全文
  • 在<body></body>体中进行主要代码编写,实现创建表单功能,以下是index.jsp文件中的全部代码 *" pageEncoding="UTF-8"%> String path = request.getContextPath(); String basePath = request.getScheme()+":/...
  • 手工编写servlet步骤详解

    千次阅读 2015-08-30 10:28:40
    手工编写servlet小程序的方法与步骤
  • servlet开发步骤

    2021-04-26 16:28:45
    javaweb程序开发的基础,javaEE规范的一个组成部分。 Servlet作用: 接收客户端请求,完成操作 动态生成网页(页面数据可变) 将包含操作结果的动态网页响应给客户端 开发步骤: 1.搭建开发环境:将Servlet相关jar...
  • 其实Servlet本身在Tomcat中是“非常被动”的一个角色,处理的事情也很简单。网络请求与响应,不是他的主要职责,它其实更偏向于业务代码。所谓的Request和Response是Tomcat传给它,用来处理请求和响应的工具,但它...
  • 编写一个servlet,实现统计网站被访问次数的功能

    万次阅读 多人点赞 2018-10-13 18:18:07
    import javax.servlet.*; import javax.servlet.http.*; public class ShowTimesServlet extends HttpServlet { private static final long serialVersionUID = 1L; protected void doGet(Http...
  • 使用MyEclipse创建一个Servlet步骤

    千次阅读 2019-01-01 14:46:00
    场景:使用MyEclipse创建一个Servlet步骤 第一种方式使用向导创建 1.打开IDE, 选择 File-&gt;New-&gt;Web Project 2.填写项目名称,点击Finish 3.项目结构如图 4.使用Servlet Wizard创建,选择 File-&...
  • Idea编写一个Servlet

    千次阅读 2016-11-08 20:10:51
    首先用idea创建一个project,步骤如下:1.在idea中点击file-new-project,出现如下图所示: 注意勾选上web application,然后点击next2.给project命名为MyFirstServlet,点击finish:3.此时project创建成功,在src...
  • servlet的一般步骤

    2020-08-19 14:56:09
    1、编写一个类去继承 HttpServlet 类 2、根据业务需要重写 doGet 或 doPost 方法 3、到 web.xml 中的配置 Servlet 程序的访问地址 BaseServlet继承HttpServlet,利用反射机制 package web; import javax....
  • 手动创建一个servlet类的步骤

    千次阅读 2017-10-21 23:21:17
    手动创建一个servlet类的步骤:  A.创建一个java类,继承HttpServlet类  B.重写方法===>>>doPost/doGet  C.配置web.xml    key  com.hzyc.lesson01.servlets.MyServlet      key  /pag
  • 编写Servlet

    千次阅读 2019-04-12 19:41:01
    Servlet本质上就是一个java类 Tomcat与Servlet的关系 Servlet与普通的Java程序的区别 Servlet本质上就是一个Java类 ...Servlet类必须实现接口javax.servlet.Servlet...使用Servlet2.5编写Servlet步骤 写一...
  • Servlet入门开发步骤

    2019-07-19 22:48:34
    Servlet入门开发步骤 一、创建Javaweb工程 1.选择新建工程 ...1.创建一个类实现Servlet并且重写接口的方法 package com.sss.demo; import javax.servlet.*; import java.io.IOException; public class ...
  • 手工编写一个Servlet程序 1、继承httpServlet 2、重写doGet()或者doPost()方法 3、在web.xml中注册Servlet
  • Servlet开发步骤

    2019-09-25 19:57:59
      1)、新建一个java类,继承HttpServlet。   2)、重写Servlet生命周期的方法。一般重doGet(),doPost(),destroy()和service()方法。   3)、在生命周期中编写业务功能代码。   4)、修改web.xml配置servlet...
  • (2)为Servlet项目创建路径,把当前项目的classpath路径改成webapp/WEB-INF下的classes中,步骤如下:  点击确定之后,classes目录就会被隐藏起来,如下图: 2、拷贝Tomcat根目录中/l...
  • 编写一个servlet

    2018-03-22 22:29:06
    servlet: 动态的web开发技术,本质就是一个类,运行在服务器端的一个java...编写一个servlet步骤: 1.编写一个类 a.继承HttpServlet b.重写doGet或者doPost方法 2.编写配置文件(web-inf/web.xml) a.注册ser...
  • 1.2 在IDEA中使用Maven编写一个Servlet项目(IDEA+Maven)

    千次阅读 多人点赞 2020-03-07 16:36:22
    1.2 在IDEA中使用Maven编写一个HelloMaven程序
  • 创建一个Servlet项目流程(入门)

    千次阅读 2020-08-18 15:11:46
    、IDEA中新建JaveEE项目 项目起名,选择项目存放地址,点击finish创建成功 进入项目后,右键选择项目,选择add Framework Support 选择Web Application,点击OK 此时项目文件夹 在WEB-INF下创建两目录...
  • #java #web Servlet简介以及编写Servlet网站的步骤   目录 #java #web Servlet简介以及编写Servlet网站的步骤 1、概述  1.1 什么是servlet  1.2 Tomcat容器 2、编写Servlet  2.1 手工编写Servlet程序的...
  • 1.编写servlet步骤: 1.1 创建一个servlet类继承HttpServlet,在类中重写doGet方法和doPost方法。 1.2 在web.xml中配置MyServlet,作用:(让浏览器发出的请求知道到达哪个servlet,也就是让tomcat将封装好的...
  • 具有讽刺意味的是,在没有IDE或技术帮助的情况下,许多Java开发人员都不知道如何创建简单的servlet并进行部署,也不知道如何编写部署描述符。 如今,太多的Java开发人员与最新技术紧密结合,他们是否知道松散耦合...
  • Servlet如何编写以及写Servlet注意事项

    千次阅读 2017-09-09 16:05:05
    response.sendRedirect("/fail.jsp");//请求重定向 request.getRequestDispatcher("/success.jsp").forward(request, response);//请求转发 ...请求转发是发出次请求,地址栏的地址就是最初发出请求的地址
  • eclipse创建servlet项目详细步骤

    万次阅读 多人点赞 2018-07-25 22:37:30
    下面展示eclipse创建servlet项目的详细步骤: 需要使用到的环境,jdk 1.80 ,tomcat 8.0 /64位  首先将eclipse绑定jdk, ...创建一个servlet类: 此时程序会报错,是因为还没有导入相应的辅助包, ...
  • 在文章开始,先写一下get与post提交方式的区别: 例如,一张表单 ... 表单的提交方式一般有两种,分别是get方法和post...post:post提交的数据量比get大,并且安全性高,它是把数据封装在HTML HEADER内的,因此网上的
  • Maven创建一个Servlet项目(五)

    千次阅读 2019-10-24 17:33:03
    Maven 创建一个简单 WEB 项目 如Servlet项目 二.一 创建一个war 类型的项目 打开eclipse, 文件–>新建—>其他–>Maven 选择 Maven Project,跳过原型,进入到下一步: 注意,这个时候 packaging 选择的是 war ...
  • ~~ 特别注意:如若对以下内容所使用的工具等不甚了解,本人已在部分内容旁边做了注脚进行说明,可自行...1、新建一个普通Maven1项目 五、项目结构 六、详细代码解析 七、测试及结果 八、说明 Maven: ↩︎ ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 59,335
精华内容 23,734
关键字:

编写一个servlet的步骤