html之使用session进行服务器之间的跳转以及记录

从登陆页面登录成功后来到专家浏览页面,同时在会话session中创建三个属性,分别保存用户名、点击浏览的专家id和浏览的专家记录数。

(假设合法用户信息为:张三,123456)

制作处理登录的Servlet,即我这里的ZjllServlet;

我创建的第一个servlet名字叫做ZjllServlet,用于获取用户从登录页面输入的用户名和密码,下面的代码并不是全文的代码,而是文件ZjllServlet.java文件中的doGet方法中的代码,因为每个人创建的包名以及方法个数不同:

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		//response.getWriter().append("Served at: ").append(request.getContextPath());
		String yonghu=request.getParameter("yonghu");
		String mima=request.getParameter("mima");
		if (yonghu.equals("张三") && mima.equals("123456")) {  //如果用户名为admin,且密码为123456登陆成功页面
			HttpSession session=request.getSession();//获取session
			session.setAttribute("yonghu",yonghu);
			session.setAttribute("id","");
			session.setAttribute("number",0);
			String URL=response.encodeURL("Zjll");
			response.sendRedirect(URL);
		} else {
			response.sendRedirect("error.html");  //返回错误页面
		}
	}

 从上面的代码中可以看见我们写了一个名叫Zjll的URL,这个和web.xml中的配置有关,需要和下面红框的部分保持一致的名字,并且通过Zjll重定向到另一个servlet页面中,下面的就是web.xml中的这一部分的配置文件:

<servlet>
    <servlet-name>Zjll</servlet-name>
    <servlet-class>edu.servlet.request.JiluServlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>Zjll</servlet-name>
    <url-pattern>/Zjll</url-pattern>
</servlet-mapping>

然后需要另一个servlet,我命的名叫做JiluServlet.java,就是登陆成功后使用session的setAttribute方法将用户名yonghu、点击浏览的专家mima(初始值为空字符串)和浏览专家数number(初始值为0)放入会话中:

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		//response.getWriter().append("Served at: ").append(request.getContextPath());
		request.setCharacterEncoding("UTF-8");  //中文乱码的处理
		response.setContentType("text/html;charset=UTF-8");
		PrintWriter out=response.getWriter();
		String[] dep= {"皮肤科","妇产科","神经内科","泌尿外科"};
		String[][] images= {{"人像1.jpg","人像2.jpg","人像3.jpg","人像4.jpg"},
							{"人像4.jpg","人像1.jpg","人像2.jpg","人像3.jpg"},
							{"人像4.jpg","人像3.jpg","人像2.jpg","人像1.jpg"},
							{"人像4.jpg","人像2.jpg","人像3.jpg","人像1.jpg"}};
		String[][] names= {{"张三","李四","王五","敖某"},
				          {"呆呆","wq","vvq","邓某"},
				          {"邓三","冷少","铁蛋","铁柱"},
				          {"刘某","梁某","冷某","敖二"}};
		HttpSession session=request.getSession();
		if (session.getAttribute("yonghu").equals("张三")) {
			String recURL=response.encodeURL("rec");
			String backURL=response.encodeURL("back");
			out.println("<!DOCTYPE html>");
			out.println("<html>");
			out.println("<head>");
			out.println("<meta charset=\'UTF-8\'>");
			out.println("<title>科室专家</title>");
			out.println("<link rel=\'stylesheet\' type=\'text/css\' href=\'erjidaohanglan.css\'>");
			out.println("<body bgcolor=\"lightblue\"></body>");
			out.println("</head>");
			out.println("<body>");
			out.println("<div class=\'top\'>欢迎光临,"+session.getAttribute("yonghu").toString()+"!&nbsp;&nbsp;&nbsp;&nbsp;您目前<a href=\""+recURL+"\">浏览的专家记录为:&nbsp;&nbsp;"+session.getAttribute("number").toString()+"&nbsp;&nbsp;条</a>"+"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href=\""+backURL+"\">退出</a></div>");
			out.println("<div class=\'content\'>");
			for (int k=0;k<=3;k++) {
				out.println("<div class=\"ti\">"+dep[k]+"</div>");
				int len=images[k].length;
				int rows=(len%4==0)?len/4:len/4+1;
				for (int i=0;i<rows;i++) {
					out.println("<div class=\"clearfix\">");
					for (int j=0;j<=3;j++) {
						int c=i*4+j;
						if (c<=len-1) {
							String einf="einf?pid="+k+"&eid="+c;
							String einfURL=response.encodeURL(einf);
							out.println("<div class=\"img-container\">");
							out.println("<a href=\""+einfURL+"\"><img src=\"image/"+images[k][c]+"\"></a>");
							out.println("<p><a href=\""+einfURL+"\">"+names[k][c]+"</a></p>");
							out.println("</div>");  
						} else { 
							break;
						}
					}
					out.println("</div>");
					out.println("<hr>");
				}
			}
			
			out.println("</body>");
			out.println("<html>");
			out.flush();
			out.close();
		} else {
			response.sendRedirect("denglu.html");
			return;
		}
		
	}

