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。

Servlet 快速开始 表单中文字段的更多相关文章

  1. PHP 表单 - 3(PHP 表单 - 必需字段)

    PHP 表单 - 必需字段 本章节我们将介绍如何设置表单必需字段及错误信息. PHP - 必需字段 在上一章节我们已经介绍了表的验证规则,我们可以看到"名字", "E-m ...

  2. [Swift通天遁地]二、表格表单-(8)快速实现表单的输入验证

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...

  3. RookeyFrame Bug 表单管理 -> 查看表单 ->编辑字段页面 JS报错

    表单管理 -> 查看表单 ->编辑字段页面 小bug onchange里面直接就是方法,修改:去掉外面的function(){},直接把方法体写在onchange里面就可以了. 后台方法: ...

  4. ajax和servlet交互,表单日历插件,表单验证,form.js

    我的index.jsp <body> <a>点我获取数据</a> <table border=1px> <tr> <td>ID& ...

  5. JQuery插件使用之Validation 快速完成表单验证的几种方式

    JQuery的Validation插件可以到http://plugins.jquery.com/上去下载.今天来分享一下,关于这个插件的使用. 简易使用 这第一种方式可谓是傻瓜式的使用,我们只需要按照 ...

  6. Spring MVC 3 表单中文提交post请求和get请求乱码问题的解决方法

    在spring mvc 3.0 框架中,通过JSP页面.HTML页面以POST方式提交表单时,表单的参数传递到对应的servlet后会出现中文显示乱码的问题.解决办法可采用spring自带的过滤技术, ...

  7. java工作流系统jflow表单引擎字段扩展组件介绍

    关键词:工作流快速开发平台  工作流流设计  业务流程管理   asp.net 开源工作流  bpm工作流系统  java工作流主流框架  自定义工作流引擎 表单设计器  流程设计器 装饰类图片 用于 ...

  8. Servlet作业2-将表单提交的商品信息输出到页面中

    1,表单页面 shangpin.html <!DOCTYPE html> <html> <head> <meta charset="UTF-8&qu ...

  9. 【java学习】Servlet简单的表单程序(一)

    此文用于java学习,在此小记. 在此小Demo中使用到了Servlet,所以有必要了解一下Servlet的相关知识.(Servlet的相关知识摘抄自http://blog.csdn.net/jiuq ...

随机推荐

  1. 洛谷P4243/bzoj1558 [JSOI2009]等差数列(线段树维护差分+爆炸恶心的合并)

    题面 首先感谢这篇题解,是思路来源 看到等差数列,就会想到差分,又有区间加,很容易想到线段树维护差分.再注意点细节,\(A\)操作完美解决 然后就是爆炸恶心的\(B\)操作,之前看一堆题解的解释都不怎 ...

  2. kafaka quickstart

    http://kafka.apache.org/ http://kafka.apache.org/downloads cd /root/kafuka/kafka_2.12-0.11.0.0 nohup ...

  3. Git同步远程fork的项目

    通过fork创建的项目,如果远程仓库代码进行了更新,本地需要同步的话,可以在git上创建一个上游仓库 步骤 运行git remote add upstream https://github.com/O ...

  4. vue学习(1)

    前置的准备学习: ES6简单语法: 1.let和const 2.模板字符串 3.箭头函数 4.对象的单体模式 5.es6的面向对象 6.模块化 1.let和const <script type= ...

  5. 安卓和java开发环境的安装

    java配置安卓需要,sdk,jdk(java),adt,eclipse 对于jdk的配置和安装: 1 卸载原来的jdk,重新配置环境变量只需要:在系统变量中把新的jdkJ安装路径写到“JAVA_HO ...

  6. appium desktop 1.7 byName不能用,重写

    @Override public WebElement findElementByName(String name){ String string="new UiSelector().tex ...

  7. (数学) PTA 1005 继续(3n+1)猜想 (25 分)

    1005 继续(3n+1)猜想 (25 分) 卡拉兹(Callatz)猜想已经在1001中给出了描述.在这个题目里,情况稍微有些复杂. 当我们验证卡拉兹猜想的时候,为了避免重复计算,可以记录下递推过程 ...

  8. (分治法 快速幂)P1226 【模板】快速幂||取余运算 洛谷

    题目描述 输入b,p,k的值,求b^p mod k的值.其中b,p,k*k为长整型数. 输入输出格式 输入格式: 三个整数b,p,k. 输出格式: 输出“b^p mod k=s” s为运算结果 输入输 ...

  9. 决策树decision tree原理介绍_python sklearn建模_乳腺癌细胞分类器(推荐AAA)

    sklearn实战-乳腺癌细胞数据挖掘(博主亲自录制视频) https://study.163.com/course/introduction.htm?courseId=1005269003& ...

  10. 面向对象【day07】:知识点回顾(十一)

    本节内容 1.self关键字 2.封装 3.继承 4.静态方法 一.self关键字 作用:调用当前方法的对象 1 2 3 4 5 6 7 8 9 10 11 12 13 14 class Foo:   ...