Servlet相关知识3
ServletConfig接口:
容器在调用init()方法时,会事先创建好该对象,以参数的形式传递给servlet对象。
该接口定义了获取servlet配置参数的方法
String getInitParameter(String name);
在web.xml中可以配置servlet的初始化参数值:
<servlet>
<servlet-name>HelloWord</servlet-name>
<servlet-class>/servlet/HelloWord</servlet-class>
<init-param>
<param-name>admin</param-name>
<param-value>wang_sir</param-value>
</init-param>
</servlet>
1.表单处理
(1)获取表单中的数据
String getParameter(String paraName); //要注意,参数名不存在,返回null
String[] getParameterValues(String paramName); //如果有多个参数名相同,则使用下面的方法
Map getParameterMap(); //返回键值对,每一个键值对对应一个参数名和参数值,参数值是String[]类型
(2)表单中的中文处理问题
浏览器对表单中的数据(非ascii字符)进行编码。所使用的编码是打开该表单所在的页面时所使用的编码。
step1 静态页面(html),使用<meta http-equiv="content-type" content="text/html;charset=utf-8">
指定打开页面时的编码。
step2 在servlet当中
a、request.setCharacterEncoding("UTF-8"); //指定request对象编码时所使用的编码格式
b、下面方法用来向浏览器输出数据:
-----response.setCharacterEncoding("utf-8");
|----response.setContentType("text/html");
|-response.setContentType("text/html;charset=utf-8");
作用一:向流当中输入数据时,设置编码为utf-8;
作用二:向浏览器发送一个消息头,告诉浏览器当前返回的数据以utf-8编码来打开
step3 如果要保存数据到数据库
a、创建数据库时,使用create database dbName default character set utf8;
b、jdbc驱动程序,指定数据库编码,即告诉驱动程序,当前数据库保存数据所使用的编码是什么。
jdbc:mysql://localhost:3306/dbName?useUnicode=true&characterEncoding=utf8
2.JSP
(1)是什么?
Java Server Page:Sun公司开发的一种服务器端动态页面生成技术,其主要的组成部分是html元素以及少量的java代码。
因为直接使用servlet生成动态页面过于繁琐,使用jsp来生成动态页面更方便。
jsp文件以.jsp为后缀,不需要编译,直接打包,就可以运行。
(2)jsp如何运行
当访问某个.jsp文件时,jsp引擎(理解为servlet容器中的某个特定的模块)会将.jsp文件
转换为.java文件(.java文件就是一个servlet),然后创建其实例并调用其service()方法。
(3)jsp文件的组成
a、html元素(包括html标签、内容、css、javascript)直接手写
b、java代码
1)java代码片段
<% 任意的java代码 %>
2)jsp表达式
<%= %>
3)jsp隐含对象
request response out session
4)jsp指令
告诉jsp引擎,在将.jsp文件转换成.java文件时,作一些额外的处理。
<%@指令名称 属性=值%>
比如:
(4).jsp文件如何转换成.java(也就是说,如何转换成servlet)。
a、<% %>里面的java代码---->直接放到service()方法。
b、html---->在service()方法,使用out.write();
//write(null)方法,会输出"";
//println(null)方法,会输出null。
//一般情况下,如果结果输出到客户端,需要将null写成""输出
3、转发
1)什么是转发
在同一个应用内部,一个组件将未完成的任务交给另一个组件来完成。
一般情况是:一个servlet完成了业务逻辑处理,将数据展现任务交给一个jsp来完成。
2)编程
step1 确定对象到request上面
request.setAttribute(String name, Object value);
获取帮定的对象
request.getAttribute(String name, Object value);
RequestDispatcher rd = request.getRequestDispatcher("另一个组件");
step2 rd.forward(request, response);
3)特点
a、一件事情未完成;
b、转发的目的地,只能是同一个应用内部;
c、转发时,浏览器地址栏的地址没有发生任何的变化;
d、转发涉及的组件之间,可以共享同一个request、response对象。
转发注意的问题:
在转发之前,不要有任何的输出,否则会出错
转发会清空缓存。
第7天:Servlet相关知识(三)
最新推荐文章于 2021-06-19 23:45:29 发布