java 从零开始,学习笔记之基础入门(二十六)

时间:2021-11-11 19:42:58

 jsp

Jsp (javaServer page)

   主要是用来接收客户端的请求,然后对此jsp文件进行编译生成一个servlet文件,然后再执行编译之后的文件,处理之后得到对应的处理之后的资源,然后将资源返还给客户端,中间就涉及到客户端和服务器之间值的传递,那么可以采用的方式二种,一种是在传递的地址栏进行拼接传值  一种是使用jsp的内置对象进行传值

 

<a   href="secondtest.jsp?name=admin"></a>

 

<form  action="secondtest.jsp">

     <input  type="text"  name="name" value="admin">

     <input  type="submit"  value="提交"/>

  </form>

在secondtest页面接收值都采用

<%=request.getParameter("name")%>

Jsp的内置对象有9个 

  request, response, out, session, application, config, pagecontext, page, exception. 

1        request对象 

主要是当客户端向服务端发送数据的时候,将传递的值放在request对象中去,服务端接收到客户端的请求,可以从request对象中取出客户端传递过来的值

 Request是ServletRequest对象 ,那么我们需要创建对应的请求对象来接收客户端的值

 

<body>

     <form action="test.jsp" method="post">

      用户名:<input type="text" name="uname"/>

       <input   type="submit" value="提交"/>

   

    </form>

 

</body>

Test.jsp

<body>

   页面传递过来的值通过从request对象中取出:

   <%

     String  name=request.getParameter("uname");

   %>

   <%=name%>

 

  </body>

如果以后服务端接收客户端的值出现了中文乱码,那么就需要对接收过来的乱码值进行转码

String  n=new  String(name.getBytes("iso-8859-1"),"gbk");

常用到的一些request请求的方法 ,可以获取到一些资源

 

. request的设置和取值:

<%@ page contentType="text/html; charset=utf-8" language="java" import="java.sql.*" errorPage="" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<title>无标题文档</title>

</head>

 

<body>

<%

  //request对象中放值

  request.setAttribute("s,","ibm");

  request.setAttribute("a","admin");

%>

 

<%

  //rquest对象中取值

  String s = (String)request.getAttribute("s");

  String n = (String) request.getAttribute("a");

%>

 

s的值:<%=s%>

n的值:<%=n%>

</body>

</html>

 

传递表单,常规获值和枚举获取值:

<html>

<head>

 

<title>无标题文档</title>

</head>

 

<body>

  <form action="requestDemo06.jsp" method="post">

  用户名:<input type="text" name="uname" /><br/>

  &nbsp;&nbsp;&nbsp;&nbsp;别:<input type="radio" name="sex" value="boy" />

       <input type="radio" name="sex" value="girl" /><br/><br/>

  &nbsp;&nbsp;&nbsp;&nbsp;:<select name="classes">

          <option value="one">一年级</option>

          <option value="two">二年级</option>

          <option value="three">三年级</option>

          <option value="four">四年级</option>

      </select><br/><br/>

  &nbsp;&nbsp;&nbsp;&nbsp;明:<br/><br/><textarea cols="10" rows="5" name="manyinfo">

       </textarea><br/><br/>

      <input type="submit" value="提交" />

      <input type="reset"  value="重置" />

  </form>

</body>

</html>

<%@ page contentType="text/html; charset=utf-8" language="java" import="java.sql.*" errorPage="" %>

<html>

<head>

<title>无标题文档</title>

</head>

 

<body>

 

<%

    //接收客户端表单提交过来的值

       //取到用户名

       String name=request.getParameter("uname");

       //接收性别

       String sex=request.getParameter("sex");

       //接收班级

       String classes=request.getParameter("classes");

       //接收说明的值

       String info=request.getParameter("manyinfo");

      

      

       //返回所有可用参数名的枚举

    java.util.Enumeration en =request.getParameterNames();

       while(en.hasMoreElements()){

              %>

             

        <% String str=(String)en.nextElement();

              %>

        <%=str%>

              <%}%>

      性别: <%=name%>性别:<%=sex%>班级:<%=classes%>信息:<%=info%>

 

 

姓名:<%=name%><br/>

性别:<%=sex%><br/>

班级:<%=classes%><br/>

说明:<%=info%><br/>

</body>

</html>

 

Request常用方法:

<html>

<head>

<title>无标题文档</title>

</head>

 

<body>

   <%

       //设置request对象的编码格式为GB2312

       response.setCharacterEncoding("gb2312");

      //得到客户端的请求协议

         String col = request.getProtocol();

         //返回请求的计划名

         String hh = request.getScheme();

         //获取客户端的IP

         String ip = request.getRemoteAddr();

         //获取上下文路径

         String contextPath = request.getContextPath();

         //获取请求路径

         String rpath = request.getRequestURI();

         //获取客户端请求的端口号

         int port = request.getServerPort();

        

         //得到request对象的编码格式

      String ce= request.getCharacterEncoding();

   %>

   <%=col%><br>

   <%=hh%><br>

   <%=ip%><br>

   <%=contextPath%><br>

   <%=rpath%><br>

   <%=port%>

</body>

</html>

 

Response:

Login.jsp:

<html>

<head>

<title>无标题文档</title>

</head>

 

<body>

 

   <form action="main.jsp" method="post">

      用户名:<input type="text" name="uname" />

      密码<input type="password" name="upass" />

            <input type="submit" value="提交"/>

   </form>

</body>

</html>

Main.jsp:

<html>

<title>无标题文档</title>

