使用监听器技术,实现统计网址登录的在线人数和在线用户列表
1.创建一个userCount监听类
public class userCount implements HttpSessionListener {
// 用于统计在线人数
private int count = 0;
//创建session监听,一旦创建session就触发一次这个事件
@Override
public void sessionCreated(HttpSessionEvent se) {
// session对象创建时count变量加1
count++;
// 获取容器上下文对象
ServletContext context = se.getSession().getServletContext();
// 重置计数器值
context.setAttribute("count", new Integer(count));
}
//销毁session监听,一旦销毁session就会触发一次这个事件
@Override
public void sessionDestroyed(HttpSessionEvent se) {
// session对象销毁时count变量减1
count--;
ServletContext context = se.getSession().getServletContext();
context.setAttribute("count", new Integer(count));
}
}
2.将上面的类在web.xml中配置好
<!--注册监听器-->
<listener>
<listener-class>alva.userCount</listener-class>
</listener>
3.显示页面
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>login</title>
</head>
<body>
<h2>当前在线人数: <span><%=application.getAttribute("count")%> </span></h2>
</body>
</html>
效果:
收获:
理解session是什么时候创建的?
并不是当用户向服务器发起请求时,这个session便会立刻建立起来,注意上的se.getSession(),如果当前没有session,则会立刻建立一个session;如果有session则返回当前session
编写JSP程序使用application 内置对象存储当前页面被访问的次数并输出到页面
这是一个页面计数器
1.制作一个计数页面
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>计数页面</title>
</head>
<body>
<%
int count = 1;//初始化次数
String count_name = request.getParameter("count_name");
try{
count = Integer.parseInt(application.getAttribute(count_name).toString());
}catch (Exception e){}
out.println("此页面访问量为"+count);
count++;//访问一次就增加一次
application.setAttribute("count_name",new Integer(count));//再将新的值存入参数中
%>
</body>
</html>
2.在主页面引入计数页面实现展示
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>login</title>
</head>
<body>
<h2>使用计数页面来展示访问次数</h2>
<%-- 引入--%>
<jsp:include page="pageCount.jsp">
<jsp:param name="count_name" value="index"/>
</jsp:include>
</body>
</html>
编写jsp页面或servlet实现用户登录功能
这里使用jsp很简单
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>login</title>
</head>
<body>
<h2>登录</h2>
<form action="hello.jsp" method="post">
用户名: <input type="text" name="username"> <br>
密码: <input type="password" name="password"> <br>
<input type="submit">
</form>
</body>
</html>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>hello</title>
</head>
<body>
你好! <%=request.getParameter("username")%>
</body>
</html>
请在JSP页面中完成1至50内偶的和,要求在声明脚本中定义求和方法,使用表达式输出结果
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>login</title>
</head>
<body>
<h2>请在JSP页面中完成1至50内偶的和,要求在声明脚本中定义求和方法,使用表达式输出结果</h2>
<%!
public int sum = 0;
public int getsum(){
for (int i = 2; i <=50 ; i+=2) {
sum += i;
}
return sum;
}
%>
1至50内偶的和为:<%=getsum()%>
</body>
</html>
编写JSP页面分别显示1至5每个数字的阶乘,要求在声明脚本中定义求阶乘的方法
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>login</title>
</head>
<body>
<h2>编写JSP页面分别显示1至5每个数字的阶乘,要求在声明脚本中定义求阶乘的方法</h2>
<%!
public int getjiechen(int num){
int jiechen = 1;
for (int i = num; i >=1 ; i--) {
jiechen *=i;
}
return jiechen;
}
%>
1的阶乘:<%=getjiechen(1)%> <br>
2的阶乘:<%=getjiechen(2)%> <br>
3的阶乘:<%=getjiechen(3)%> <br>
4的阶乘:<%=getjiechen(4)%> <br>
5的阶乘:<%=getjiechen(5)%> <br>
</body>
</html>
创建一个名为Studentjava的Bean,用来描述学生的信息,分别是姓名,学号,年龄在一个名为studentisp的页面中输入姓名,工号,身高,体重提交到servlet中对Student对象进行实例化。要求编写Student类studentisp文件,servlet类
student类
public class Student {
private String name;//姓名
private String stuId;//学号
private int age;//年龄
public Student() {
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getStuId() {
return stuId;
}
public void setStuId(String stuId) {
this.stuId = stuId;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
student的servlet类,用来接收参数,初始化student类并且在页面中显示
public class StudentServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String name = req.getParameter("name");
String stuId = req.getParameter("stuId");
Integer age = Integer.valueOf(req.getParameter("age"));
Student student = new Student();
student.setName(name);
student.setStuId(stuId);
student.setAge(age);
resp.setContentType("text/html;charset=UTF-8");
PrintWriter writer = resp.getWriter();
writer.write("学生姓名"+student.getName()+"=====");
writer.write("学生工号"+student.getStuId()+"=====");
writer.write("学生年龄"+student.getAge()+"=====");
}
}
配置这个servlet
<servlet>
<servlet-name>Student</servlet-name>
<servlet-class>alva.StudentServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Student</servlet-name>
<url-pattern>/student</url-pattern>
</servlet-mapping>
输入参数的页面
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>login</title>
</head>
<body>
<h2>输入信息,进行提交</h2>
<form action="http://localhost:8099/work1/student" method="get">
姓名:<input type="text" name="name"><br/>
工号:<input type="text" name="stuId"><br/>
年龄:<input type="text" name="age" ><br/>
<input type="submit">
</form>
</body>
</html>
整个的流程就是先输入参数,然后提交到servlet类中,初始化student类的属性值,之后再回显