ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

JSP内置对象

2021-04-16 12:34:27  阅读:138  来源: 互联网

标签:内置 String 对象 name studentlist JSP public 页面


一、内置对象简介

  1. 普通对象的使用,都是要遵循先创建后使用的规则。所谓的内置对象指的是JSP为了方便用户操作,已经为用户创建好的对象,用户可以直接进行使用,而不用考虑创建问题。

  2. JSP为用户提供了9个内置对象,每个内置对象都分别封装了对应的方法和属性,用户直接进行使用即可。这9个内置对象分别为:request(请求对象)、response(响应对象)、session(会话对象)、application(应用程序对象)、out(输出对象)、page(页面对象)、config(配置对象)、exception(异常对象)、pageContext(页面上下文对象)。

  3. 客户端和服务器进行交互的一般过程为:客户端向服务器端发送请求,服务器端接收这些请求,并且调用相应的模型进行处理,处理完成后做出响应。


    out对象:

    • 向客户端输出信息。输出的方法是:print()和println(),其中println()方法在输出完毕后,会结束当前行。
    out.print("第一个jsp页面");
    
    • out对象具有缓存功能。

    request对象:

    • 前台向后台发送数据常用的请求方法有两种:get、post(提交的信息在地址栏上不可见)

    • 接收请求参数:

      1.getParameter(String name)方法:(其中name与name表单组件的属性一致,该方法返回值是String)

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

      2.getParameterValues(String name)方法:(其中name与name表单组件的属性一致,该方法返回值是String[])

      String uname[]=request.getParameterValues("uname");
      

    例如(1):学生登录页面

    login.jsp(表单页面)

<%@ page language="java" contentType="text/html; charset=UTF-8"
       pageEncoding="UTF-8"%>
   <!DOCTYPE html>
   <html>
   <head>
   <meta charset="UTF-8">
   <title>发送请求</title>
   </head>
   <body>
       <form action="dologin.jsp" method="get" name="login">         <!--表单组件-->
      	用户名:<input type="text" name="name"/><br/><br/>
      	密码:<input type="password" name="password"/><br/><br/>
   	个人爱好:看书<input type="checkbox" name="habit" value="看书"/>    <!--此项设为多选框-->
      			打羽毛球<input type="checkbox" name="habit" value="打羽毛球"/>
      			滑板<input type="checkbox" name="habit" value="滑板"/>
      			<br/><br/>
      	<input type="submit" value="登录"/><br/>
      	</form>
    </body>
    </html>
dologin.jsp(接收表单组件页面)
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>接收请求</title>
</head>
<body>
<% 
	 request.setCharacterEncoding("utf-8");  /* 指定每一个请求的代码,在调用getParameter()之前进行设定,可以解决中文乱码问题 */ 
	 String uname=request.getParameter("name");  /* 获取页面提交的数据  */
	 String upassword=request.getParameter("password");  
	 String[] uhabit=request.getParameterValues("habit");/* 获取页面表单组件对应的多个值时用户的请求数据 */
	if("".equals(upassword)){
		response.sendRedirect("error.jsp");
	}
%>
	<h2>提交的信息为:</h2>
	<p>你的用户名是:<%=uname %></p>
	<p>你的密码是:<%=upassword %></p>
	<p>你的个人爱好是:
	<% for(int i=0;i<uhabit.length;i++)   /* 遍历循环数组  */
	{
		out.print(uhabit[i]+"、");
	}
	%>
	</p>
</body>
</html>

error.jsp(错误页面)

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>错误页面</title>
</head>
<body>
请输入密码!<a href="login.jsp">跳转登录页面</a>
</body>
</html>

运行结果:在这里插入图片描述

  • resquest属性管理:(此作用域是在当前作用域有效,或者在请求转发的页面有效)

    setAttribute(String key,Object value)//以键值对的形式设置属性的名称及属性的值
    
    getAttribute(String key)//函数的作用是根据属性的键来获得属性的值
    

例如:

login-2.jsp(使用setAttribute方法设置键值对)

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>send</title>
</head>
<body>
	<%
	  request.setAttribute("name","Tom");
	  request.setAttribute("password","1314");
	%>
	<jsp:forward page="dologin-2.jsp"/>
 <a href="dologin-2.jsp">跳转</a> 
</body>
</html>

dologin-2.jsp(使用getAttribute方法获取键对应的值)

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>receive</title>
</head>
<body>
	<% String uname=(String)request.getAttribute("name");
	   String upassword=(String)request.getAttribute("password");   
		out.println(uname);
		out.println(upassword);
 %>
</body>
</html>

运行结果如下:在这里插入图片描述

response对象:

  • 实现重定向页面:(使用sendRedirect()方法将网页重定向到另一个页面)

    response.sendRedirect(String path)
    

    如上述例如(1)所示

