Myeclipser下servlet的使用

来源:互联网 发布:网络优化方案 编辑:程序博客网 时间:2024/05/16 06:15

第一部分:

Myeclipser下servlet的使用

1. 将tomcat lib目录下的servlet-api.jar路径添加到环境变量classpath中;
2.在Myeclipse工程下单机右键:build-path:将驱动servlet-api.jar添加进来。
3.运行编译。
4.打开web.xml.查看url-pattrm的映射路径。然后在浏览器中输入测试即可。以下为我的实验步骤:大家点评一下。
 第一步:创建servlet



第二步:书写doGet方法



第三步:添加驱动:


第四步:查看映射:


第五步:输入路径测试



总结:servlet可以映射多个路径。其作用不是用于显示,而是用来作用于业务逻辑层。

 

 

第二部分:表单提交路径与servlet中web.xml配置路径问题

假设创建的servlet名称为:huoqu,所在的webprojiect 名称:MY_jsproad
在web.xml中所映射的路径为:/servlet/huoqu
则需要在表单的动作元素中 的路径为:“servlet/huoqu”或"/MY_jsproad/servlet/huoqu"
 第三部分:servlet生命周期

1.service方法尽量不要重写,否则,会造成doGet和doPost方法失效。
2.生命周期过程:init方法进行初始化,doGet和doPost进行成长,destroy进行消亡。
程序如下:

packageorg.lxh.servletdemo;

 

import java.io.IOException;

import java.io.PrintWriter;

 

importjavax.servlet.ServletException;

importjavax.servlet.http.HttpServlet;

importjavax.servlet.http.HttpServletRequest;

importjavax.servlet.http.HttpServletResponse;

 

public class LifeStyleextends HttpServlet {

public LifeStyle() {

//super();

}

public void destroy() {

//super.destroy(); 

System.out.println("--------3.销毁------>destroy()------");

}

public voiddoGet(HttpServletRequest request, HttpServletResponse response)

throws ServletException,IOException {

 

System.out.println("******2.servlet服务***-->service()***");

}

public voiddoPost(HttpServletRequest request, HttpServletResponse response)

throws ServletException,IOException {

  this.doGet(request,response);

}

public void init() throwsServletException {

System.out.println("***servlet初始化***-->init()*");

}

}

 

第四部分:servlet初始化配置信息

1.要使用ServletConfig对象首先要导入三个包:(1)import java.io.*;(2)importjavax.servlet.*(3).import javax.servlet.http.*
实例如下:
第一步:编写一个servlet:

packageorg.lxh.servletdemo;

 

import java.io.*;

importjavax.servlet.*;

importjavax.servlet.http.*;

 

 

public classinitparamservlet extends HttpServlet {

 

String initparam=null;//用于保存初始化参数

public voidinit(ServletConfig config)throws ServletException{

this.initparam=config.getInitParameter("ref");//是从web.xml中的<init-param>中获取的

}

public initparamservlet() {

super();

}

public void destroy() {

super.destroy(); 

}

public voiddoGet(HttpServletRequest request, HttpServletResponse response)

throws ServletException,IOException {

 

System.out.println("初始化为"+this.initparam);

}

public voiddoPost(HttpServletRequest request, HttpServletResponse response)

throws ServletException,IOException {

 

this.doGet(request,response);

}

}

 第二步:
配置web.xml信息:
 <?xml version="1.0" encoding="UTF-8"?>

<web-appversion="2.5" 

xmlns="http://java.sun.com/xml/ns/javaee" 

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 

xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 

http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

 <display-name></display-name>

  

  <servlet>

   <description>This is the description of my J2EEcomponent</description>

   <display-name>This is the display name of my J2EEcomponent</display-name>

   <servlet-name>initparamservlet</servlet-name>

   <servlet-class>org.lxh.servletdemo.initparamservlet</servlet-class>

   <init-param>

   <param-name>ref</param-name>

   <param-value>zhanggaokai</param-value>

    </init-param>

  </servlet>

 <servlet-mapping>

   <servlet-name>initparamservlet</servlet-name>

   <url-pattern>/servlet/initparamservlet</url-pattern>

 </servlet-mapping>

 

 <welcome-file-list>

   <welcome-file>index.jsp</welcome-file>

  </welcome-file-list>

</web-app>

第三步:编译:
输入:http://localhost:8080/工程/servlet/initparamservlet结束

