一、Servlet工作原理
- Servlet工作原理
1.1 Servlet如何获取请求参数
1.1.1获取请求参数值的方法
*获取提交的Name-Value数值
-getParameter(name)
*获取提交的Name-Values数值
-getParameterValues(name)
1.1.2getParameter方法
*常用于传入的参数中,一个名字对应一个值的形式
*String request.getParameter(String paramName)
*如果参数名写错,会产生null
1.1.3getParameterValues方法
*String[] request.getParameterValues(String paramName)
*当需要获取参数名相同的多个参数值时使用该方法
*多用于获取提交的表单中复选框的值
*如果该参数名不存在,则返回null
1.2请求方式(详见其他文章)
1.3 Servlet如何处理中文参数
1.1.1为什么表单提交中文会出现乱码
*为什么会产生乱码
-当表单提交时,浏览器会对中文参数值进行编码(会使用打开表单所在的页面的字符集进行编码)
-Web服务器在默认情况下会使用iso-8859-1去解码
-编码与解码方式不一致时,就会出现乱码
1.1.2解决POST方式时的乱码问题
*step1:确保表单所在的页面按照指定的字符集打开
*step2:在服务器端按照这个编码格式解码即可
-request.setCharacterEncoding(“utf-8”)
-添加在读取参数的前面
-此方法只针对post请求有效
1.1.3解决GET方式时的乱码问题
*step1:使用meta确保表单所在页面按照指定字符集打开
*step2:在服务器端使用如下方式获取参数值
1.4 Servlet如何输出中文
1.1.1为什么返回的页面会有乱码
*编码:将Unicode字符集对应的字节数组转换成某种本地字符集(如UTF-8)对应的字节数组
*解码:将某种本地字符集对应的字节数组转换为Unicode字符集对应的字节数组
*编码和解码使用的字符集不一致就产生了乱码问题
1.1.2如何解决输出内容的乱码
*在获取WriteOut对象及调用out方法之前调用setContentType方法
*response.setContentType(“text/html;charset=utf-8”)
*作用
-通知容器,在调用out.println方法输出时,使用指定的字符集
-生成消息头中content-type的值,通知浏览器,服务器返回的数据类型和字符集
1.5 Servlet如何访问数据库
*将JDBC驱动(.jar)文件放到WEB-INF\lib下,原因是:ClassLoader找到字节码文件,然后加载到JVM的方法区中,变成一个对象.Tomcat都有自己的类加载器,会去WEB-INF下面lib中找字节码文件.因为jar包中都是字节码文件
*在Servlet中编写JDBC代码,实现对数据库的访问
1.6 Servlet如何运行-Servlet运行的详细步骤
*step1:浏览器根据IP建立与容器的连接
*step2:浏览器请求数据打包
*step3:容器解析请求数据包,封装对象
*step4:容器依据路径找到Servlet创建对象
*step5:容器调用Servlet对象的service方法
*step6:容器将响应打包发给浏览器
*step7:浏览器取出结果,生成页面