jsp向Servlet;Servlet向jsp传数据

  在Java中想数据从Jsp传到Servlet或者从Servlet传到Jsp是如何做到的呢!首先,要了解Jsp和Servlet的概念。Jsp是一种建立在Servlet规范提供的功能之上的动态网页技术,允许在网页文件中嵌入Java代码和Jsp标记。通俗一点来讲,Jsp和html很相似,只是Jsp比Html的功能更加强大了一些。
 那么Jsp又是如何执行的呢?
1、 Jsp文件在用户第一次请求是,会被编译成Servlet,然后由这个Servlet处理用户的请求,所以Jsp可以看成是运行时的Servlet。
2、 Jsp容器(也就是Servlet容器)管理Jsp页面声明周期分为两个阶段。即转换阶段和执行阶段。
3、 当有一个对Jsp页面的请求到来时,Jsp容器会检查jsp页面的语法是否正确,将Jsp页面转换为Servlet源文件,然后调用Javac命令编译Servlet源码文件生成字节码文件,这就是转换阶段
4、 Servlet容器加载转换后的Servlet类,这是执行阶段。
Jsp执行流程如下图:
在这里插入图片描述
Jsp指令是用来设置与整个Jsp页面相关的属性。
 1、<%@page…%> 解析:定义页面的依赖属性,比如脚本语言、error页面、缓存需求等等
 2、<%@Sinclude…%> 解析:包含其他文件。、
 3、<%@taglib…%> 解析:引入标签库的定义,可以是自定义标签。
Jsp的九大内置对象
 1、request  请求对象   HttpServletRequest 类的实例  作用域Request
 2、response  响应对象   HttpServletResponse 类的实例   作用域Page
 3、out   输出对象   PrintWriter 类的实例,用于把结果输出值网页上   作用域Page
 4、session  会话对象   HttpSession 类的实例   作用域Session
 5、application  应用对象   ServletContext 类的实例,与应用上下文有关   作用域Application
 6、config   配置对象   SerletConfig 类的实例   作用域Page
 7、pageContext  页面响应对象   PageContext 类的实例,提供对jsp页面所有对象以及命名空间的访问。   作用域Page
 8、page  页面对象   类似于Java类中的this关键字   作用域Page
 9、Exception   例外对象   Exception类的对象,代表发生错误的jsp页面中对应的异常对象  作用域Page
Jsp四个作用域包括page、request、session和application;作用范围是从小到大排序。在使用的过程中,如果没有指定作用域它会先从page里面查找数据,所以不再去request里查找。以此类推。那么指定的作用域就不一样了。
EL表达式:EL为表达式语言(Expression Language),可以简化对变量的对象的访问。
  语法:${“开始,以”}结束;是否启用EL表达式 isELIgnored=”true|false”;
  EL表达式用于以下情形,静态文本、表中标签和自定义标签,当不能在脚本元素中使用。
 基本的属性和基本的概念已经了解,那么切入正题。如何从jsp向Servlet传递数据或者从Servlet向jsp传递数据呢?那先说说如何从jsp向Servlet传递数据。
Jsp的核心代码

<body>
     <form action=”servlet/Demoservlet” method=”post”>
      <p>用户:<input type=”text” name=”name”></p>
      <p>用户:<input type=”text” name=”password”></p>
      <button type=”submit”>提交</button>
     </form>
</body>

Servlet的代码

Package com.gx.servlet;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequsert;
import javax.servlet.http.HttpServletResponse;

public class Demoservlet extends HttpServlet{

   public void doGet(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException{
      //在请求的时候设置编码是utf-8
     request.setCharacterEncoding(“utf-8);
      //在响应的时候设置编码是utf-8
     response.setCharacterEncoding(“utf-8);
     String name=request.getParameter(“name”);
     String name=request.getParameter(“password”);  
     System.out.println(name);
     System.out.println(password);
     //转发   地址不改变   参共享
     Request.getRequestDispatcher(/myjsp/demo.jsp”).forward(request,respons);
}
 }

 Web.xml的配置核心代码这里其实可以在创建类的时候选择servlet创建xml会自动生成,不需要修改。以下是手动配置的列子

  <servlet>//servlet配置
  <servlet-name>Demoservlet</servlet-name>
  <servlet-class>com.gx.servlet. Demoservlet </servlet-class>
  //这里的servlet-name的名称要对应servlet中的Demoservlet
  //这里的servlet-name的名称要对相应的包和类
</servlet>
<servlet-mapping>//路径配置
<servlet-name>Demoservlet</servlet-name>
<url-pattern>/servlet/Demoservlet</url-pattern>
//这里的servlet-name的名称要对应servlet中的Demoservlet
//这里的url-pattern的名称要对应相应的包和类
</servlet-mapping>

执行结果如下图:
在这里插入图片描述
 Jsp向servlet的传递参数就到这里,既然讲了Jsp是如何向servlet传递参数的,那么参数又是如何从servlet向Jsp传递的呢?首先,配置好web.xml的内容,以上已经说了如何配置xml就不再详讲。
Servlet的代码如下:

package com.gx.serrvlet;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class Demoservlet extends HttpServlet{
     public void doGet(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException{
         request.setCharacterEncoding(“utf-8”);
         response.setCharacterEncoding(“utf-8”);
         request.setAttribut(“name”,”小明”);
         request.setAttribute(“password”,”123”);
         //转发  地址不改变  参数共享
        request.getRequestDispatcher(“/myjsp/demo.jsp”).forward(request,response);
       }
   }

Jsp的核心代码

 <body>
  //这里用的是EL表达式结束值
 <form action=”service/Demoservlet” method=”post”>
  <P>用户名:<input type=”text” name=”name” value=” ${name}”/></p>
  <p>密码:<input type=”text” name=”password” value=” ${password}”/></p>
  <button type=”submit”>提交</button>
 </form>
</body>

执行结果如下图:
在这里插入图片描述

发布了37 篇原创文章 · 获赞 8 · 访问量 5957

猜你喜欢

转载自blog.csdn.net/weixin_43741599/article/details/90295420