欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

学习笔记----------jsp中request请求与response响应

程序员文章站 2022-03-11 19:14:16
...


什么是jsp?

jsp: java server page

简而言之,就是java服务器页面,里面可以写前端html,js,css以及后台java语言,进行前端请求服务器数据,服务器响应前端请求,达到数据交互的效果.


1.在编辑器中写一个登录界面login.jsp,这里为了演示,只写了登录id与登录password的的表单提交

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
    <form action="loginServlet.jsp" method="post">
        请输入账号:<input type="text" name="userid"/>
        请输入密码:<input type="password" name="userpwd"/>
        <input type="submit" value="提交"/>
    </form>
</body>
</html>

3.写一个主页 index.jsp 用于登录成功之后的跳转演示

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
    如果你看到了我这行字,说明你登录成功了...
</body>
</html>

2.再写一个服务器端界面 loginServlet.jsp,用于对客户端请求做出响应
后台代码需要写在<% %>中

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
    <%
        //获取用户端表单提交过来的数据 userid
        String userid = request.getParameter("userid");
        //获取用户端表单提交过来的数据 userpwd
        String userpwd = request.getParameter("userpwd");
        //本来这里的id和密码均由数据库提供,但是鉴于本篇笔记只学习request请求与response响应,就假设id和password
        if(userid.equals("admin")&&userpwd.equals("123456")){
            //登陆成功,跳转到主页index.jsp
            response.sendRedirect("index.jsp");
        } else {
            //登录失败,返回原地址login.jsp
            //response.sendRedirect("login.jsp");
        }
    %>
</body>
</html>

启动服务器,运行结果如下
网址栏地址:
学习笔记----------jsp中request请求与response响应
登录页面效果:
学习笔记----------jsp中request请求与response响应
输入正确的账号admin与密码123456
学习笔记----------jsp中request请求与response响应
点击提交之后,地址栏跳转到index.jsp页面
学习笔记----------jsp中request请求与response响应
页面效果
学习笔记----------jsp中request请求与response响应
4.假如登录失败,页面跳转回login.jsp页面,这样没有任何提示语句,用体验将会不好,这个时候需要我们在登录失败之后传递一句话给login.jsp页面,提示用户账户或者密码输入有误
修改之前登录失败:
学习笔记----------jsp中request请求与response响应
学习笔记----------jsp中request请求与response响应
这个时候需要将loginServlet.jsp页面登录失败的代码修改为:

//登录失败,不带数据过去,返回原地址
//response.sendRedirect("login.jsp");
//登录失败,需要带数据过去,由于数据为loginservlet页面的局部变量
//将login.jps复制到loginservlet页面使用此数据
request.setAttribute("msg", "登录失败");
request.getRequestDispatcher("login.jsp").forward(request, response);

由于需要在原页面的基础上显示数据,则原页面login.jsp中的form表单中需要加上代码:

<% if(request.getAttribute("msg")!=null){ %>
<div><%=request.getAttribute("msg").toString()%></div>
<%} %>

输入错误的账号密码:
学习笔记----------jsp中request请求与response响应
地址栏并没有跳转回原地址login.jsp,仍然停留在服务器loginServlet.jsp页面
学习笔记----------jsp中request请求与response响应
提示语句登录失败也显示出来
学习笔记----------jsp中request请求与response响应

总结:jsp中用户端请求需要用到request,用户端提交表单之后,服务器通过request.getParameter(“name”),获取表单中的数据,服务器可以将这些数据放入数据库,也可以将这些数据与数据库读取的数据进行比较与判断,对用户端做出响应,服务器做出响应用到response,页面跳转用到response.sendRedirect(“地址”),如果这个时候服务器做出的响应需要将自己生成的提示性数据或者将数据库读取出来的数据传递给页面用于显示,则需要将原页面复制一份到本页面,用于使用该数据,这个时候用到request.setAttribute(“msg”, “自己生成的数据或者数据库读取的数据”);request.getRequestDispatcher(“需要复制的页面”).forward(request, response);用户端代码获取这些数据用于显示

提示:在编辑器中添加tomcat服务器之后,加入不对tomcat中文编码设置,可能会出现中文乱码的问题,应该在服务器第一次使用之前,配置服务器中文编码,让其与代码编辑器和html中文编码相同
学习笔记----------jsp中request请求与response响应

相关标签: jsp