JSP页面元素,内置对象以及tomcat配置技巧

对jsp基础的一些掌握和概括

先看当我们创建jsp文件时,eclipse自动生成的jsp代码。

之后,我们再添加一些代码,如图所示。

如上图所示,JSP的页面元素包括: HTML,  java代码(脚本Scriptlet),指令,注释。


a.脚本Scriptlet,网页中的java代码可以分为如下三类。


    i.    主要用来定义书写局部变量,java语句等
  
     <%
                局部变量、java语句
        %>

    ii.主要用来定义全局变量和方法
     
   <%!
                全局变量、定义方法
        %>

    iii.可以用来输出变量值,而且不需要加分号,前两种和普通的java语句一样,需要加分号

        <%=输出表达式 %>

demo 代码如下

<%@ 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>

	<%!
		public String name="";
		public void show()
		{
			name="hello jsp method";
		}
	%>
		<br/>
	<%	
		String name1="hello param";
		out.print("name1:"+name1+"<br/>") ;
		show();
		out.print("name:"+name) ;
	%>	
		<br/>	
	<%="name3:"+name1 %>
</body>
</html>

访问该项目文件如图

扫描二维码关注公众号,回复: 11176061 查看本文章


       注意:如果此时服务已经启动,修改web.xml、配置文件、java  等(后端服务器相关的代码或者配置)需要重启tomcat服务,但是如果修改 Jsp\html\css\js ,不需要重启,注意,out.println()不能回车; 要想回车:“<br/>”,即out.print() 和<%= %> 可以直接解析html代码


b.指令
    page指令

   <%@ page  ....%>
page指定的属性:
     language:jsp页面使用的脚本语言,在这里一般是java
    import:导入类
    pageEncoding:jsp文件自身编码  
    contentType:浏览器解析jsp的编码

例如:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"  import="java.util.Date" %>

利用import属性导入一个包为java.util.Date

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" import="java.util.Date"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>	
	时间:
	<%	
		out.print(new Date());
	%>		
		<br/>
	<%="时间:"+new Date()%>
</body>
</html>

访问该项目文件如图


c.注释,注释分为以下三种。


    html注释:<!-- -->  ,    可以被客户 通过浏览器查看源码 所观察到
    java注释://     /*...*/      不可以被客户 通过浏览器查看源码 所观察到
    jsp注释:<%-- --%>       不可以被客户 通过浏览器查看源码 所观察到

demo代码如下

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" import="java.util.Date"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>	
	<!-- html 注释 -->
	<%	
		//java注释
		
		/*
		java注释
		*/
	%>	
	<%--jsp注释 --%>
		
	
</body>
</html>

访问该项目文件,并在浏览器查看源代码如图


JSP九大内置对象(自带的,不需要new 也能使用的对象)。


     out:输出对象,向客户端输出内容。
     request:请求对象;存储“客户端向服务端发送的请求信息”。


        request对象的常见方法:
           String getParameter(String name) :根据请求的字段名key (input标签的name属性值) ,返回字段值value (input标签的value属性值)
           String[] getParameterValues(String name): 根据请求的字段名key ,返回多个字段值value  (checkbox)
           void setCharacterEncoding("编码格式utf-8") :设置post方式的请求编码  (tomcat7以前默认iso-8859-1,tomcat8以后改为了utf-8)
           getRequestDispatcher("b.jsp").forward(request,response) ;  :请求转发 的方式跳转页面   A - > B
          ServletContext getServerContext():获取项目的ServletContext对象

示例:
注册和显示
register.jsp  

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; 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="乒乓球"/>乒乓球<br/>
			<input type="submit" value="注册">
		</form>
</body>
</html>

show.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
		<%
			//设置编码
			request.setCharacterEncoding("utf-8") ;
			//获取值
			String name = request.getParameter("uname") ;
			int age = Integer.parseInt(request.getParameter("uage") ) ;
			String pwd = request.getParameter("upwd") ;	
			//通过该方法返回一个字符串数组
			String[] hobbies = request.getParameterValues("uhobbies") ;
		%>
		
		注册成功,信息如下:<br/>
		姓名:<%=name %><br/>
		年龄:<%=age %><br/>
		密码:<%=pwd %><br/>
		爱好:<br/>
		
		<%
			//判断拿到的值是否为null,以免报NullPointerException
			if(hobbies !=null)
			{
				for(String hobby :hobbies)
				{
					out.print(hobby +"&nbsp;");
				}
			}
		%>
	
		
		
</body>
</html>

访问该项目文件,

此时观察到地址栏发生了变化,是因为我们表单的提交方式设置为get,该方式的地址栏信息一般如下!
        连接/文件?参数名1=参数值1 & 参数名2=参数值2 & 参数名1=参数值1 。
get提交方式:  method="get" 和 地址栏 、超链接(<a href="xx">)请求方式 默认都属于get提交方式

我们将form表单的提交方式改为post,可以观察到:

get与post请求方式的区别:
a.   get方式 在地址栏显示 请求信息  (但是地址栏能够容纳的 信息有限,4-5KB;如果请求数据存在大文件,图片等  会出现地址栏无法容纳全部的数据而出错) ;post不会显示。
b.   文件上传操作,必须是post。

推荐使用post

统一请求的编码 request。


      get方式请求 如果出现乱码,解决:
           a.统一每一个变量的 编码 (不推荐)
               new String(  旧编码,新编码);
               name = new String(name.getBytes("iso-8859-1"),"utf-8");

           b. 修改server.xml ,一次性的 更改tomcat默认get提交方式的编码 (utf-8)
           建议 使用tomcat时, 首先在server.xml中 统一get方式的编码.. URIEncoding="UTF-8"

 <Connector connectionTimeout="20000" port="8888" protocol="HTTP/1.1" redirectPort="8443" URIEncoding="UTF-8/>


tomcat7 :默认编码格式为: (iso-8859-1)

tomcat8 :默认编码格式为:(utf-8)


post方式请求 如果出现乱码,解决:
           request.setCharacterEncoding("utf-8") ;

还剩七个内置对象:分别是:

session   会话对象
appliation 全局对象
response  响应对象
pageContext  JSP页面容器
config  配置对象(服务器配置信息)
page   当前JSP页面对象(相当于java中的this)
exception 异常对象

 

后面一一复习使用!

原创文章 42 获赞 72 访问量 8233

猜你喜欢

转载自blog.csdn.net/weixin_43249548/article/details/97381269
今日推荐