JSP第一周学习总结

本周学习到的JSP除环境配置外主要的代码内容是在网页内部写入java代码。
JSP页面的元素有:
静态内容:指html标签内静态文本,用于写网页内的内容。

指令:由<%@ …%>包起来,一般内部会有编码格式的定义,java包的引用,JSP页面创建时会自动生成一条指令
<%@ page language=“java” import=“java.util.*” pageEncoding=“UTF-8”%>
脚本语言:java 引用java.util包,编码格式为UTF-8
后续还会根据页面内的Java语言自动添加指令引用相应的java包。

表达式:由<%= %>包裹,用于单个值得输入,可以当成是一个输入工具。主要用于单独的运算。

小脚本:由<% %>包裹,用于java的编写,java语言定义,各种功能的实现代码,主要都编写在里面。

声明:<%! %>包裹,用于java的方法编写,其他地方可以调用此处写的方法。

注释:JSP中有两种注释,一种是服务器注释,一种是普通注释。普通注释是在html中经常用的<!-- --》(只能打中文反括号,打英文的会真的注释掉)注释,在访问网页时查看源代码也可以查看到;还有一种<%-- --%>服务器端注释,这种注释只有在服务器端才能查看,别人访问网页时无法看到这种注释。
当然还有一些变成语言常用的注释,比如单行// 多行/**/就不解释了。

本周学习比较重要的学习到了Cookie和session配合application的存储方式。
使用上述方法做一个登陆跳转
首先是Cookie

<form action="show.jsp" method="post">
		<label>账号:</label>
		<input type="text" id="txtLoginID" name="txtLoginID" value="<%=LoginID%>"/><br />
		<label>密码:</label>
		<input type="password" id="txtLoginPWD" name="txtLoginPWD" value="<%=LoginPWD%>"/><br />
		<input type="checkbox" id= "chkSave" name = "chkSave" value="ture">记住密码<br>
			<input type="submit" value="登录"/>
		</form>

使用form表单将输入的数据提交到show页面,show页面要使用request来进行接受数据

		String LoginID=null;String LoginPWD=null;
		LoginID= request.getParameter("txtLoginID");
    	LoginPWD= request.getParameter("txtLoginPWD");

接受数据到LoginID和LoginPWD然后将接受到的数据存储到Cookie,注意这里是相当于实例化了两个Cookie变量,并没有进行存储。

			Cookie loginIDCookie = new Cookie("LoginID",LoginID);
   			Cookie loginPWDCookie = new Cookie("LoginPWD",LoginPWD);

Cookie存储的参数和List类似,key值和内容,这里我们为了方便,key值和内容的变量名相同。然后要设置Cookie的存储时间,也就是它的寿命。参数以秒为单位,设置了时间后使用response中的addCookie方法将它们存储

			loginIDCookie.setMaxAge(30);
   			loginPWDCookie.setMaxAge(30);
   			response.addCookie(loginIDCookie);
   			response.addCookie(loginPWDCookie);

接下来是回到登陆页面,将Cookie中存的值拿出来

String LoginID="";String LoginPWD="";
Cookie[] cookies = request.getCookies();

这里我们定义了一个数组,用request拿出Cookie中的值赋给数组然后使用循环依次找出我们之前存储的账号和密码

	if(cookies!=null){
  			for(int i= 0;i<cookies.length;i++){
  				if(cookies[i].getName().equals("LoginID")){
  					LoginID = cookies[i].getValue();
  				}
  				if(cookies[i].getName().equals("LoginPWD")){
  					LoginPWD = cookies[i].getValue();
  				}
  			}
  			}

使用存储时使用key匹配查找,找出值后赋给之前定义的变量,再就只需要使用input中的value属性将变量给input就行了。

接下来是session存储的用法,session的寿命一般默认是20分钟,它与Cookie不同,是存储再服务器内存中,Cookie是再用户的浏览器里。
这里我们要实现的功能是记住用户登录的用户名,直接显示,若显示用户名的session为空就自动跳回登录界面。
页面还是使用表单提交数据,request接收数据,使用session.setAttribute方法将数据存入session。我这里存入session之前先创建一个用户类User,封装两个变量,用户名和密码,在接受页面new出对象

			User user = new User();
  			user.setUserID(request.getParameter("txtLoginID")) ;
  			user.setUserPWD(request.getParameter("txtLoginPWD")) ;

然后将这个对象存入session ,然后跳进用户个人中心页面

	session.setAttribute("user", user);
	response.sendRedirect("user.jsp");

然后在用户页面拿出来

 <% 
    	User user =(User)session.getAttribute("user");
    	if(user.getUserID() !=null){
    	
    		str = "欢迎用户&nbsp;<a href=\"#\">"+user.getUserID()+"</a>";
    	}
    	else{
    		str="未登录,前往<a href=\"login.jsp\">登录</a>";
    	}
    %> 

这段代码是先将session值给到对象user,判断user是否为空,若为空显示返回登录页面的a标签,若有值便显示其中的值

最后还有一个功能要使用application全局变量,application的寿命服务器关闭之前。这里我们写一个记住所有登录过的用户然后将其显示的功能。
提交表单的数据后,多加一道工序

List<String> list=(ArrayList<String>)application.getAttribute("userList");
  				 if(list==null)
  				{
  					list=new ArrayList<String>();
  				} 
  				list.add(user.getUserID());
  				application.setAttribute("userList",list);
  			} 

定义一个集合,这里先用application强转赋值给集合lishi这里就是判断application是否为空,因为我们会在后面往list中存值时使用“userlist”为key值,若为空new一个新的集合对象。然后将前面获取的user对象存储的用户名放入集合,再将集合放入application。
最后在查看所有登录过用户的页面将application的值取出来。

<%
    		String userol="";
    		List<String> list =(ArrayList<String>)application.getAttribute("userList");
    	 	if(list!=null){
    	 		for(int i =0;i<list.size();i++){
    	 			userol+=list.get(i)+"<br/>";
    	 		}
    	 	}
    	 %>

这里同样是先判断application是否有值。然后使用循环取值,不断的叠加到一个字符串变量中,最后使用表达式将其输出

 <%= userol %>
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值