上面的代码所展现出来的页面如下图:

 上面的代码中有一个einf,用于点击图片或者文字跳转到另一个页面也就是单人介绍的页面DanrenServlet,所以需要在web.xml中配置该路径:

   <servlet>
    	<servlet-name>einf</servlet-name>
    	<servlet-class>edu.servlet.request.DanrenServlet</servlet-class>
   </servlet>
   <servlet-mapping>
    	<servlet-name>einf</servlet-name>
    	<url-pattern>/einf</url-pattern>
   </servlet-mapping>

配置该路径之后随意点击一个图片或者名字,都会进入下一个页面DanrenServlet:

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		//response.getWriter().append("Served at: ").append(request.getContextPath());
		request.setCharacterEncoding("UTF-8");  //中文乱码的处理
		response.setContentType("text/html;charset=UTF-8");
		PrintWriter out=response.getWriter();
		String[] dep= {"皮肤科","妇产科","神经内科","泌尿外科"};
		String[][] images= {{"人像1.jpg","人像2.jpg","人像3.jpg","人像4.jpg"},
							{"人像4.jpg","人像1.jpg","人像2.jpg","人像3.jpg"},
							{"人像4.jpg","人像3.jpg","人像2.jpg","人像1.jpg"},
							{"人像4.jpg","人像2.jpg","人像3.jpg","人像1.jpg"}};
		String[][] names= {{"张三","李四","王五","敖某"},
				          {"呆呆","wq","vvq","邓某"},
				          {"邓三","冷少","铁蛋","铁柱"},
				          {"刘某","梁某","冷某","敖二"}};
		String[][] info= {
				{"皮肤科教授,主任医师,博士,博士生导师,现任重庆医科大学附属第一医院皮肤科主任;中国现任医学会皮肤科科长,市先进人才。","皮肤科教授,主任医师,博士,博士生导师,现任重庆医科大学附属第一医院皮肤科主任;中国现任医学会皮肤科科长,市先进人才。","皮肤科教授,主任医师,博士,博士生导师,现任重庆医科大学附属第一医院皮肤科主任;中国现任医学会皮肤科科长,市先进人才。","皮肤科教授,主任医师,博士,博士生导师,现任重庆医科大学附属第一医院皮肤科主任;中国现任医学会皮肤科科长,市先进人才。"},
				{"张三","李四","王五","敖某"},
				{"邓三","冷少","铁蛋","铁柱"},
				{"刘某","梁某","冷某","敖二"}};
		HttpSession session=request.getSession();
		if(session.getAttribute("yonghu").equals("张三")) {
			String pid=request.getParameter("pid");
			String eid=request.getParameter("eid");
			String nid=pid+eid;
			String oid=(String)session.getAttribute("id");
			if(oid.indexOf(nid)==-1) {
				int number=(int)session.getAttribute("number")+1;
				session.setAttribute("number",number);
				if(!"".equals(oid)) {
					nid=oid+","+nid;
				}
				session.setAttribute("id",nid);
			}
			
			  String recURL=response.encodeURL("rec"); 
			  String backURL=response.encodeURL("back"); 
			  String URL=response.encodeURL("Zjll");
			 
			out.println("<!DOCTYPE html>");
			out.println("<html>");
			out.println("<head>");
			out.println("<meta charset=\"UTF-8\">");
			out.println("<title>显示科室专家</title>");
			out.println("<link rel=\"stylesheet\" type=\"text/css\" href=\"erjidaohanglan.css\">");
			out.println("<body bgcolor=\"lightblue\"></body>");
			out.println("</head>");
			out.println("<body>");
			out.println("<div class=\"top\">欢迎光临,"+session.getAttribute("yonghu").toString()+
					"!&nbsp;&nbsp;&nbsp;&nbsp;您目前<a href=\"" +recURL +"\">浏览的专家记录为:&nbsp;&nbsp;"+
					session.getAttribute("number").toString()+"&nbsp;&nbsp;条</a>"+
					"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href=\"" +backURL +"\">退出</a></div><hr>");
			out.println("<div class=\"content\">");
			out.println("<h2>科室:"+dep[Integer.parseInt(pid)]+"&nbsp;&nbsp;&nbsp;&nbsp;姓名:"+names[Integer.parseInt(pid)][Integer.parseInt(eid)]+"</h2>");
			out.println("<hr><p class=\"back\"><a href=\"" +URL +"\">&lt;&lt;&lt;返回</a></p>");
			out.println("<img src=\"image/"+images[Integer.parseInt(pid)][Integer.parseInt(eid)]+"\">");
			out.println("<p class=\"info\">"+info[Integer.parseInt(pid)][Integer.parseInt(eid)]+"</p></div>");
			out.println("</body>");
			out.println("</html>");
			out.flush();
			out.close();
		}else {
			response.sendRedirect("denglu.html");
			return;
		}
	}

