void FormTestServlet::doGet(HttpServletRequest& req, HttpServletResponse& resp) { ServletOutputStream& ostr = resp.getOutputStream(); ostr << "<html>\n" "<head>\n" "<title>POCO Form Server Sample</title>\n" "</head>\n" "<body>\n" "<h1>POCO Form Server Sample</h1>\n" "<h2>GET Form</h2>\n" "<form method=\"GET\" action=\"/ServletTest/FormTestServlet\">\n" "<input type=\"text\" name=\"text\" size=\"31\">\n" "<input type=\"submit\" value=\"GET\">\n" "</form>\n" "<h2>POST Form</h2>\n" "<form method=\"POST\" action=\"/ServletTest/FormTestServlet\">\n" "<input type=\"text\" name=\"text\" size=\"31\">\n" "<input type=\"submit\" value=\"POST\">\n" "</form>\n"; ostr << "<h2>Request</h2><p>\n"; ostr << "Method: " << req.getMethod() << "<br>\n"; ostr << "URI: " << req.getRequestURI() << "<br>\n"; std::vector<std::string> names = req.getParameterNames(); std::vector<std::string>::iterator it = names.begin(); for(; it != names.end(); ++it) ostr << *it << ":" << req.getParameter(*it); ostr << "</p>"; ostr << "</body>\n"; }
virtual bool doPost(HttpServletRequest& req, HttpServletResponse& res) { const char* sid = req.getSession().getAttribute("sid"); if (*sid == 0) req.getSession().setAttribute("sid", "xxxxxx"); sid = req.getSession().getAttribute("sid"); const char* cookie1 = req.getCookieValue("name1"); const char* cookie2 = req.getCookieValue("name2"); // 创建 HTTP 响应头 res.addCookie("name1", "value1"); res.addCookie("name2", "value2", ".test.com", "/", 3600 * 24); // res.setStatus(400); // 可以设置返回的状态码 // 两种方式都可以设置字符集 if (0) res.setContentType("text/xml; charset=gb2312"); else { res.setContentType("text/xml"); res.setCharacterEncoding("gb2312"); } const char* param1 = req.getParameter("name1"); const char* param2 = req.getParameter("name2"); // 创建 xml 格式的数据体 xml body; body.get_root().add_child("root", true) .add_child("sessions", true) .add_child("session", true) .add_attr("sid", sid ? sid : "null") .get_parent() .get_parent() .add_child("cookies", true) .add_child("cookie", true) .add_attr("name1", cookie1 ? cookie1 : "null") .get_parent() .add_child("cookie", true) .add_attr("name2", cookie2 ? cookie2 : "null") .get_parent() .get_parent() .add_child("params", true) .add_child("param", true) .add_attr("name1", param1 ? param1 : "null") .get_parent() .add_child("param", true) .add_attr("name2", param2 ? param2 : "null"); string buf; body.build_xml(buf); // 发送 http 响应头 if (res.sendHeader() == false) return false; // 发送 http 响应体 if (res.getOutputStream().write(buf) == -1) return false; return true; }
void RefreshTestServlet::doGet(HttpServletRequest& req, HttpServletResponse& resp) { Timestamp now; std::string dt(DateTimeFormatter::format(now, DateTimeFormat::SORTABLE_FORMAT)); Timespan ts(_started.elapsed()); resp.setHeader("Transfer-Encoding", "chunked"); resp.setContentType("text/html"); resp.getOutputStream() << "<html><head><title>Poco Servlet Engine Test</title>" << "<meta http-equiv=\"refresh\" content=\"1\"></head>" << "<body>" << "<p style=\"text-align: center; font-size: 48px;\">Current UTC time: " << dt << "</p>" << "<p style=\"text-align: center; font-size: 48px;\">Elapsed: " << std::setw(2) << std::setfill('0') << ts.hours() << ':' << std::setw(2) << std::setfill('0') << ts.minutes() << ':' << std::setw(2) << std::setfill('0') << ts.seconds() << "</p>" << "<p style=\"text-align: center; font-size: 48px;\">Hit Count: " << ++_hitCounter << "</p>" << "</body></html>"; }
void doGet(HttpServletRequest& req, HttpServletResponse &res) { res.setContentType("text/plain"); ostream& out = res.getOutputStream(); out << "pid: " << getpid() << endl << endl; string action = req.getParameter("action"); if(action == "list") { servlet::loader& loader = servlet::loader::instance(); out << "Loaded servlets(" << loader.pool.size() << "):" << endl; int cnt = 0; char timebuf[256]; for(std::map<std::string, servlet::loader::pool_entry>::const_iterator i = loader.pool.begin(); i != loader.pool.end(); ++i) { apr_rfc822_date(timebuf, i->second.atime); HttpServlet* servlet = i->second.servlet; out << ++cnt << ": " << (servlet ? typeid(*servlet).name() : "NULL") << "\t(Access: " << timebuf << ", Load: "; apr_rfc822_date(timebuf, i->second.ltime); out << timebuf << ")" << endl; } }else if(action == "load") { string path = req.getParameter("path"); servlet::loader::instance().load(path); out << "Loaded " << path << endl; }else { out << "Unknown action: " << action << endl; } }
bool doResponse(HttpServletRequest& req, HttpServletResponse& res) { // 获得浏览器传来的 cookie 值 const char* cookie1 = req.getCookieValue("name1"); const char* cookie2 = req.getCookieValue("name2"); // 获得 sid session 值 const char* sid = req.getSession().getAttribute("sid"); // 创建 xml 格式的数据体 xml body; body.get_root().add_child("root", true) .add_child("content_type", true) .add_attr("type", (int) req.getRequestType()) .get_parent() .add_child("sessions", true) .add_child("session", true) .add_attr("sid", sid ? sid : "null") .get_parent() .get_parent() .add_child("cookies", true) .add_child("cookie", true) .add_attr("name1", cookie1 ? cookie1 : "null") .get_parent() .add_child("cookie", true) .add_attr("name2", cookie2 ? cookie2 : "null") .get_parent() .get_parent() .add_child("params", true) .add_child("param", true) .add_attr("name1", param1_ ? param1_ : "null") .get_parent() .add_child("param", true) .add_attr("name2", param2_ ? param2_ : "null") .get_parent() .add_child("param", true) .add_attr("name3", param3_ ? param3_ : "null") .get_parent() .get_parent() .add_child("files", true) .add_child("file", true) .add_attr("filename", file1_ ? file1_ : "null") .get_parent() .add_child("file", true) .add_attr("filename", file2_ ? file2_ : "null") .get_parent() .add_child("file", true) .add_attr("filename", file3_ ? file3_ : "null"); string buf; body.build_xml(buf); // 发送 http 响应头 if (res.sendHeader() == false) return false; // 发送 http 响应体 if (res.getOutputStream().write(buf) == -1) return false; return true; }
void IncludeTestServlet::doGet(HttpServletRequest& req, HttpServletResponse& resp) { ServletOutputStream& os = resp.getOutputStream(); os << "<html><body>Include Servlet BEGIN >>"; HttpRequestDispatcher* prd = dynamic_cast<HttpRequestDispatcher*>(&req.getRequestDispatcher("/ServletTest/IncludedTestServlet")); poco_check_ptr(prd); prd->include(req, resp); os << "<< Include Servlet END</body></html>"; }
void TestServlet::doGet(HttpServletRequest& req, HttpServletResponse& resp) { std::ostringstream ss(""); ss << ++_counter << ") TestServlet:" << std::endl; std::cout << ss.str() << std::endl; log(ss.str()); log("TestServlet: This is a hello from TestServlet\n"); ServletOutputStream& out = resp.getOutputStream(); ss.str(""); ss << "<html><body>Servlet access count: " << _counter; out.println(ss.str()); if("" == _sessionId) { const HttpSession* pSession = req.getSession(); if(pSession) _sessionId = pSession->getId(); } out.println("<br> Servlet Name:" + getServletName()); out.println("<br> Session Id:" + _sessionId); out.println("<hr>"); std::vector<std::string> names = getInitParameterNames(); std::vector<std::string>::iterator it = names.begin(); out.println("<ul><b>Servlet Init Parameters:</b><br>"); for(; it != names.end(); ++it) { ss.str(""); ss << "<li><b>" << *it << "</b>: " << getInitParameter(*it) << "<br>"; out.println(ss.str()); } out.println("</ul>"); names = req.getParameterNames(); out.println("<ul><b>Request Parameters:</b><br>"); it = names.begin(); for(; it != names.end(); ++it) { ss.str(""); ss << "<li><b>" << *it << "</b>:" << req.getParameter(*it) << "<br>"; out.println(ss.str()); } out.println("</ul>"); out.println("</body></html>"); }
virtual bool doOther(HttpServletRequest&, HttpServletResponse& res, const char* method) { res.setStatus(400); res.setContentType("text/xml; charset=gb2312"); // 发送 http 响应头 if (res.sendHeader() == false) return false; // 发送 http 响应体 string buf; buf.format("<root error='unkown method: %s' />\r\n", method); (void) res.getOutputStream().write(buf); return false; }
void doGet(HttpServletRequest& request, HttpServletResponse &response) { response.setContentType("text/html"); ostream& out = response.getOutputStream(); out << "<html><body>" << endl; HttpSession* session = request.getSession(); if(session->hasAttribute("lastVisit")) { time_t lastVisit = session->getAttribute<time_t>("lastVisit"); out << "Witaj ponownie. Pierwszy raz odwiedziles nas: <br>" << ctime(&lastVisit) << endl; }else{ out << "Witaj po raz pierszy!" << endl; time_t lastVisit = time(NULL); session->setAttribute("lastVisit", lastVisit); } out << "</body></html>" << endl; }
void JSPTestServlet::doGet(HttpServletRequest& req, HttpServletResponse& resp) { std::ostringstream ss(""); ss << ++_counter << ") JSPTestServlet:" << std::endl; log(ss.str()); log("TestServlet: This is a log entry from JSPTestServlet\n"); ServletOutputStream& out = resp.getOutputStream(); ss.str(""); ss << "<html><body>Hello world from JSPTestServlet " << _counter; out.println(ss.str()); out << "<br> JSP functionality is in TO BE DONE status." << std::endl; out.print("</body></html>"); }
void DefaultTestServlet::doGet(HttpServletRequest& req, HttpServletResponse& resp) { std::ostringstream ss(""); ss << ++_counter << ") TestServlet:" << std::endl; log(ss.str()); log("TestServlet: This is a log entry from DefaultTestServlet\n"); ServletOutputStream& out = resp.getOutputStream(); ss.str(""); std::string sessionId = req.getSession()->getId(); ss << "<html><body>Hello world #" << _counter << "<br>from servlet [" << this->getServletName() << "]<br>Session ID: [" << sessionId << ']'; out.println(ss.str()); std::vector<std::string> names = getInitParameterNames(); std::vector<std::string>::iterator it = names.begin(); out.println("<ul><b>Servlet Init Parameters:</b><br>"); for(; it != names.end(); ++it) { ss.str(""); ss << "<li><b>" << *it << "</b>: " << getInitParameter(*it) << "<br>"; out.println(ss.str()); } out.println("</ul>"); names = req.getParameterNames(); out.println("<ul><b>Request Parameters:</b><br>"); it = names.begin(); for(; it != names.end(); ++it) { ss.str(""); ss << "<li><b>" << *it << "</b>:" << req.getParameter(*it) << "<br>"; out.println(ss.str()); } out.println("</ul>"); out.println("</body></html>"); }
void SingletonTestServlet::doGet(HttpServletRequest& req, HttpServletResponse& resp) { std::ostringstream ss(""); ss << ++_counter << ") TestServlet:" << std::endl; std::cout << ss.str() << std::endl; log(ss.str()); log("TestServlet: This is a hello from SingletonTestServlet\n"); ServletOutputStream& out = resp.getOutputStream(); ss.str(""); ss << "<html><body>Hello world " << _counter; out.println(ss.str()); out.println("<br> Another Hello World"); out.println("</body></html>"); }
void doGet(const HttpServletRequest& request, HttpServletResponse &response) { //dbg_stop(); response.setContentType("text/html"); ostream& out = response.getOutputStream(); out << "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\"" "\"http://www.w3.org/TR/html4/loose.dtd\">" << endl; out << "<html><head><title>test</title></head><body>" << endl; out << "<table border>" << endl; dbi_result result = dbi_conn_query(conn, "SELECT * FROM store_products"); while(dbi_result_next_row(result)) { out << "<tr>" << endl; long product_id = dbi_result_get_long(result, "product_id"); long category_id = dbi_result_get_long(result, "category_id"); string name = dbi_result_get_string(result, "product_name"); float price = dbi_result_get_float(result, "price"); string img = dbi_result_get_string(result, "image_url"); string desc = dbi_result_get_string(result, "description"); bool recomended = dbi_result_get_long(result, "is_recommended")==1; out << "<td>" << product_id << "</td>" <<endl; out << "<td>" << category_id << "</td>" <<endl; out << "<td>" << name << "</td>" <<endl; out << "<td>" << price << "</td>" <<endl; out << "<td>" << img << "</td>" <<endl; out << "<td>" << desc << "</td>" <<endl; out << "<td>" << recomended << "</td>" <<endl; out << "</tr>" << endl; } out << "</table>" << endl; out << "</body></html>" << endl; dbi_result_free(result); }
void doGet(HttpServletRequest& req, HttpServletResponse &res) { //dbg_stop(); res.setContentType("text/html"); ostream& out = res.getOutputStream(); out << "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\"" "\"http://www.w3.org/TR/html4/loose.dtd\">" << endl; out << "<html><head><title>test</title></head><body>" << endl; out << "PID: " << getpid() << "<hr>" << endl; auto_ptr< vector<string> > names = req.getHeaderNames(); out << "<div style='border: solid black'>" << endl; out << "Headers:<ul>" << endl; for(unsigned i=0; i< names->size();++i) { out << "<li>" << (*names)[i] << "<ul>"; auto_ptr< vector<string> > values = req.getHeaders((*names)[i]); for(unsigned j=0; j < values->size();++j) { out << "<li>" << (*values)[j] << "</li>"; } out << "</ul>\n"; } out << "</ul></div><br>\n"; out << "<div style='border: solid black'>" << endl; out << "Cookies:<ul>" << endl; auto_ptr< vector<Cookie> > cookies = req.getCookies(); for(unsigned i=0;i<cookies->size();++i) out << "<li><u>" << (*cookies)[i].getName() << "</u> " << (*cookies)[i].getValue() << "</li>\n" << endl; out << "</ul></div><br>\n"; out << "<div style='border: solid black'>" << endl; out << "Parameters:<ul>" << endl; names = req.getParameterNames(); for(unsigned i=0; i< names->size();++i) { out << "<li>" << (*names)[i] << "<ul>"; auto_ptr< vector<string> > values = req.getParameterValues((*names)[i]); for(unsigned j=0; j < values->size();++j) { out << "<li>" << (*values)[j] << "</li>\n"; // Cookie c(names[i], req.getParameter(names[i])); // res.addCookie(c); } out << "</ul>\n"; } out << "</ul></div><br>"; HttpSession* session = req.getSession(); if(session){ int cnt; if(session->isNew()){ cnt = 1; session->setAttribute("cnt",cnt); }else{ cnt = session->getAttribute<int>("cnt"); cnt++; session->setAttribute("cnt",cnt); } out << "Your counter: " << cnt << endl; out << "<br>ID: " << session->getId() << endl; }else out << "<h4>No session</h4>"; out << "</body></html>" << endl; }
void IncludedTestServlet::doGet(HttpServletRequest& req, HttpServletResponse& resp) { resp.getOutputStream() << "<br><b>Included Servlet</b><br>"; }
void ForwardedTestServlet::doGet(HttpServletRequest& req, HttpServletResponse& resp) { ServletOutputStream& os = resp.getOutputStream(); os << "<html><body>Forwarded Servlet.</body></html>"; }