</head>

 

<body>

<%

  //接收客户端提交过来的用户名和密码

  String name = request.getParameter("uname");

  String pass = request.getParameter("upass");

  //对客户端传递过来的用户名和密码进行判断

  if(name.equals("admin")&&pass.equals("123")){

         //如果用户名和密码为admin123

         //那么跳转到成功页面

         response.sendRedirect("success.jsp?aa="+name);

  }else{

         //登录失败,重新跳转到登录页面

         response.sendRedirect("login.jsp");

         }

        

        

%>

 

</body>

</html>

Success.jsp:

<html>

<head>

<title>无标题文档</title>

</head>

 

<body>

login success

<%

  String name=request.getParameter("aa");

%>

<%=name%>

</body>

</html>

自动刷新:

<html>

<head>

<title>无标题文档</title>

</head>

 

<body>

<%

    //设置对此页面每秒刷新一次,并且记录刷新的次数

       //定义全局变量

%>

 

<%!

   //定义全局变量

   int count=0;

     //设置每秒中刷新一次

%>

<%

//  response.setHeader("refresh","2");

  response.setHeader("refresh","3;URL=login.jsp");

%>

3秒钟之后自动跳转到login.jsp页面,如果不跳转请点击<a href="login.jsp">这里</a>

 

显示全局变量,并且对全局变量自增<%=count++%>

 

reponsehttpServletResponse接口的引用对象父接口是HttpServlet主要

是用来从服务器端到客户端的  可以给客户端设置头信息,可以控制页面跳转,

并且传递相应的值过去

 

</body>

</html>

字符输出流:

<html>

<head>

<title>无标题文档</title>

</head>

 

<body>

<%

  //服务器给客户端返回一个字符的输出流回来

  java.io.PrintWriter pw = response.getWriter();

  pw.println("<html>");

  pw.println("返回输出流");

  pw.println("</html>");

  pw.flush();

  pw.close();

%>

 

</body>

</html>

 

 

Session:

创建的sessionHttpSession接口的对象

创建的session表示的是一次会话,也就是如果你开启一个客户端,表示的是你这个客户端与服务器一次会话,客户端一般是浏览器,服务端是服务器,当我们开启一个浏览器表明会话开始,那我们就可以往session对象中存值,存值的方式是以keyvalue的形式进行设置,只要浏览器不关闭,会话就不结束,那么我们就可以一直从session对象中取值

 

我们可以从session中取出想要的值

session中可以放一个或者多个值 session中放置的类型可以使任意类型

 

 

getId()方法

此方法主要是用来返回一个32位长度的id号,每一次建立一次session会话,会随机生成一个id

<%

  //取到sessionid号,每次建立连接id号生成的不一样

    String id = session.getId();

     //判断建立的session是否是一个新的session

     //如果是新的则返回true 如果是已经建立的session则返回false

     boolean flag = session.isNew();

%>

 

sessionid:<%=id%>

判断是否是第一次访问:<%=flag%>

 

Login:

<html>

<head>

<title>无标题文档</title>

</head>

 

<body>

 

   <form action="main.jsp" method="post">

      用户名:<input type="text" name="uname" />

      密码<input type="password" name="upass" />

            <input type="submit" value="提交"/>

   </form>

</body>

</html>

Main.jsp

<html>

<title>无标题文档</title>

</head>

 

<body>

<%

  //接收客户端提交过来的用户名和密码

  String name = request.getParameter("uname");

  String pass = request.getParameter("upass");

  //将接收到的用户名和密码放入到session中去

   session.setAttribute("u",name);

   session.setAttribute("p",pass);

 

  //移除session中的属性值,根据key来移除session中的属性值

  session.removeValue("p");

 

  //设置session最大存活时间

  session.setMaxInactiveInterval(5);

 

 

 

 

  //对客户端传递过来的用户名和密码进行判断

  if(name.equals("admin")&&pass.equals("123")){

         //如果用户名和密码为admin123

         //那么跳转到成功页面

         response.sendRedirect("success.jsp");

  }else{

         //登录失败,重新跳转到登录页面

         response.sendRedirect("fail.jsp");

         }

        

        

%>

 

</body>

</html>

Success.jsp

<html>

<head>

<title>无标题文档</title>

</head>

 

<body>

login success

<%

  //session中取值

   String showname=(String)session.getAttribute("u");

   String showpass=(String)session.getAttribute("p");

 

    //取到session存活的时间

  int lift=session.getMaxInactiveInterval();

%>

<%=showname%>

<%=showpass%>

<%=lift%>

 

<a href="other.jsp">点击我跳转</a>

</body>

</html>

Fail.jsp:

<html>

<head>

<title>无标题文档</title>

</head>

 

<body>

login success

<%

  //session中取值

   String showname=(String)session.getAttribute("u");

   String showpass=(String)session.getAttribute("p");

%>

<%=showname%>

<%=showpass%>

</body>

</html>

Other.jsp(session中取值)

<html>

<head>

<title>无标题文档</title>

</head>

 

<body>

login success

<%

  //session中取值

   String showname=(String)session.getAttribute("u");

   String showpass=(String)session.getAttribute("p");

%>

<%=showname%>

<%=showpass%>

</body>

</html>

 

Get方法和Post方法提交表单的区别:

Ø  Get方法提交表单对应的将表单中的数据拼接在地址栏 post方法提交则不会拼接

Ø  Get方法提交安全性相对于post提交安全性低,如果要采用get方法提交,那么必须对表单提交的数据进行加密