美文网首页程序猿阵线联盟-汇总各类技术干货技术干货
【JavaWeb学习笔记】从jsp到Servlet提交数据(不使

【JavaWeb学习笔记】从jsp到Servlet提交数据(不使

作者: cuifengli | 来源:发表于2017-07-28 11:00 被阅读0次

将在学习jsp向Servlet传递参数的过程中需要注意的地方总结如下:

开发环境:eclipse(Indigo) 、Tomcat 7.0.56

  • 项目结构
项目结构
  • jsp代码
  1. 编码
    为了能够正常显示中文,需要做以下编码格式设置。
<%@ page language="java" contentType="text/html; charset=utf-8"
   pageEncoding="utf-8"%>
  1. form表单
  • action设置:action指定所要跳转的Servlet的路径名,method指定http请求使用何种方法。
    -- action路径需要与在web.xml中配置的url-pattern一致,必要时需要加上请求的上下文
    -- method常用的方法有两种:post和get。HttpServlet对两种请求对应的处理方法分别为doPost方法和doGet方法。
    二者区别如下:
操作 get post
刷新 不会重复提交 重复提交
数据长度 2048个字符 无限制
数据类型 ASCII字符 无限制
可见性 URL中可见 URL中不可见
安全性
  • input设置:这里的name属性对应在parameter的name。

完整的form代码:

<form action="<%=request.getContextPath() %>/LoginServlet" method="post">
用户名:<input type="text" name="uname"/><br/>
密码:<input type="password" name="pwd"/><br/>
<input type="submit" value="登录"/>
<input type="reset" value="重置"/>
</form>
  • Servlet代码
    需要在doPost方法和doGet方法中完成对应的业务处理。
    这里需要注意的几点:
  1. HttpRequest和HttpResponse的编码设置要一致。
  2. 要想中文显示正常,要在获取到response的printWriter之后再设置request的编码。其他顺序不清楚可不可以,感兴趣的话可以试一下。
  3. 字段parameter名字要和jsp中的name属性要一致。
  4. 用response的getWriter()方法向屏幕输出信息,而System.out.println()方法是向eclipse的console控制台输出信息。
  5. response的printwriter的println()方法本身不换行,想换行需要再加上"
    ",或者"
    ",实现换行的效果。
  6. printwriter用完后需要close。

完整的doPost()代码:

@Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("=====进入了doPost方法=====");
        resp.setCharacterEncoding("GB18030"); //编码req和resp要一致,这里用的是GB18030,试了一下utf-8,结果中文乱码
        String username=req.getParameter("uname"); //字段名字要和jsp中的name属性一致
        String password=req.getParameter("pwd");
        PrintWriter out=resp.getWriter();
        req.setCharacterEncoding("GB18030");
        out.println("用户名==》  "+username+"<br>"); //用getWriter()向屏幕输出信息
        out.println("密码==》 "+password);  //需要加<br>换行
        out.flush();
        out.close();
    }
  • web.xml配置

这里完成Sevlet的一些配置。

  • servlet中的servlet-class要写servlet所在的包名和类名。
  • serlet-mapping中的servlet-name和servlet中的servlet-name要一致。
  • display-name随意设置,url-pattern要和jsp中的action路径一致,上面已经说明。

配置代码如下:

<servlet>
    <description></description>
    <display-name>LoginServlet</display-name>
    <servlet-name>LoginServlet</servlet-name>
    <servlet-class>com.feng.javawebstudy.LoginServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>LoginServlet</servlet-name>
    <url-pattern>/LoginServlet</url-pattern>
  </servlet-mapping>

最终页面效果:

登录页面 显示信息页面

初学JavaWeb,哪里不对的地方欢迎大家指正!

相关文章

网友评论

    本文标题:【JavaWeb学习笔记】从jsp到Servlet提交数据(不使

    本文链接:https://www.haomeiwen.com/subject/hejxlxtx.html