req.getParameter | getParameterValue 一大特点是 返回null表示没有。
【web.xml】
<servlet>
<serlvlet-mapping>
应用程序级别共享初始化参数(servletContext.getInitParameter):<context-param> 配置数据库连接信息、电子邮件报警信息等等。
Servlet级别私有初始化参数(servletConfig.getInitParameter):<init-param>
【HelloServlet】
逻辑:req.getParameter可以拿到浏览器 =》请求参数,writer可以写回 =》 html页面
1 public class HelloServlet extends HttpServlet{ 2 private static final String DEFAULT_USER = "GUEST"; 3 @Override 4 protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { 5 String user = req.getParameter("user");//获取请求参数 6 if (user==null){ 7 user = DEFAULT_USER; 8 } 9 resp.setContentType("text/html");//设置内容类型 10 resp.setCharacterEncoding("UTF-8");//设置编码 meta 11 12 PrintWriter writer = resp.getWriter(); 13 writer.append("<!DOCTYPE html>\r\n") 14 .append("<html>\r\n") 15 .append("<head>\r\n") 16 .append("<title>Hello User App</title>\r\n") 17 .append("</head>\r\n") 18 .append("<body>\r\n") 19 .append("Hello,").append(user).append("!<br/><br/>\r\n") 20 .append("<form action=\"greeting\" method=\"POST\">\r\n") 21 .append("Enter your name:<br/>\r\n") 22 .append("<input type=\"text\" name=\"user\" />\r\n") 23 .append("<input type=\"submit\" value=\"提交\" />\r\n") 24 .append("</form>\r\n") 25 .append("</body>\r\n") 26 .append("</html>\r\n"); 27 } 28 29 @Override 30 protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { 31 doGet(req,resp); 32 } 33 34 // @Override 35 // public void init() throws ServletException { 36 // System.out.println(this.getServletName()+"init方法"); 37 // } 38 // 39 // @Override 40 // public void destroy() { 41 // System.out.println(this.getServletName()+"destory方法"); 42 // } 43 }
【多值Servlet】
逻辑:doGet展示一个表单,doPost处理提交的表单。
1 @WebServlet(name="multiValueServlet",urlPatterns = {"/selectFruits"}) 2 3 public class MultiValueServlet extends HttpServlet{ 4 @Override 5 protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { 6 resp.setContentType("text/html"); 7 resp.setCharacterEncoding("UTF-8"); 8 //展示一个表单 9 PrintWriter writer = resp.getWriter(); 10 writer.append("<!DOCTYPE html>\r\n") 11 .append("<html>\r\n") 12 .append("<head>\r\n") 13 .append("<title>挑水果</title>\r\n") 14 .append("</head>\r\n") 15 .append("<body>\r\n") 16 .append("<h2>欢迎光临,本店!</h2><br/><br/>\r\n") 17 .append("<form action=\"\" method=\"POST\">\r\n") 18 .append("<label for=\"apple\">苹果</label>\r\n") 19 .append("<input type=\"checkbox\" id=\"apple\" name=\"fruits\" value=\"newapple\" />\r\n") 20 .append("<label for=\"pineapple\">梨</label>\r\n") 21 .append("<input type=\"checkbox\" id=\"pineapple\" name=\"fruits\" value=\"newpineapple\" />\r\n") 22 .append("<label for=\"banana\">香蕉</label>\r\n") 23 .append("<input type=\"checkbox\" id=\"banana\" name=\"fruits\" value=\"newbannana\" />\r\n") 24 .append("<input type=\"submit\" value=\"提交\" />\r\n") 25 .append("</form>\r\n") 26 .append("</body>\r\n") 27 .append("</html>\r\n"); 28 29 } 30 31 @Override 32 protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { 33 String[] fruits = req.getParameterValues("fruits"); 34 resp.setContentType("text/html"); 35 resp.setCharacterEncoding("UTF-8"); 36 PrintWriter writer = resp.getWriter(); 37 if (fruits==null){ 38 writer.println("欢迎下次光临"); 39 // return; 40 }else { 41 writer.append("<!DOCTYPE html>\r\n") 42 .append("<html>\r\n") 43 .append("<head>\r\n") 44 .append("<meta charset=\"UTF-8\">\r\n") 45 .append("<title>欢迎随意挑选</title>\r\n") 46 .append("</head>\r\n") 47 .append("<body>\r\n"); 48 49 for (String fruit:fruits){ 50 writer.append(fruit); 51 System.out.println(fruit); 52 } 53 writer.append("</body>\r\n") 54 .append("</html>\r\n"); 55 } 56 57 } 58 }
【表单提交中文细节】
浏览器编码是ISO8859-1,可以用过滤器解决,暂时可以request直接设置编码UTF-8。