Myeclipser下servlet的使用

  • Post author:
  • Post category:其他


第一部分:

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(“**销毁!”);

}

}



版权声明:本文为woqiang68原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。