JSP的Session对象和Application对象
程序员文章站
2022-03-25 16:42:02
...
JSP的Session对象和Application对象
Session对象
简介
- session就是会话,JSP利用servlet提供的Session接口来识别一个用户,跟踪用户的操作状态,存储这个用户的所有访问信息。
- 生命周期:从用户访问站点时,系统就会实例化一个Session对象,直到该用户退出网站,该Session对象才会随之消失。
使用Session传递数据
- 使用setAttribute和getAttribute方法
- 代码示例
//JSP中的写法
session.getAttribute("user");
//servlet类中的写法
request.getSession().setAttribute("user", user);
Application对象
简介
- application对象用于保存本网站的公用数据,服务于整个服务端。
- 生命周期:服务器启动后,会自动创建application对象,只要没有关闭服务器,它就会一直存在,所有用户共享此对象。
使用 Application传递数据
- 使用setAttribute和getAttribute方法
- 代码示例
//servlet中的写法,JSP中可直接调用application
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;
/**
* Servlet implementation class RegisterServlet
*/
@WebServlet("/register_do") //注解
public class RegisterServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public RegisterServlet() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
// protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// // TODO Auto-generated method stub
// response.getWriter().append("Served at: ").append(request.getContextPath());
// }
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
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"));
//使用getBytes解码,再通过new String编码为utf-8格式
String sex = new String(request.getParameter("sex").getBytes("iso-8859-1"),"utf-8");
boolean isSuccess = DBUtil.addUser(username,password,age,sex);
// if(isSuccess){
// out.println("<font color ='green'>注册成功</font>");
// }else{
// out.println("<font color ='red'>注册失败</font>");
// }
//请求转发
if(isSuccess){
//返回login.jsp给客户端,请求转发
request.setAttribute("message","注册成功,请登录!");
//重定向
response.sendRedirect("login.jsp");
// //请求转发
// request.getRequestDispatcher("login.jsp").forward(request,response);
}else{
request.setAttribute("message","注册失败,用户名重复!");
request.getRequestDispatcher("register.jsp").forward(request,response);
}
}
}
- 在doGet 和doPost方法中写入逻辑处理代码,根据Get和Post方式选择。
路径声明
- 注解方式
@WebServlet("/register_do") //注解
- xml中声明
<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>
上一篇: MySQL之视图
下一篇: JavaWeb:Servlet的映射细节