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+"&nbsp;");
                          //"&nbsp"为空格
                      }
                   }
                   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");


困扰我多年的乱码问题终于解决了。。哈哈哈哈。

原文地址:https://www.cnblogs.com/yeyueweiliang/p/12192257.html