JSP页面元素,及JSP九大内置对象之二out和request
Posted 夜月薇凉映银弩
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JSP页面元素,及JSP九大内置对象之二out和request相关的知识,希望对你有一定的参考价值。
一、JSP页面元素
1、脚本Scriptlet
<1> <%
用于定义局部变量,书写常规的java代码
%>
<2><%!
用于定义全局变量,定义方法
%>
<3><%=输出表达式%>
要想回车:加<br/>;
在标签里写html代码 ,可以有效果
2、指令
如 page指令
<%@ page ....%>
page指定的属性:
language:jsp页面使用的脚本语言
import:导入类或包
pageEncoding:jsp文件自身编码(当将jsp转换为java时所用的编码)
contentType:浏览器解析jsp的编码,一般与pageEncoding的编码保持一致
3、注释
html注释:<!-- -->
java注释://或/*.........*/
jsp注释:<%-- --%>
其中,HTML注释可以被客户通过浏览器查看原码看到
二、jsp九大内置对象(自带的,不需要new就能使用的对象)
1、out:向客户端输出内容
2、request:请求对象,存储客户端(浏览器)向服务端(Tomcat/jsp)发送的请求信息
request对象的常见方法
<1>String getParameter(String name):根据请求的字段名key,返回字段值value
<2>String [] getParameterValues(String name):根据请求的字段名key,返回多个字段值value (常见的有CheckBox<多选按钮>)
<3>void setCharacterEncoding("编码格式,如utf-8"):设置post方式请求编码,如不设置,以Tomcat默认为准(Tomcat7及以前,默认为iso-8859-1,Tomcat8及以后,默认为utf-8)
<4>getRequestDispatcher(b.jsp).forword(request,response):请求转发的跳转页面 从A到B
<5>ServletContext getServletContext():获取项目的ServletContext对象
修改eclispe中jsp页面的默认编码:
打开eclipse,找到windows-->preference
进入preference后点击Web
在Web下选择jsp files
在右边找到encoding修改为自己希望的编码
实例:注册
register.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body> <form action="show.jsp" method="get"> 用户名<input type="text" name="uname"><br/> 密码<input type="password" name="upwd"><br/> 年龄<input type="text" name="uage"><br/> 爱好<br/> <input type="checkbox" name="uhobbies" value="篮球">篮球 <input type="checkbox" name="uhobbies" value="足球">足球 <input type="checkbox" name="uhobbies" value="乒乓球">乒乓球 <input type="submit" value="注册"> <br/> </form> </body> </html>
show.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body> <%//设置编码 request.setCharacterEncoding("utf-8"); String name=request.getParameter("uname"); String pwd=request.getParameter("upwd"); int age=Integer.parseInt(request.getParameter("uage")); String [] hobbies=request.getParameterValues("uhobbies"); %> 注册成功,信息如下:<br/> 姓名:<%=name %><br/> 密码:<%=pwd %><br/> 年龄:<%=age %><br/> 爱好:<br/> <% if(hobbies!=null) { for(String hobby:hobbies) { out.print(hobby+" "); //" "为空格 } } else { out.print("无"); } %> </body> </html>
下面是运行截图
get提交方式:method="get"、地址栏、超链接(<a herf="xxx">)请求方式,都属于get提交方式
下面是地址栏方式:
http://localhost:8080/Myjsp/show.jsp?uname=%E5%BC%A0%E5%BF%97%E4%BC%9F&upwd=123456&uage=19&uhobbies=%E7%AF%AE%E7%90%83&uhobbies=%E8%B6%B3%E7%90%83&uhobbies=%E4%B9%92%E4%B9%93%E7%90%83
get和post提交方式的区别
<1> get方式在地址栏显示 请求信息(但是地址栏能够容纳的信息有限,4-5kb;如果请求文件出现音频、视频等大文件,会报错);post就不会显示
<2> 文件上传操作,必须用post
注:一般推荐使用post
如get提交方式出现乱码
a.统一每一个变量的编码
new String(旧编码,新编码)
name=new String(name.getBytes("iso-8859-1","utf-8"));
缺点:比较麻烦
b.修改server.xml,一次性的修改Tomcat的默认get提交的编码
在修改端口的标签处,加上一句URIEncoding="utf-8";
在Servers文件的server.xml中,修改,因为不同的eclispe版本不同,修改方式不同,故此处不做演示。
c.直接装个Tomcat8以上就好了
post方式出现乱码
只需在调用时加上request.setCharacterEncoding("utf-8");
困扰我多年的乱码问题终于解决了。。哈哈哈哈。
以上是关于JSP页面元素,及JSP九大内置对象之二out和request的主要内容,如果未能解决你的问题,请参考以下文章