首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

一个servlet中有两个doGet方法,调用的是哪一个解决方法

2012-04-05 
一个servlet中有两个doGet方法,调用的是哪一个一个servlet中有两个doGet方法,调用的是哪一个package stat

一个servlet中有两个doGet方法,调用的是哪一个
一个servlet中有两个doGet方法,调用的是哪一个

 package stat;

import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;
import java.text.SimpleDateFormat;
import org.jfree.data.category.DefaultCategoryDataset;
import org.jfree.data.general.DefaultPieDataset;
import org.jfree.data.xy.XYDataset;

public class StatServlet extends HttpServlet {

  private static final String CONTENT_TYPE = "text/html;charset=UTF-8";

  //Initialize global variables
  public void init() throws ServletException {
  }

  /**
  * 判断是哪种操作
  * 1,forum_delete:删除讨论区
  * 2,forum_add:新增讨论区
  * 3,forum_update:更新讨论区
  * 4,forum_select:获取讨论区列表
  * 5,forum_view:获取某一个讨论区详细信息
  */
  public void doGet(HttpServletRequest request, HttpServletResponse response) throws
  ServletException, IOException {
  String type = request.getParameter("type");
  if (type == null) {
  return;
  }
  else if (type.equalsIgnoreCase("dayStat")) { //每日访问量统计
  dayStat(request, response);
  }
  else if (type.equalsIgnoreCase("monthStat")) { //每月访问量统计
  monthStat(request, response);
  }
  else if (type.equalsIgnoreCase("hourStat")) { //每个时间段访问量统计
  hourStat(request, response);
  }
  else if (type.equalsIgnoreCase("browserStat")) { //客户端浏览器统计
  browserStat(request, response);
  }
  else if (type.equalsIgnoreCase("osStat")) { //客户端操作系统统计
  osStat(request, response);
  }
  }
  /**
  * 处理日流量统计
  * 1,获得要统计多少天的流量
  * 2,调用StatHandle的getDayStat方法,获取数据集
  * 3,将数据集保存在session中
  * 4,如果出现异常,将异常信息保存到request对象中
  * 5,如果操作成功,返回line.jsp页面
  * 6,否则返回error.jsp页面
  */
  private void dayStat(HttpServletRequest request,
  HttpServletResponse response) {
  boolean isSuccess = false;
  //操作成功失败标记
  try {
  isSuccess = true;
  int count = Integer.parseInt(request.getParameter("dayCounts"));
  //从请求头中获取dayCounts,该参数表示要统计多少天的流量
  XYDataset data = StatHandle.getDayStat(count);
  //调用StatHandle的getDayStat方法从数据库中获取每天的访问次数并保存在数据集中
  request.getSession().setAttribute("dataset", data);
  //将数据集保存在session对象中,便于外部程序使用
  }
  catch (Exception es) {
  es.printStackTrace();
  isSuccess = false;
  request.setAttribute("error", es.getMessage());
  //如果出现异常,将错误信息保存在request对象的error变量中
  }
  String forward = null;
  if (isSuccess) {
  request.removeAttribute("error");
  forward = "day.jsp";
  //如果操作成功,流程转至line.jsp页面
  }
  else {
  forward = "error.jsp";
  //如果操作失败,流程转至error.jsp页面
  }
  forward(request, response, forward);
  //转发请求
  }

  private void monthStat(HttpServletRequest request,
  HttpServletResponse response) {
  boolean isSuccess = false;


  try {
  isSuccess = true;
  int count = Integer.parseInt(request.getParameter("monthCounts"));
  DefaultCategoryDataset data = StatHandle.getMonthStat(count);
  request.getSession().setAttribute("dataset", data);
  }
  catch (Exception es) {
  es.printStackTrace();
  isSuccess = false;
  request.setAttribute("error", es.getMessage());
  }
  String forward = null;
  if (isSuccess) {
  request.removeAttribute("error");
  forward = "month.jsp";
  }
  else {
  forward = "error.jsp";
  }
  forward(request, response, forward);
  }

  private void hourStat(HttpServletRequest request,
  HttpServletResponse response) {
  boolean isSuccess = false;
  try {
  isSuccess = true;
  int dayCounts = Integer.parseInt(request.getParameter("dayCounts"));
  int count = Integer.parseInt(request.getParameter("count"));
  DefaultCategoryDataset data = StatHandle.getHourStat(dayCounts,
  count);
  request.getSession().setAttribute("dataset", data);
  }
  catch (Exception es) {
  es.printStackTrace();
  isSuccess = false;
  request.setAttribute("error", es.getMessage());
  }
  String forward = null;
  if (isSuccess) {
  request.removeAttribute("error");
  forward = "hour.jsp";
  }
  else {
  forward = "error.jsp";
  }
  forward(request, response, forward);
  }

