服务器

概念:一台强大的计算机,程序代码的执行环境,所有编写的java代码都会上传到服务器中执行

Servlet基础01_实例化

服务器软件有许多,使用tomcat软件(绿色免费,java代码编写,apache组织)

注意:tomcat中自带javaEE环境,如果别的软件没有带javaEE环境就要自己配置

在apache官网下载,版本7.0以上,环境配置:

环境变量中设置变量:%JAVA_HOME% ,值为安装java的路径,然后放在系统路径里就行

idea导入tomcat

看图操作:

①在run选项中,点击修改配置

Servlet基础01_实例化_02

②点击+号,增加新的配置

Servlet基础01_tomcat_03

③找到并添加tomcat服务器,找不见最下边会有一个更多选项

Servlet基础01_ide_04

④设置路径,取到目录就行

Servlet基础01_java_05

⑤点击ok就行

Servlet基础01_实例化_06

创建javaEE工程

创建一个新的模块,点击javaEE模块,勾选Web

Servlet基础01_ide_07

Servlet基础01_ide_08

编写servlet程序

可以手动编写,可以idea自动生成

手动编写

手动编写的类名最后加servlet最好,如:HelloWorldServlet

这个类继承HttpServlet类

HttpServlet类,只在javaEE环境中有,不在jdk中

public class HelloWorldServlet extends HttpServlet{
   
}

重写HttpServlet类中,doGet()和doPost()方法

doGet()方法处理页面发送到服务器的请求

doPost()方法处理表单中的请求

public class HelloWorldServlet extends HttpServlet{
    @Override
   protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
       super.doGet(req, resp);
  }

   @Override
   protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
       super.doPost(req, resp);
  }
}

配置编写好的servlet类,通过web.xml文件或者注释

通过web.xml文件:

 <servlet>
       <servlet-name>helloworld</servlet-name>
       <servlet-class>cn.powernode.servlet.HelloWorldServlet</servlet-class>
   </servlet>
   <servlet-mapping>
       <servlet-name>helloworld</servlet-name>
       <url-pattern>/hello</url-pattern>
   </servlet-mapping>

URL:统一资源定位符(绝对路径)

URI:统一资源符(相对路径)

对web工程的servlet进行调整:

浏览器的默认端口是80,服务器的默认端口是8080

关于servlet类的一些特性

1.servlet类是单例模式的类

2.servlet类实例化的时间,默认情况下一个servlet是在第一次访问时会实例化,后续访问的时间和第一次访问的时间会有差距,因此要设置在服务器启动时就实例化类:在xml文件中添加标签<load-on-startup> </load-on-startup>

3.一个servlet可以对象多个servlet-mapping

Servlet类

Servlet接口

servlet类的生命周期

初始阶段

void init(ServletConfig config)

默认情况下一个servlet是在第一次访问时会实例化,可以使服务器开启时就实例化

这个方法会自动执行,作为一个标记使用

处理请求阶段

void service(ServletRequest req, ServletResponse res)

浏览器发出一个请求,Servlet类只有service方法会自动执行,doGet()/doPost不会执行,不重写service()方法,系统默认的service()会调用doGet()/doPost方法

注意:如果没有提到本质(Servlet类生命周期),我们可以说服务器接受到请求,doGet()和doPost()会自动执行

销毁对象:

void destroy()

服务器关闭时才会调用这个销毁对象

ServletConfig接口

初始化参数:servlet类实例化时直接拥有的一些键值对数据,通过配置文件实现

String getInitParameter(java.lang.String name)

返回的是servlet类里的属性的键对应的值,输入键,返回值

Enumeration getInitParameterNames()

返回servlet类里的所有键,以枚举的形式

getServletContext() 返回一个servlet正在内中执行的 ServletContext 的参考

GenericServlet类

重写了Servlet接口和ServletConfig接口的方法,供子类调用

HttpServlet类

这个类的一些方法只需要记住名字和含义,默认内容不需要记住,因为都是需要程序员重写的

注解方式配置servlet类

注解名称:@WebServlet

@WebServlet(name="",urlPatterns="/",loadOnStartup=1,initParams="")

name是Servlet类的标记一个名称,urlPatterns是一个请求名称,loadOnStartup初始化时间

Servlet基础01_服务器_09

最简单的配置

@WebServlet("/") ,只有一个请求名称