然后这个页面所出来的成果就是如图:

接下来我们要展示的页面就是浏览历史记录的页面,即LljlServlrt.java;

首先使用rec对页面进行跳转,每一个页面中点击浏览的链接都是进入到浏览历史的界面:

   <servlet>
    	<servlet-name>rec</servlet-name>
    	<servlet-class>edu.servlet.request.LljlServlet</servlet-class>
   </servlet>
   <servlet-mapping>
    	<servlet-name>rec</servlet-name>
    	<url-pattern>/rec</url-pattern>
   </servlet-mapping>

然后用下面的代码进行输出页面: 

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		//response.getWriter().append("Served at: ").append(request.getContextPath());
		request.setCharacterEncoding("UTF-8");  //中文乱码的处理
		response.setContentType("text/html;charset=UTF-8");
		PrintWriter out=response.getWriter();
		String[] dep= {"皮肤科","妇产科","神经内科","泌尿外科"};
		String[][] images= {{"人像1.jpg","人像2.jpg","人像3.jpg","人像4.jpg"},
							{"人像4.jpg","人像1.jpg","人像2.jpg","人像3.jpg"},
							{"人像4.jpg","人像3.jpg","人像2.jpg","人像1.jpg"},
							{"人像4.jpg","人像2.jpg","人像3.jpg","人像1.jpg"}};
		String[][] names= {{"张三","李四","王五","敖某"},
				          {"呆呆","wq","vvq","邓某"},
				          {"邓三","冷少","铁蛋","铁柱"},
				          {"刘某","梁某","冷某","敖二"}};
		HttpSession session=request.getSession();
		if (session.getAttribute("yonghu").equals("张三")) {
			String recURL = response.encodeURL("rec");
			String backURL = response.encodeURL("back");
			String URL = response.encodeURL("Zjll");
			out.println("<!DOCTYPE html><html><head><meta charset=\"UTF-8\">");
	        out.println("<title>显示科室专家</title>");
	        out.println("<body bgcolor=\"lightblue\"></body>");
	        out.println("<link type=\"text/css\" rel=\"stylesheet\" href=\"erjidaohanglan.css\">");
	        out.println("<div class=\'top\'>欢迎光临,"
	    			+session.getAttribute("yonghu").toString()+
	    			"!&nbsp;&nbsp;&nbsp;&nbsp;您目前<a href=\""+recURL+"\">浏览的专家记录为:&nbsp;&nbsp;"
	    			+session.getAttribute("number").toString()+
	    			"&nbsp;&nbsp;条</a>"+"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href=\""+
	    			backURL+"\">退出</a></div>");
	        out.println("<div class=\"content\">");
	        String id = (String)session.getAttribute("id");
	        if(!"".equals(id)) {
	        	String[] nid = id.split(",");
				for(int i=0;i<=nid.length-1;i++) {
					int pid = Integer.parseInt(nid[i].substring(0,1));
					int eid = Integer.parseInt(nid[i].substring(1));
					out.println("<img src=\"image/"+images[pid][eid]+"\">");
					out.println("<div class=\" message \">科室名:"+dep[pid]+"---专家姓名:"+names[pid][eid]+"</div><hr>");
				}
				out.println("<p class=\"back\"><a href=\""+URL+"\">&nbsp;&nbsp;&nbsp;&nbsp;返回</a></p>");
		    }else {
				out.println("<h2>用户您好,您还没有浏览记录!</h2>");   
		        out.println("<hr><p class=\"back\"><a href=\""+URL+"\">&nbsp;&nbsp;&nbsp;&nbsp;返回</a></p>");
			}
	        out.println("</div></body></html>");
		}
	}

输出的结果如图:

最后一个页面是点击退出,然后返回登录页面的代码,我创建的servlet叫做LogOutServlet.java:

依旧要使用back在web.xml中进行重定向:

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		//response.getWriter().append("Served at: ").append(request.getContextPath());
		HttpSession inv = request.getSession();
		inv.invalidate();   //废弃当前会话对象
		response.sendRedirect("denglu.html");
		return;

	}
   <servlet>
    	<servlet-name>back</servlet-name>
    	<servlet-class>edu.servlet.request.LogOutServlet</servlet-class>
   </servlet>
   <servlet-mapping>
    	<servlet-name>back</servlet-name>
    	<url-pattern>/back</url-pattern>
   </servlet-mapping>

点击退出返回登录的页面: 

还有一个我代码中涉及到的css文件内容如下,名字为erjidaohanglan.css:

@charset "UTF-8";
* {
  box-sizing: border-box;
}
body {
  text-align:center;
}
.clearfix::after {
  content: "";
  clear: both;
  display: table;
}

.content .ti {
		width:100%;
		text-align:center;
		font-size:25px;
		color:white;
		background-color: blue;
		padding:10px;}
.content img {
		width:160px;
		height:180px;}
.img-container {
		text-align: center;
		float: left;
  		width: 25%;
  		padding: 5px;}

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值