文章目录
1.简介:
2.JSP+Servlet的用户登录验证
例题:jsp页面只完成提交信息和验证信息的显示,而验证过程是由servlet完成,这些组件通过request对象实现数据共享,由提交页面将数据传递给servlet,它获取并验证,根据验证结果 转向jsp
login.jsp,
这个要注意form里面action功能 一般的jsp就写自己的名,然后这里需要写成servlet的java名字
<%@ page language="java" pageEncoding="UTF-8" import="java.util.*" %>
<html>
<head> <title>登录页面</title> </head>
<boby>
<form action="Check_Servlet" method="post">
请输入用户名:<input type="text" name="username"><br>
    请输入密码:<input type="text" name="password"><br>
      <input type="submit" value="登录">   
<input type="reset">
</form>
</boby>
</html>
Check_Servlet
package Servlet0;
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;
@WebServlet("/Check_Servlet")
public class Check_Servlet extends HttpServlet
{
private static final long serialVersionUID = 1L;
public Check_Servlet()
{
super();
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// response.getWriter().append("Served at: ").append(request.getContextPath());
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
// TODO Auto-generated method stub
//doGet(request, response);
String userName=request.getParameter("username");
String passWord=request.getParameter("password");
String infor="";
if(userName.equals("1")&&passWord.equals("1"))
infor="欢迎您 "+userName+"~~~~~~~~~";
else
infor="用户名或者密码不正确";
request.setAttribute("Message",infor);
request.getRequestDispatcher("/Infor.jsp").forward(request, response);
}
}
infor.jsp
<%@ page language="java" pageEncoding="UTF-8" import="java.util.*" %>
<html>
<head> <title>系统显示页面</title> </head>
<boby>
<%=request.getAttribute("Message")%>
</boby>
</html>
3.Servlet常用对象及其方法
4.JSP与Servelet的数据共享
4.1 基于请求的数据共享(request)
4.1.1 共享请求参数数据
共享请求参数的共享过程为参数的传递,保存,获取。
(1)请求参数的传递有四种传递方式
① 通过表单提交后,由表单action属性指定进入的页面或者servlet,他们所接受的表单数据,也就是请求参数数据。
② 带参数的超链接所传递的参数也是请求参数。
③ 在地址栏中输入的参数也是请求参数。
④ 在jsp中,利用forward或include动作时,利用参数子动作标签所传递的数据也是请求参数。
(2)请求参数的获取
通过request/HttpServletRequest的实例,利用getParameter()方法获取,其格式为:
String request.getParameter("参数名")
4.1.2请求属性数据
(1)请求属性数据的形成于保存
通过request/HttpServletRequest的实例,利用setAttribute()方法形成属性及其属性值并保存
request.getAttribute("属性名","属性值")
(2)请求数据的获取
对象类型 (强制类型转换)request.getAttribute("属性名")
(3)若不想共享某属性,删除格式为
request.removeAttribute("属性名")
4.2 基于会话的数据共享
4.2.1 会话属性数据的形成与保存
通过session / HttpSession实例对象
session.setAttribute("属性名","属性值")
获取HTTPSession的实例对象的语句为:
HttpSession request.getSession(boolean create)
功能:返回对象,如果没有任何HttpSession对象关联,那么当create为true时,创建一个HTTPSession对象并返回,反之 返回null
4.2.2 会话属性数据的获取
会话属性数据在另一个组件中,获取属性数据的格式
对象类型(强制类型转换)session.getAttribute("属性名")
4.2.3 删除共享会话属性
session/application.removeAttribute("属性名");
4.3 基于应用的数据共享
4.3.1 应用属性数据的形成与保存
通过application或ServletContext的实例对象,利用setAttribute()
application.setAttribute("属性名","属性值");
注意:对于Servlet组件,首先要获取ServletContext的实例对象
ServletContext application=this.getServletContext()
4.3.2 应用属性数据的获取
应用属性数据在另一个组件中获取属性数据的格式
对象类型(强制类型转换)application.getAttribute("属性名")
4.3.3 删除共享应用属性
application.removeAttribute("属性名")
5. JSP Servlet的关联关系
5.1 JSP 页面调用Servlet
提交表单 超链接
(1)提交表单
<form action="servlet 访问地址">....</form>
(2) 超链接调用
<a href="servlet访问地址">提示信息></a>
或者
<a href="servlet 访问地址"?要传递的参数>提示信息</a>
5.2Servlet跳转到JSP页面
两种方式:转向和重定向
①转向
是在一个Web工程内部,各组件之间的调用,在调用时,request对象中的信息不丢失,进入另一个组件后,request对象中的数据可以在新的组件中继续使用。
在servlet中实现转向,需要由请求对象(HTTPServlet request)获取一个转发对象(RequestDispatcher rd),然后由转发对象调用转向方法forword()实现。
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
RequestDispatcher rd=request.getRequestDispatcher(“jsp 网页”).forward(request,response);
//实现转向的关键代码,当转向后其后的代码不再执行。
}
② 重定向
重定向使用响应对象(HTTPServletResponse response)中的sendRedirect方法
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
response.sendRedirect(“JSP 网页地址”)
//当重定向后其后的代码不再执行。
}