这段时间趁着教学课程进度,又重新看了一遍J2EE基础,重新学习了servlet开发,又有了新的理解。
myeclipse 这款IDE作为开发工具确实省了很大力气,但越来越发现一些代码内部的机制自己并不是很了解,随着编码量的增加越来越感觉到这些基础的东西是很重要的,对技术的追求也从一开始的了解最前沿的技术,到慢慢想了解技术的同时更多的了解他们的内在基础。
Servlet是一种独立于平台和协议的服务器端java应用程序 ,那也就意味着Servlet只能在服务器端运行,这就是为什么创建servlet只能出现在java WEB项目中。
public class LoginServlet extends HttpServlet {
@Override
protected void service(HttpServletRequest arg0, HttpServletResponse arg1)
throws ServletException, IOException {
System.out.println("继承httpServletrequest");
super.service(arg0, arg1);
}
@Override
public void service(ServletRequest arg0, ServletResponse arg1)
throws ServletException, IOException {
System.out.println("继承servletRequest");
super.service(arg0, arg1);
}
private static final long serialVersionUID = 1L;
public void destroy() {
System.out.println("destroy");
}
public LoginServlet() {
System.out.println("constructor");
}
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
System.out.println("doGet");
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
System.out.println("doPost");
}
public void init() throws ServletException {
System.out.println("init");
}
}
这个servlet包含构造函数,初始化函数,service(),doPost(),doGet(),以及destroy();函数,可以在其内部添加输出函数,观察其先后执行顺序
依次是 构造方法,init()方法,【javax.servlet.ServletResponse】中的service方法,然后是httpservlet中的service方法,最后是doGet方法
web.xml中
<servlet>
<description>questionBanks</description>
<display-name>banks</display-name>
<servlet-name>LoginServlet</servlet-name>
<servlet-class>servlets.LoginServlet</servlet-class>
<init-param>
<description>a</description>
<param-name>a</param-name>
<param-value>1</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>LoginServlet</servlet-name>
<url-pattern>/LoginServlet</url-pattern>
</servlet-mapping>
每一个<servlet>对应一个<servlet-mapping>前者指明<servlet-name>以及servlet类的位置,后者以<servlet-name>匹配前者的name从而找到对应的class
<url-pattern>这里是servlet能否映射到对应的servlet的关键,我们的html的action中如填写action=“LoginServlet”那么此处的url-mapping必须为/LoginServlet,它的意思是在当前工程目录下寻找对应的servlet,(http://host:port+WebAppName 之后的url部分应该与<url-parttern>一致)
init-param用于将类中的对应的变量进行初始化
它是<servlet>内的元素,它的作用是初始化对应的servlet内的一个参数的值,每个参数用一个init-param标记