读书人

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

发布时间: 2012-04-05 12:42:39 作者: rapoo

一个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在处理请求的时候,只会调用它的子类覆盖的服务方法,另外一个方法是自己定义的吧

读书人网 >Java Web开发

热点推荐