首页 > 其他 > 详细

servlet学习笔记

时间:2019-04-14 20:25:29      阅读:106      评论:0      收藏:0      [点我收藏+]

操作环境IDEA

 

首先创建项目

技术分享图片

 

创建完成后导入 java ee jar包

技术分享图片

配置tomcat 

技术分享图片

 

技术分享图片

 

 

在src下创建 com.xx.control包,servlet一般放在control下。一个简单的HttpServlet

package com.xx.control;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

@WebServlet(name = "TwoServlet")
public class TwoServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String mt = request.getMethod();
String uname = request.getParameter("uname");
System.out.println("用户名: "+ uname);
System.out.println("方法: " + mt);
}

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String mt = request.getMethod();
String uname = request.getParameter("uname");
System.out.println("用户名: "+ uname);
System.out.println("方法: " + mt);
}
}

 

 然后在web目录下配置WEB-INF中的web.xml

    <servlet>
        <servlet-name>WYF</servlet-name>
        <servlet-class>com.lh.control.OneServlet</servlet-class>
        <load-on-startup>10</load-on-startup>
        <!--    设置为启动tomcat时即加载该实例,数字越小 加载优先级越高    -->
        <!--    tomcat 访问期间,只会有一个servlet被实例化-->
    </servlet>

    <servlet-mapping>
        <servlet-name>WYF</servlet-name>
        <url-pattern>/wyf</url-pattern>
    </servlet-mapping>

有四种路径配置方法,当路径冲突时,优先级为   具体 > 前置 > 通配 > 后置

<!--        具体路径请求-->
        <url-pattern>/wyf</url-pattern>

<!--        前置条件请求-->
        <url-pattern>/wyf/*</url-pattern>

<!--        后置条件请求-->
        <url-pattern>*.do</url-pattern>

<!--        通配符请求路径-->
        <url-pattern>/*</url-pattern>

 

 

Post时编码问题

<html>
  <body>
  <div>
    <form action="/Sample01/wyf" method="get">
      <label>用户名: </label><input type="text" name="uname"/>
      <input type="submit" value="get"/>
    </form>
    <form action="/Sample01/wyf" method="post">
      <label>用户名: </label><input type="text" name="uname"/>
      <input type="submit" value="post"/>
    </form>
  </div>
  </body>
</html>

使用post传参时会发现,tomcat在console的输出会乱码

原因

  浏览器采用【get】请求时,请求参数保存在【请求头】,请求头的内容是由tomcat负责的。Tomcat9 编码集默认为 utf-8, 以前也是ISO-8859-1

  浏览器采用【post】请求时,请求参数保存在【请求体】,请求体的内容是由请求对象负责的。编码集默认为 ISO-8859-1

解决方法

  设置request对象的编码

request.setCharacterEncoding("utf-8");

  必须在读取内容前调用该方法.

 

  Tomcat9以前的版本还需要修改Tomcat/conf/server.xml

<Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" 
           URIEncoding="utf-8"/>        

 

 

读取复选框的参数

String array[] = req.getParameterValues("hobby");

 

    <form action="/Sample01/cbs" method="get">
      <label>爱好: </label><input type="checkbox" name="hobby" value="1">吴亦凡<br>
      <input type="checkbox" name="hobby" value="2">才徐坤<br>
      <input type="checkbox" name="hobby" value="3">郭德纲<br>
      <input type="submit"/>
    </form>

测试结果

技术分享图片

 

servlet学习笔记

原文:https://www.cnblogs.com/wrnmb/p/10706389.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!