注:如果servlet中覆写了两个init方法,则执行含有初始化参数的那个init方法. 

第五部分:servlet获取内置对象

如果出现错误:this is get method,请重新部署项目。
1.在servlet中,只提供了response和request两个对象。在获取session对象的时候,只能使用request获取。
 (1)。获取session对象,application对象。

packageorg.lxh.servletdemo;

 

import java.io.*;

importjavax.servlet.*;

importjavax.servlet.http.*;

public class sessionservletextends HttpServlet {

public void destroy() {

super.destroy();

}

public voiddoGet(HttpServletRequest request, HttpServletResponse response)

throws ServletException,IOException {

   HttpSessionses=request.getSession();//获取session对象

  System.out.println("session id:"+ses.getId());

  ses.setAttribute("username", "张高凯");

 System.out.println("username属性内容:"+ses.getAttribute("username"));

  ServletContextapp=super.getServletContext();//获取application对象必须利用父类的getServletContext方法

 System.out.println("真实路径:"+app.getRealPath("/"));

}

public voiddoPost(HttpServletRequest request, HttpServletResponse response)

throws ServletException,IOException {

 

this.doGet(request,response);

}

public void init() throwsServletException {

}

 

}

第六部分:servlet跳转

常见的跳转有两种:客户端跳转和服务器端跳转。(服务器端跳转占到开发的90%以上)
 (1):客户端跳转:
地址栏跳转之后改变,无法获取request属性范围,是在所有操作执行完成后才发生的跳转。语法为:response.sendRedirect();
(2).服务器端跳转:
地址栏不改变,可以获取request属性范围,属于无条件的跳转,语法为:<jsp:forward>
servlet完成的跳转是通过HttpServletResponse对象,使用它的sendRedirect方法完成跳转。 
如下:servlet:

packageorg.lxh.servletdemo;

 

import java.io.IOException;

import java.io.PrintWriter;

 

importjavax.servlet.ServletException;

importjavax.servlet.http.HttpServlet;

importjavax.servlet.http.HttpServletRequest;

importjavax.servlet.http.HttpServletResponse;

 

public classredirectservlet extends HttpServlet {

 

public voiddoGet(HttpServletRequest request, HttpServletResponse response)

throws ServletException,IOException {

 

 request.getSession().setAttribute("name","张高凯");//session属性

 request.setAttribute("info","MLDN");//request属性

 response.sendRedirect("get_info.jsp");

}

 

 

public voiddoPost(HttpServletRequest request, HttpServletResponse response)

throws ServletException,IOException {

 

this.doGet(request,response);

}

 

}

 get_info.jsp:

<body>

   <%

      request.setCharacterEncoding("gb2312");

    %>

   <h2>session属性:<%=session.getAttribute("name") %></h2>

   <h2>request属性:<%=request.getAttribute("info") %></h2>

  </body>
////
得出:属于客户端跳转。request获取的属性值是空的。而session对象获取的没有问题。 
为了完成servlet的服务器端的跳转,需要引用RequestDispatcher接口。
 public void doGet(HttpServletRequest request, HttpServletResponseresponse)

throws ServletException,IOException {

 

 request.getSession().setAttribute("name","张高凯");//session属性

 request.setAttribute("info","MLDN");//request属性

//response.sendRedirect("get_info.jsp");

 RequestDispatcherrd=request.getRequestDispatcher("get_info.jsp");//准备跳转

 rd.forward(request,response);//实现服务器跳转,可以接受request对象

}

第七部分:servlet过滤

在过滤器中,不再使用继承Httpservlet类,而是使用接口。完成过滤器开发,先要实现Filter接口。
过滤是自动完成的。

package org.lxh.filterdemo;

import javax.servlet.*;

importjavax.servlet.http.*;

import java.util.*;

import java.io.*;

 

public class SimpleFilterimplements Filter{

public voidinit(FilterConfig filterConfig)

throws ServletException{

StringinitParam=filterConfig.getInitParameter("ref");

System.out.println("**过滤器初始化"+initParam);

}

public voiddoFilter(ServletRequest request,ServletResponse response,FilterChain chain)

throwsIOException,ServletException{

System.out.println("**执行doFilter()方法!");

chain.doFilter(request,response);

}

public void destroy(){

System.out.println("**销毁!");

}

 

}

 

原创粉丝点击