JSP数据交互(一)


 

什么是JSP内置对象

 

JSP内置对象是 Web 容器创建的一组对象,不需要做任何声明就可以直接使用的对象。

例如:

<%

        int[ ] value = { 60, 70, 80 };

        for  (int i : value) {

                out.println(i);//没有进行声明和创建,但却可以使用out对象

        }

%>

 

 

JSP常用的内置对象

out

request

response

session

application

 

 

JSP内置对象request

 

request对象主要用于处理客户端请求

request对象常用方法

方法名称

 说明

String getParameter(String name)

根据表单组件名称获取提交数据

String[ ] getParameterValues(String name)

获取表单组件对应多个值时的请求数据 

void setCharacterEncoding(String charset)

指定每个请求的编码

RequestDispatcher getRequestDispatcher(String path)

返回一个RequestDispatcher对象,该对象的forward( )方法用于转发请求

 

例如:

学员注册页面

<form name="form1" method="post" action="reginfo.jsp">

    	<table  border="0" align="center">

     	 <tr>

        	<td>用户名:</td>

        	<td><input type="text" name="name"></td>

      	</tr>

<tr>

        <td height="19">密码:</td>

        <td height="19"><input type="password" name="pwd"></td>

</tr>

<tr>

        	<td>信息来源:</td>

        	<td>

<input type="checkbox" name="channel" value="报刊">报刊

        <input type="checkbox" name="channel" value="网络">网络<br/>

        <input type="checkbox" name="channel" value="朋友推荐">朋友推荐

        <input type="checkbox" name="channel" value="电视">电视

       	</td>

      	</tr>

      	<!-- 以下是提交、取消按钮 -->

      	<tr >

        	<td colspan="2" align="center" >

          	<input type="submit" name="Submit" value="提交">

          	<input type="reset" name="Reset" value="取消">

        	</td>

      	</tr>

    	</table>

  	</form>

信息读取显示页面

<body>

<%

    request.setCharacterEncoding("UTF-8");

    String name = request.getParameter("name");

    String pwd = request.getParameter("pwd");

    String[] channels = request.getParameterValues("channel");

%>

<div align="center">你输入的注册信息

<table border="0" align="center">

    <tr>

        <td width="80" height="20">用户名:</td>

        <td><%=name%></td>

    </tr>

    <tr>

        <td height="20">密码:</td>

        <td><%=pwd%></td>

    </tr>

    <tr>

        <td height="20">信息来源:</td>

        <td >

        <%

            if (channels != null) {

                for (String channel: channels) {

                    out.print(channel+" ");

                }

            }

        %>

        </td>

    </tr>

</table>

</div>

</body>

 

在页面设置支持中文字符的字符集,如:UTF-8

获取数据时解决中文乱码问题

 

POST方式提交数据时

 

<%   

        // 设置读取请求信息的字符编码为UTF-8

        request.setCharacterEncoding("UTF-8");

        // 读取用户名和密码

        String name = request.getParameter("name");

        String pwd = request.getParameter("pwd");

%>

 

GET方式提交数据时

<%   

        // 读取用户名和密码

        String name = request.getParameter("name");

        // 对请求数据进行字符编码

        name = new String(name.getBytes("ISO-8859-1"), "UTF-8");

%>

 

 

Tomcat目录结构\conf\server.xml中设置字符集

<Connector  port="8080"  protocol="HTTP/1.1"

connectionTimeout="20000"

redirectPort="8443"  URIEncoding="UTF-8"

/>

 

JSP内置对象response

 

response对象用于响应客户请求并向客户端输出信息

response的常用方法

方法名称

说明

void addCookie(Cookie cookie)

向客户端添加Cookie

void setContentType(String type)

设置HTTP响应的contentType类型

void setCharacterEncoding(String charset)

设置响应所采用的字符编码类型

void sendRedirect(String location)

将请求重新定位到一个新的URL

 

 

页面重定向

void sendRedirect(String location)

客户端将重新发送请求到指定的URL

 

例如:

实现登录验证,并在验证成功后跳转至欢迎页面

<%

request.setCharacterEncoding("UTF-8");

String name = request.getParameter("userName");

String pwd = request.getParameter("pwd");

if ("sa".equals(name) && "sa".equals(pwd))       

response.sendRedirect("welcome.jsp");//跳转到欢迎页面

%>

 

如何才能实现页面跳转后,请求信息不丢失呢?

使用转发取代重定向实现页面跳转

 

转发的作用

在服务器端,将请求发送给服务器上的其他资源,以共同完成一次请求的处理

转发的实现

RequestDispatcher对象的forward()方法

例如:

<%

RequestDispatcher rd = request.getRequestDispatcher("welcome.jsp");

rd.forward(request, response);

%>

注:在多个页面交互过程中请求中的数据可以共享

 

转发

重定向

转发是在服务器端发挥作用,将同一请求在服务器资源之间进行传递

重定向是在客户端发挥作用,通过发送一个新的请求实现页面跳转

客户端浏览器的地址栏不会显示转向后的地址

在地址栏中可以显示转向后的地址

 

 

什么是会话

 

一个会话就是在一段时间内,一个客户端与Web服务器的一连串相关的交互过程

 

JSP内置对象session

 

session对象常用方法

 方法名称

说明

String getId()

获取sessionid

void setMaxInactiveInterval(int interval)

设定session的非活动时间

int getMaxInactiveInterval()

获取session的有效非活动时间(以秒为单位)

void invalidate()

设置session对象失效

void setAttribute(String key, Object value)

key/value的形式保存对象值

Object getAttribute(String key)

通过key获取对象值 

void removeAttribute(String key)

session中删除指定名称(key)所对应的对象

 

