A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© ↙五线谱╲ 中级黑马   /  2013-9-26 11:00  /  1673 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文


一、开发Servlet


public class TestServlet extends HttpServlet {

  public TestServlet() {
    super();
  }

  /**
    * Servlet销毁方法. <br>
    */

  public void destroy() {
    super.destroy(); // Just puts "destroy" string in log
    // Put your code here
  }

  public void doDelete(HttpServletRequest request,
      HttpServletResponse response) throws ServletException, IOException {

  }

  public void doGet(HttpServletRequest request, HttpServletResponse response)
      throws ServletException, IOException {

    response.setContentType("text/html");
    request.setCharacterEncoding("GB18030");
    PrintWriter out = response.getWriter();
    out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
    out.println("<HTML>");
    out.println("    <HEAD><TITLE>A Servlet</TITLE></HEAD>");
    out.println("    <BODY>");
    out.print("        This is ");
    out.print(this.getClass());     
    out.println(", using the GET method");
     
    out.println("<br>");
    String x = request.getParameter("x");
    String y = request.getParameter("y");
    out.println("x="+x);
    out.println("<br>");
    out.println("y="+y);
    out.println("<br>");

     
    out.println("    </BODY>");
    out.println("</HTML>");
    out.flush();
    out.close();
  }

  public void doPost(HttpServletRequest request, HttpServletResponse response)
      throws ServletException, IOException {

    response.setContentType("text/html");
    PrintWriter out = response.getWriter();
    out
        .println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
    out.println("<HTML>");
    out.println("    <HEAD><TITLE>A Servlet</TITLE></HEAD>");
    out.println("    <BODY>");
    out.print("        This is ");
    out.print(this.getClass());
    out.println(", using the POST method");      
     
    out.println("<br>");
    String x = request.getParameter("x");
    String y = request.getParameter("y");
    out.println("x="+x);
    out.println("<br>");
    out.println("y="+y);
    out.println("<br>");

     
    out.println("    </BODY>");
    out.println("</HTML>");
    out.flush();
    out.close();
  }


  public void doPut(HttpServletRequest request, HttpServletResponse response)
      throws ServletException, IOException {

  }

  public String getServletInfo() {
    return "This is my default servlet created by Eclipse";
  }

  
  public void init() throws ServletException {
   
  }

}



2、配置Servlet
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4"   
  xmlns="http://java.sun.com/xml/ns/j2ee"   
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"   
  xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee   
  http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
    <servlet>
        <description>This is the description of my J2EE component</description>
        <display-name>This is the display name of my J2EE component</display-name>
        <servlet-name>TestServlet</servlet-name>
        <servlet-class>test.TestServlet</servlet-class>
    </servlet>


    <servlet-mapping>
        <servlet-name>TestServlet</servlet-name>
        <url-pattern>/testServlet</url-pattern>
    </servlet-mapping>
     
    <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>
</web-app>



3、访问Servlet
部署web应用并启动Servlet容器Tomcat。然后分别用两种方式来访问Servlet

a、通过URL直接访问
http://localhost:8080/HelloApp/testServlet?x=11222&y=13123421
注意:第一参数x之前要用"?"号,其余参数之间用"&"符号。
显示效果:


b、通过一个JSP来访问
<%@ page language="java" import="java.util.*" pageEncoding="GB18030"%>
<%
String path = request.getContextPath();
%>
<html>
    <body>
        test post Method<br>
        <form action="<%=path %>/testServlet" method="post">
          x:<input type="text" name="x"><br>
          y:<input type="text" name="y"><br>
          <input type="submit" value="submit">
          <input type="reset" value="reset">
        </form>
         
    </body>
</html>







二、简单总结

HTTP请求有很多种,最常用的就是get和post。get请求的参数提交后会显示在url后面,而post请求不会。

get请求适合少量数据,post请求没有限制。
get请求参数会显示在rul后面,不安全。可以直接请求。
从安全角度考虑,应该使用post请求。

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1 赞一个!

