您的位置:首页 > 其它

第7天:Servlet相关知识(三)

2011-06-05 16:42 330 查看
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对象。

转发注意的问题:

在转发之前,不要有任何的输出,否则会出错

转发会清空缓存。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: