从登陆页面登录成功后来到专家浏览页面,同时在会话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()+"! 您目前<a href=\""+recURL+"\">浏览的专家记录为: "+session.getAttribute("number").toString()+" 条</a>"+" <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()+
"! 您目前<a href=\"" +recURL +"\">浏览的专家记录为: "+
session.getAttribute("number").toString()+" 条</a>"+
" <a href=\"" +backURL +"\">退出</a></div><hr>");
out.println("<div class=\"content\">");
out.println("<h2>科室:"+dep[Integer.parseInt(pid)]+" 姓名:"+names[Integer.parseInt(pid)][Integer.parseInt(eid)]+"</h2>");
out.println("<hr><p class=\"back\"><a href=\"" +URL +"\"><<<返回</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()+
"! 您目前<a href=\""+recURL+"\">浏览的专家记录为: "
+session.getAttribute("number").toString()+
" 条</a>"+" <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+"\"> 返回</a></p>");
}else {
out.println("<h2>用户您好,您还没有浏览记录!</h2>");
out.println("<hr><p class=\"back\"><a href=\""+URL+"\"> 返回</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;}