查看全部评分

3 个回复

倒序浏览

回帖奖励 +5

感谢楼主分享,我是来拿金币的{:soso_e102:}
回复 使用道具 举报
servlet的功能不可知这些,servlet的功能主要是完成数据的接收和处理,然后再将数据传回jsp页面,你的这种只是完成了页面的输出。其实你的这种完全可以用jsp实现(毕竟jsp其实就是一个特殊的servlet,只是Tomcat会将你写的jsp文件组装成一个servlet进行执行),好了,我把自己以前写的一个servlet给你,让你看看,servlet的功能。
  1. package com.drp.web.fiscalcalculateperiod;

  2. import java.io.IOException;
  3. import java.text.ParseException;
  4. import java.text.SimpleDateFormat;

  5. import javax.servlet.ServletException;
  6. import javax.servlet.http.HttpServletRequest;
  7. import javax.servlet.http.HttpServletResponse;

  8. import com.drp.model.FiscalCalculatePeriod;
  9. import com.drp.model.PageModel;
  10. import com.drp.web.AbstractServlet;

  11. @SuppressWarnings("serial")
  12. public class FiscalCalculatePeriodServlet extends AbstractServlet {

  13.         public void doGet(HttpServletRequest request, HttpServletResponse response)
  14.                         throws ServletException, IOException {
  15.                 doPost(request,response);
  16.         }

  17.         public void doPost(HttpServletRequest request, HttpServletResponse response)
  18.                         throws ServletException, IOException {
  19.                 request.setCharacterEncoding("GB18030");
  20.                
  21.                 String command = request.getParameter("command");
  22.                 if("getFiscalCalculatePeriodList".equals(command)){
  23.                         getFiscalCalculatePeriodList(request,response);
  24.                 }else if("gotoAddFiscalCalculatePeriod".equals(command)){
  25.                         gotoAddFiscalCalculatePeriod(request,response);
  26.                 }else if("addFiscalCalculatePeriod".equals(command)){
  27.                         addFiscalCalculatePeriod(request,response);
  28.                 }else if("gotoModifyFiscalCalculatePeriod".equals(command)){
  29.                         gotoModifyFiscalCalculatePeriod(request,response);
  30.                 }else if("modifyFiscalCalculatePeriod".equals(command)){
  31.                         modifyFiscalCalculaterPeriod(request,response);
  32.                 }
  33.         }

  34.         private void modifyFiscalCalculaterPeriod(HttpServletRequest request,
  35.                         HttpServletResponse response) throws ServletException, IOException {
  36.                 FiscalCalculatePeriod fiscalCalculatePeriod = new FiscalCalculatePeriod();
  37.                 fiscalCalculatePeriod.setId(Integer.parseInt(request.getParameter("id")));
  38.                 fiscalCalculatePeriod.setCalculateYear(Integer.parseInt(request.getParameter("fiscalYear")));
  39.                 fiscalCalculatePeriod.setCalculateMonth(Integer.parseInt(request.getParameter("fiscalPeriod")));
  40.                 try {
  41.                         fiscalCalculatePeriod.setBeginDate(new SimpleDateFormat("yyyy-MM-dd").parse(request.getParameter("beginDate")));
  42.                         fiscalCalculatePeriod.setEndDate(new SimpleDateFormat("yyyy-MM-dd").parse(request.getParameter("endDate")));
  43.                 } catch (ParseException e) {
  44.                         e.printStackTrace();
  45.                 }
  46.                 fiscalCalculatePeriod.setPeriodStatus(request.getParameter("periodSts")== null?"N":"Y");
  47.                 FiscalCalculatePeriod fiscalCalculatePeriodResult = fiscalCalculatePeriodManager.modifyFiscalCalculatePeriod(fiscalCalculatePeriod);
  48.                 if(fiscalCalculatePeriodResult != null){
  49.                         request.setAttribute("fiscalCalculatePeriod", fiscalCalculatePeriodResult);
  50.                         request.getRequestDispatcher("../basedata/fiscal_year_period_modify.jsp?modifyFiscalCalculatePeriod=success").forward(request, response);
  51.                 }
  52.                
  53.         }

  54.         private void gotoModifyFiscalCalculatePeriod(HttpServletRequest request,
  55.                         HttpServletResponse response) throws ServletException, IOException {
  56.                 String strId = request.getParameter("id");
  57.                 if(strId != null && !strId.equals("")){
  58.                         int id = Integer.parseInt(strId);
  59.                         FiscalCalculatePeriod fiscalCalculatePeriod = fiscalCalculatePeriodManager.loadFiscalCalculatePeriodById(id);
  60.                         if(fiscalCalculatePeriod != null){
  61.                                 request.setAttribute("fiscalCalculatePeriod", fiscalCalculatePeriod);
  62.                                 request.getRequestDispatcher("../basedata/fiscal_year_period_modify.jsp").forward(request, response);       
  63.                         }
  64.                 }
  65.         }

  66.         private void getFiscalCalculatePeriodList(HttpServletRequest request,
  67.                         HttpServletResponse response) throws ServletException, IOException {
  68.                 int pageNo = 1;
  69.                 int pageSize = Integer.parseInt(this.getServletContext().getInitParameter("pageSize"));
  70.                 String strPageNo = request.getParameter("pageNo");
  71.                 if(strPageNo != null && !strPageNo.trim().equals("")){
  72.                         pageNo = Integer.parseInt(strPageNo);
  73.                 }
  74.                 PageModel<FiscalCalculatePeriod> pageModel = fiscalCalculatePeriodManager.getFiscalCalculatePeriodList(pageNo, pageSize);
  75.                 request.setAttribute("fiscalCalculatePeriodListPageModel", pageModel);
  76.                 request.getRequestDispatcher("../basedata/fiscal_year_period_maint.jsp").forward(request, response);       
  77.         }

  78.         private void addFiscalCalculatePeriod(HttpServletRequest request,
  79.                         HttpServletResponse response) throws ServletException, IOException {       
  80.                 FiscalCalculatePeriod fiscalCalculatePeriod = new FiscalCalculatePeriod();
  81.                 fiscalCalculatePeriod.setCalculateYear(Integer.parseInt(request.getParameter("fiscalYear")));
  82.                 fiscalCalculatePeriod.setCalculateMonth(Integer.parseInt(request.getParameter("fiscalPeriod")));
  83.                 try {
  84.                         fiscalCalculatePeriod.setBeginDate(new SimpleDateFormat("yyyy-MM-dd").parse(request.getParameter("beginDate")));
  85.                         fiscalCalculatePeriod.setEndDate(new SimpleDateFormat("yyyy-MM-dd").parse(request.getParameter("endDate")));
  86.                 } catch (ParseException e) {
  87.                         e.printStackTrace();
  88.                 }
  89.                 fiscalCalculatePeriod.setPeriodStatus(request.getParameter("periodSts")== null?"N":"Y");
  90.                 FiscalCalculatePeriod fiscalCalculatePeriodResult = fiscalCalculatePeriodManager.addFiscalCalculatePeriod(fiscalCalculatePeriod);
  91.                 if(fiscalCalculatePeriodResult != null){
  92.                         request.setAttribute("fiscalCalculatePeriod", fiscalCalculatePeriodResult);
  93.                         request.getRequestDispatcher("../basedata/fiscal_year_period_add.jsp?addfiscalCalculatePeriod=success").forward(request, response);
  94.                 }
  95.         }

  96.         private void gotoAddFiscalCalculatePeriod(HttpServletRequest request,
  97.                         HttpServletResponse response) throws ServletException, IOException {
  98.                 request.getRequestDispatcher("../basedata/fiscal_year_period_add.jsp").forward(request, response);
  99.         }

  100. }
复制代码
回复 使用道具 举报
不错,学习了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马