  private void osStat(HttpServletRequest request,
  HttpServletResponse response) {
  boolean isSuccess = false;
  try {
  isSuccess = true;
  DefaultPieDataset data = StatHandle.getosStat();
  request.getSession().setAttribute("dataset", data);
  }
  catch (Exception es) {
  es.printStackTrace();
  isSuccess = false;
  request.setAttribute("error", es.getMessage());
  }
  String forward = null;
  if (isSuccess) {
  request.removeAttribute("error");
  forward = "os.jsp";
  }
  else {
  forward = "error.jsp";
  }
  forward(request, response, forward);
  }

  private void browserStat(HttpServletRequest request,
  HttpServletResponse response) {
  boolean isSuccess = false;
  try {
  isSuccess = true;
  DefaultPieDataset data = StatHandle.getbrowserStat();
  request.getSession().setAttribute("dataset", data);
  }
  catch (Exception es) {
  es.printStackTrace();
  isSuccess = false;
  request.setAttribute("error", es.getMessage());
  }
  String forward = null;
  if (isSuccess) {
  request.removeAttribute("error");


  forward = "browser.jsp";
  }
  else {
  forward = "error.jsp";
  }
  forward(request, response, forward);
  }

  /**
  * 将控制流程转到url所表示的页面
  * @param url String 要转到的页面
  */
  private void forward(HttpServletRequest request,
  HttpServletResponse response, String url) {
  try {
  request.getRequestDispatcher(response.encodeURL(url)).
  forward(request, response);
  }
  catch (Exception es) {
  es.printStackTrace();
  }
  }

// 127.0.0.1
// /stat/statservlet
// HTTP/1.1
// 127.0.0.1
// 127.0.0.1
// /statservlet
// 127.0.0.1
// null
// null
// /stat
// type=dayStat&dayCounts=5
// http://127.0.0.1/stat/statservlet
// /stat/statservlet

  public static void doGet(HttpServletRequest request) {
  System.out.println(request.getMethod()); // GET
  System.out.println(request.getRequestURI()); // /stat/statservlet
  System.out.println(request.getProtocol()); // HTTP/1.1
  System.out.println(request.getRemoteAddr()); // 127.0.0.1
  System.out.println(request.getRemoteHost()); // 127.0.0.1

  System.out.println(request.getServletPath()); // 127.0.0.1
  System.out.println(request.getServerName()); // 127.0.0.1
  System.out.println(request.getServerPort()); // 127.0.0.1

  System.out.println(request.getPathInfo()); // 127.0.0.1
  System.out.println(request.getPathTranslated()); // 127.0.0.1
  System.out.println(request.getContextPath()); // 127.0.0.1

  System.out.println(request.getQueryString()); // 127.0.0.1
  System.out.println(request.getRequestURL().toString()); // 127.0.0.1
  System.out.println(request.getRequestURI()); // 127.0.0.1

  Enumeration headerNames = request.getHeaderNames();

  while (headerNames.hasMoreElements()) {
  String headerName = (String) headerNames.nextElement();
  System.out.println(headerName + "-----" +
  request.getHeader(headerName));
  }

  String Agent = request.getHeader("User-Agent");
  StringTokenizer st = new StringTokenizer(Agent, ";");
  st.nextToken();
  //得到用户的浏览器名
  String userbrowser = st.nextToken();
  //得到用户的操作系统名
  String useros = st.nextToken();
  }

// accept-----*/*
// accept-language-----zh-cn
// accept-encoding-----gzip, deflate
// user-agent-----Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)
// host-----127.0.0.1
// connection-----Keep-Alive

}


[解决办法]
public void doGet(HttpServletRequest request, HttpServletResponse response) throws
ServletException, IOException {


这个
[解决办法]
你试试 不就得了 两个里写上不一样的内容
你这确实是两个doGet
但是第二个方法 应该不附合对HttpServlet中doGet方法的重写吧,那按规则也就是要调用上边那个了
[解决办法]
调用Servlet定义的那一个,重载的那个不会被自动调用
[解决办法]
public void doGet(HttpServletRequest request, HttpServletResponse response) throws


ServletException, IOException {

调用的是这个.因为Servlet的服务方法的调用是通过Servlet的基类进行调用的.HttpServlet在处理请求的时候,只会调用它的子类覆盖的服务方法(doPost/doGet)。
[解决办法]
应该是第一个。
[解决办法]
是public void doGet(HttpServletRequest request, HttpServletResponse response),参数为request和response的。第二个应该是其他方法调的
[解决办法]
参数为HttpServletRequest request, HttpServletResponse response的这个.
[解决办法]
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
this.doPost(req, resp);
}

protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
//实现代码。

//可以这样写啊,不管调用哪一个都能调用的到
[解决办法]
根据form 的method属性来判断 调用哪个 doget dopost

form有两种提交方式 get、post与servlet对应
[解决办法]
public void doGet(HttpServletRequest request, HttpServletResponse response)是继承基类的,HttpServlet在处理请求的时候,只会调用它的子类覆盖的服务方法,另外一个方法是自己定义的吧

热点排行