写给还是小白的我们,一起加油~
首先来简单介绍一下Servlet,它是和平台无关的服务器端组件,运行在Servlet容器中。Servlet容器负责Servlet和客户的通信以及调用Servlet的方法,Servlet和客户的通信采用“请求/响应的模式”。
简单来说,就是Servlet可以通过浏览器直接访问Java类。
Servlet可完成以下功能:
Servlet容器响应客户请求的过程:
再来讲述一下Servlet的生命周期,以下方法都是由Servlet容器负责调用:
Servlet容器响应客户请求的过程:
然后就是在ecplise中的配置了:
web.xml:
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
version="3.0">
<!-- 配置当前WEB应用的初始化参数 -->
<context-param>
<param-name>driver</param-name>
<param-value>com.mysql.jdbc.Driver</param-value>
</context-param>
<context-param>
<param-name>jdbcUrl</param-name>
<param-value>jdbc:mysql://qwikki</param-value>
</context-param>
<!-- 配置和映射Servlet -->
<servlet>
<servlet-name>helloServlet</servlet-name><!--servlet名字-->
<servlet-class>per.huang.pra.HelloServlet</servlet-class><!--servlet对应的Java代码位置-->
<!-- 配置Servlet的初始化参数 -->
<init-param>
<param-name>user</param-name>
<!-- 参数值 -->
<param-value>root</param-value>
</init-param>
<load-on-startup>5</load-on-startup><!--servlet执行顺序-->
</servlet>
<servlet-mapping>
<servlet-name>helloServlet</servlet-name><!--servlet名字-->
<url-pattern>/hello</url-pattern><!--地址栏访问路径-->
</servlet-mapping>
</web-app>
当servlet配置了初始化参数之后,web容器在创建servlet实例对象时,会自动将这些初始化参数封装到ServletConfig对象中,并在调用servlet的init()方法时,将ServletConfig对象传递给Servlet。所以我们可以通过Servlet对象得到当前servlet的初始化参数信息。
附上第一个Servlet程序,方法的作用已在注释里说明:
package per.huang.pra;
import java.io.IOException;
import java.io.InputStream;
import java.util.Enumeration;
import javax.servlet.Servlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
public class HelloServlet implements Servlet{
@Override
public void destroy() {
// TODO Auto-generated method stub
System.out.println("destroy");
}
@Override
public ServletConfig getServletConfig() {
// TODO Auto-generated method stub
System.out.println("getServletConfig");
return null;
}
@Override
public String getServletInfo() {
// TODO Auto-generated method stub
System.out.println("getServletInfo");
return null;
}
@Override
public void init(ServletConfig servletConfig) throws ServletException {
// TODO Auto-generated method stub
System.out.println("init");
//获取Servlet的初始化参数和值
String user=servletConfig.getInitParameter("user");
System.out.println("user: "+user);
//获取ServletContext对象
ServletContext servletContext=servletConfig.getServletContext();
String driver=servletContext.getInitParameter("driver");
System.out.println("driver: "+driver);
Enumeration<String> names2=servletContext.getInitParameterNames();
while(names2.hasMoreElements()){
String name=names2.nextElement();
System.out.println("--> "+name);
}
//获取文件的绝对路径(在服务器上的路径,而不是这个文件的绝对物理路径)
String realPath=servletContext.getRealPath("/webContent里面的文件名");
System.out.println(realPath);
//获取当前WEB应用的名称
String contextPath=servletContext.getContextPath();
System.out.println("contextPath:"+contextPath);
//获取当前WEB应用的某一个文件对应的输入流
try {
ClassLoader classLoader=getClass().getClassLoader();
InputStream is=classLoader.getResourceAsStream("jdbc.properties");
System.out.println("1."+is);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
InputStream is2=servletContext.getResourceAsStream("/WEB-INF/classes/jdbc.properties");
System.out.println("2."+is2);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
@Override
public void service(ServletRequest arg0, ServletResponse arg1)
throws ServletException, IOException {
// TODO Auto-generated method stub
System.out.println("service");
}
public HelloServlet(){
System.out.println("constructor");
}
}
Servlet还有很多东西需要学习,今天就先讲一部分,未完待续~
借用一句话,没有天生的高手,也没有永远的菜鸟!小白们一起加油~
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。