session对象:

  • 在客户端与服务器端通信交互中,扮演着数据搬运工的角色,能够实现不同页面之间的数据共享

  • session对象的生存时间是和浏览器关闭与否密切相关,只要浏览器不关闭,session对象就一直存在。

  • 一般默认是30分钟为刷新时间,(可在配置文件conf->web.xml文件中查找session即可看到默认的刷新时间)。

    application对象:

  • 保存所有程序中的共有数据,只要没有关闭服务器,application对象将一直存在。

  • application对象类似于系统的“全局变量”,用于实现用户之间的数据共享。

  • application对象所提供的函数中最常用的是:

    void removeAttribute(String name) 从ServletContext的对象中去掉指定名称的属性

    void setAttribute(String name,Object object) 使用指定名称和指定对象在ServletContext的对象中进行关联

    Object gerAttribute(String name) 从ServletContext的对象中获取一个指定对象

例如:学生注册页面

1.先创建一个JavaBean文件,如下所示:

package JavaBean;
public class Student {
	private String name;
	private int sno;
	private String sclass;
	private String sex;
	private String[] habit;
	public String getName() {//这些方法是点击空白处、右键source->generate getters and setters生成
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getSno() {
		return sno;
	}
	public void setSno(int sno) {
		this.sno = sno;
	}
	public String getSclass() {
		return sclass;
	}
	public void setSclass(String sclass) {
		this.sclass = sclass;
	}
	public String getSex() {
		return sex;
	}
	public void setSex(String sex) {
		this.sex = sex;
	}
	public String[] getHabit() {
		return habit;
	}
	public void setHabit(String[] habit) {
		this.habit = habit;
	}
}

2.创建一个jsp文件,用以编辑学生注册表单组件

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>学生注册</title>
</head>
<body>
	<h2>学生注册</h2>
	<form action="studentindex.jsp" method="get" name="stuInfo">
	学生姓名:<input type="text" name="name"/><br/><br/>
	学号:<input type="text" name="sno"/><br/><br/>
	班级:<select name="sclass"><!-- 此项设置为下拉框 -->
			<option value="计本1801班">计本1801班</option>
			<option value="计本1802班">计本1802班</option>
			<option value="计本1803班">计本1803班</option>
	</select><br/><br/>
	性别:
		男<input type="radio" name="sex" value="男"/><!-- 此项设置为单选框 -->
		女<input type="radio" name="sex" value="女"/><br/><br/>
	兴趣爱好:
		看书<input type="checkbox" name="habit" value="看书"/><!-- 此项设置为多选框 -->
		打球<input type="checkbox" name="habit" value="打球"/><br/><br/>
	<input type="submit" value="注册"/><br/>
	</form>
</body>
</html>

3.创建一个获取学生注册表单的jsp文件

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@page import="JavaBean.Student,java.util.ArrayList"%><!--需要导两个包,一个是学生类,一个是集合-->
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>注册成功</title>
</head>
<body>
	<h2>注册成功!</h2>
<% 
	//获取表单提交信息
	String name=request.getParameter("name");
	int sno=Integer.parseInt(request.getParameter("sno"));//整型转换,若为double,则用Double.parseDouble转换
	String sclass=request.getParameter("sclass");
	String sex=request.getParameter("sex");
	String[] habit=request.getParameterValues("habit");//兴趣爱好有多个值,所以需要用数组请求
	//创建一个学生对象,将表单提交的学生信息放在学生对象里
	Student student=new Student();
	student.setName(name);
	student.setSno(sno);
	student.setSclass(sclass);
	student.setSex(sex);
	student.setHabit(habit);
	//学生集合类	
	//ArrayList<Student> studentlist=new ArrayList<Student>();每刷新一次每new一次
	ArrayList<Student> studentlist=null;  
	if(application.getAttribute("studentlist")!=null){
		studentlist=(ArrayList<Student>)application.getAttribute("studentlist");//如果“注册学生信息表”不为空,则获取提交的学生的信息集合
	}
	else{
		studentlist=new ArrayList<Student>();//如果“注册学生信息表”为空,则学生类集合进行初始化
	}
	studentlist.add(student);//学生类的集合的add方法
	application.setAttribute("studentlist",studentlist);//用“键值对”的形式设置属性名称和属性的值
%>
<h2>学生注册信息表如下:</h2>
	<table>
		<tr>
			<th>姓名</th>
			<th>学号</th>
			<th>性别</th>
			<th>班级</th>
			<th>兴趣爱好</th>
		</tr>
		<% 	//遍历学生类集合
			for(int i=0;i<studentlist.size();i++){
				Student stu=studentlist.get(i);//由学生类来接收循环遍历得到的值	
		%>		
		<tr>
			<td><%=stu.getName() %></td>
			<td><%=stu.getSno() %></td>
			<td><%=stu.getSex() %></td>
			<td><%=stu.getSclass() %></td>
			<td><% 
			if(stu.getHabit()!=null){
				String[] h=stu.getHabit();
				for(int j=0;j<h.length;j++){
					out.print(h[j]);
				}
			} 
			%></td>
		</tr>
		<%
			}
		%>
	</table>
	<a href="studentlogin.jsp">返回继续添加学生</a>
</body>
</html>

运行结果如下所示:在这里插入图片描述
在这里插入图片描述

标签:内置,String,对象,name,studentlist,JSP,public,页面
来源: https://blog.csdn.net/weixin_53442765/article/details/115753977

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有