session与窗口的关系

 

每个session对象都与一个浏览器窗口对应 ,重新开启一个浏览器窗口,可以重新创建一个session对象(不同版本浏览器可能有所差别)

通过超链接打开的新窗口,新窗口的session与其父窗口的session相同

 

 

使用session实现访问控制

 

在控制页面获取用户请求的登录信息进行验证

例如:

<%

if ("admin".equals(name) && "admin".equals(pwd)) {  // 如果是已注册用户

session.setAttribute("login", name);//在session中存放用户登录信息

 // 设置session过期时间

session.setMaxInactiveInterval(10*60);

request.getRequestDispatcher("admin.jsp").forward(request, response);

} else {

response.sendRedirect("index.jsp");

}

%>

 

在新闻发布系统新闻发布页面增加登录验证

例如:

<%

String login = (String) session.getAttribute("login");//如果session中不存在用户的登录信息,转入登录页面

if (login == null) {

response.sendRedirect("index.jsp");

return;

} %>

 

 

session对象的失效

语法:

手动设置失效:invalidate()

超时失效:通过setMaxInactiveInterval( )方法,单位是秒

例如:

<%

session.setAttribute("login","admin");

session.setMaxInactiveInterval(600);

response.sendRedirect("admin.jsp");

%>

 

通过设置项目的web.xmlTomcat目录下的/conf/web.xml文件,单位是分钟

<session-config>

    <session-timeout>10</session-timeout>

</session-config>


 

include指令

 

可以将一些共性的内容写入一个单独的文件中,然后通过include指令引用该文件

例如:

创建登录验证文件 loginControl.jsp

<%

String login = (String) session.getAttribute("login");

if (login == null) {

response.sendRedirect("index.jsp");

return;

} %>

 

在后台首页面中使用include指令引用登录验证文件

<%@  include file="loginControl.jsp" %>

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: JavaScript 是一种脚本语言,主要用于在网页中添加动态效果和交互性。它可以在客户端(即浏览器)中执行,可以操作网页中的 HTML 元素,也可以与服务器进行通信。 而 JSP(JavaServer Pages)是一种基于 Java 技术的服务器端动态网页开发技术,它能够将 HTML、Java 代码和服务器端的数据集成在一起,生成动态的网页内容。 在数据处理方面,JavaScript 可以直接在客户端对数据进行处理和操作,例如通过 DOM(文档对象模型)获取网页中的数据,然后进行处理和展示。而 JSP 主要是在服务器端进行数据处理,通过 Java 代码获取数据库中的数据,然后将其处理后生成 HTML 页面,再返回给客户端进行展示。 总的来说,JavaScript 更适合实现网页的动态效果和交互性,而 JSP 更适合实现服务器端的数据处理和动态网页生成。 ### 回答2: JavaScript数据JSP数据是两种不同的数据类型。JavaScript是一种脚本语言,主要用于客户端的网页开发,而JSP(JavaServer Pages)是一种服务器端的Java技术,用于动态生成网页。 首先,JavaScript数据主要是在客户端执行的,它可以与用户进行交互,并对网页进行操作。它可以通过DOM(文档对象模型)来访问和修改网页的内容,可以对表单进行验证和处理,还可以通过AJAX技术与服务器进行异步通信。JavaScript数据的处理速度较快,可以提供丰富的用户体验。 相比之下,JSP数据是在服务器端生成的,它可以与数据库进行交互,并生成动态的网页内容。JSP页面中可以使用Java语言编写逻辑代码,通过Java的一些类和方法来处理数据,并根据业务逻辑生成最终的网页内容。JSP数据的处理速度可能相对较慢,因为需要与数据库进行交互和生成网页。 另外,JavaScript数据JSP数据之间可以进行交互。通过JavaScript可以向服务器发送请求并接收响应,从而获取服务器端的数据。而JSP页面也可以使用JavaScript脚本来操作DOM和实现一些客户端的功能。 总结来说,JavaScript数据主要用于客户端的网页开发,可以提供丰富的用户交互和动态效果;而JSP数据主要用于服务器端的网页生成,可以与数据库进行交互并生成动态内容。两者在网页开发中可以相互配合使用,以实现更加丰富的功能。 ### 回答3: JavaScript是一种脚本语言,主要用于网页开发。它可以在网页上直接嵌入,与HTML和CSS一起使用,为网页添加交互性和动态内容。而JSP是Java服务器页面的缩写,是一种用于动态网页开发的技术。它允许在网页中嵌入Java代码,以生成动态内容。 在数据方面,JavaScript和JSP有一些区别。JavaScript是一种客户端脚本语言,它能够处理浏览器端的数据操作,如表单验证、数据的读取和修改等。JavaScript可以通过DOM(文档对象模型)来访问和修改网页上的元素和属性,从而实现与用户的交互。 而JSP是在服务器端运行的技术,它可以与服务器进行交互,处理表单数据的提交和查询数据库等操作。JSP中的Java代码可以通过Servlet将数据从服务器发送到客户端,并完成一些业务逻辑的处理,如用户认证、权限控制等。相比之下,JSP对于数据的处理更加安全可靠,因为数据处理的逻辑是在服务器端进行的。 另外,JavaScript是一种解释型语言,它的代码会在浏览器中解释执行。而JSP中的Java代码通常是先编译成字节码,然后再在服务器上执行。 总而言之,JavaScript主要用于前端开发,处理浏览器端的数据交互;而JSP则用于服务器端的动态网页开发,处理服务器与客户端之间的数据传输和业务逻辑处理。两者在数据处理、安全性和执行方式上有一些差异,开发者在选择使用时需根据实际需求进行考虑。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值