JSP的Session对象和Application对象
Session对象
简介
- session就是会话,JSP利用servlet提供的Session接口来识别一个用户,跟踪用户的操作状态,存储这个用户的所有访问信息。
- 生命周期:从用户访问站点时,系统就会实例化一个Session对象,直到该用户退出网站,该Session对象才会随之消失。
使用Session传递数据
- 使用setAttribute和getAttribute方法
- 代码示例
session.getAttribute("user");
request.getSession().setAttribute("user", user);
Application对象
简介
- application对象用于保存本网站的公用数据,服务于整个服务端。
- 生命周期:服务器启动后,会自动创建application对象,只要没有关闭服务器,它就会一直存在,所有用户共享此对象。
使用 Application传递数据
- 使用setAttribute和getAttribute方法
- 代码示例
int number =0;
ServletContext application = this.getServletContext();
if(application.getAttribute("userNumber")!=null){
number=(Integer)application.getAttribute("userNumber");
}
number++;
application.setAttribute("userNumber", number);
Servlet类
简介
- Servlet(Server Applet),是在服务器上运行的小程序,它的本质上是一个Java类。
- Servlet可以处理逻辑,它也可以用来展示页面。但我们一般用它来进行逻辑处理,使用JSP来展示数据
- JSP本质上也是一个Servle。
代码示例
package com.sikiedu.servlet;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.sikiedu.util.DBUtil;
@WebServlet("/register_do")
public class RegisterServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
public RegisterServlet() {
super();
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String username =request.getParameter("username");
String password =request.getParameter("password");
int age =Integer.parseInt(request.getParameter("age"));
String sex = new String(request.getParameter("sex").getBytes("iso-8859-1"),"utf-8");
boolean isSuccess = DBUtil.addUser(username,password,age,sex);
if(isSuccess){
request.setAttribute("message","注册成功,请登录!");
response.sendRedirect("login.jsp");
}else{
request.setAttribute("message","注册失败,用户名重复!");
request.getRequestDispatcher("register.jsp").forward(request,response);
}
}
}
- 在doGet 和doPost方法中写入逻辑处理代码,根据Get和Post方式选择。
路径声明
@WebServlet("/register_do")
<servlet>
<servlet-name>LoginServlet</servlet-name>
<servlet-class>com.sikiedu.servlet.LoginServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>LoginServlet</servlet-name>
<url-pattern>/login_do</url-pattern>
</servlet-mapping>