【期末复习】Java web

【期末复习】Java web,第1张

【期末复习】Java web Javaweb JSP Jsp 的运行机制

是在服务器端(web容器 )中运行的服务器端的Jsp引擎解释执行JSP代码

然后将结果以HTML的形式发送到客户端。

Jsp语法

大多数标签为<% 代码 %> 分为基本元素、指令元素、动作元素

基本元素
  1. 脚本元素

  2. 声明

 <%!int a,b,c;
    double d = 6.0;
    //函数
    int f(int x){
        if(a == 2) return 1;
        else return 0;
    }
     %>
  1. 表达式
  <%=表达式   %>
  1. 注释
  <%--  --%>
  
指令元素

指令元素包括 page include taglib

  • page:定义整个页面的全局属性(每个属性只能用一次,import可以用多次)

  • include:包含一个文本或者代码文件

  • taglib:定义标签或者第三方标签库

<%@ 指令名称 属性1="属性值1" ..........   %>
动作元素

用来控制JSP引擎的行为

  • include:页面得到请求是动态包含另一个网页文件

  • forward:引导请求进入新的页面(并且停止当前界面)

  • plugin:连接客户端的applet或者bean插件

  • setProperty:设置Javabean的属性值

  • getProperty:获取Javabean的属性值并且输出



JSP内置对象概述
  • request:请求对象

  • response:响应对象

  • pageContext:JSP的上下文对象

  • session:会话对象

  • application:ServletContext对象

  • config:ServletConfig对象

  • out:JSP输出流对象

  • page:指向当前JSP的对象

  • exception:异常对象

JavaBean

JavaBean 就一个可重复使用的软件组件,用java语言编写,提供给JSP或者servlet调用,完成数据的封装和处理

定义一个JavaBean类(同简单的java类)所有属性定义为私有,所有方法定义为公有

样例:

@Date
public class Add{
    private int shuju1;
    private int shuju2;
    public Add(int a ,int b){
        this.shuju1=a;this.shuju2=b; 
    }
    public int sum(){
        return shuju1+shuju2;
    }
    public boolean isfill(){return true;} 
}
基于JSP脚本代码访问JavaBean

一个两数字相加的JavaBean 为样例(JavaBean 见上方 Add.java)

提交两个整数的JSP(input.jsp)

<%@ page language="java" pageEncoding="UTF-8" %>

    

设计show.jsp

<%@ page language="java" pageEncoding="UTF-8" contentType="text/html" 
         import="beans.Add" %>

    
        <%request.setCharacterEncoding("UTF-8") %>
        <% String s1=request.getParameter("shuju1");
           String s2=request.getParameter("shuju2");
           x = Integer.ParseInt(s1);
           y=Integer.PraseInt(s2);
           Add c = new Add(x,y);
        %>
        <%=c.sum%> //输出C
    

基于JSP动作标签访问JavaBean

可以减少JSP中程序代码,更加接近HTML页面

动作标签:

  • useBean:声明并且创建JavaBean对象实例

    • class :用来指定JavaBean的类名,必须完全限定

    • id:指定创建对象的名称

    • scope:指定创建对象的作用范围

      取值有4个 page(页面)、request(请求)、session(会话)、application(应用)

  • setProperty:对Javabean中的指定属性设置值

  • getProperty:获取对应的值,并且显示在网页上

所以同理,上面样例中的show.jsp也可以写成

<%@ page language="java" pageEncoding="UTF-8" contentType="text/html" 
         import="beans.Add" %>

    

        //在request范围内创造对象c
        
        //从提交界面获取信息,赋值给c同名属性
         
        //也可以写成,上下同理
        
        
        <%=c.sum() %>
    

Servlet 和MVC

Servlet 是java语言编写的服务端程序 可以处理客户端HTTP的请求,并且返回一个相应

生命周期:

加载类(init(), 无法观察)—>实例化(为对象分配空间)—>初始化(为对象的属性赋值)—>请求处理(服务阶段)—>销毁(destory())

Servlet的建立和配置

需要继承HttpServlet ,HttpServlet 是父类

方法:

  • init() : 初始化方法,创建之后直接执行

  • doGet():当请求是Get的时候调用该方法

  • doPost():当请求是“POST"时候调用

  • service():Servlet处理请求是自动执行

  • dostory():Servlet对象注销时自动执行

配置方式:

将创建的Servlet类映射为一个可以直接访问的URL地址

  1. 在Web配置文件中的web.xml

   Text
   com.example.controller.Text>


   Text
   /text

  1. 直接在Servlet程序源码中采用注释配置
@WebServlet("/text")
public class Text extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        super.doGet(req, resp);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        super.doPost(req, resp);
    }
}

综合案例,基于JSP+Servlet的用户登录

login.jsp

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>




用户登录




	



LoginServlet.java

@WebServlet("/LoginServlet")
public class LoginServlet extends HttpServlet {
    public LoginServlet() {
        super();
    }

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doPost(req, resp);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        String name = req.getParameter("name");
        String pwd = req.getParameter("pwd");
        String info="";
        if(name.equals("111") && pwd.equals("111")){
            info="welcome";
        }
        else{
            info="grt out!";
        }
        req.setAttribute("outputMessage",info);
        req.getRequestDispatcher("/info.jsp").forward(req,resp);//实现到JSP页面的跳转,转向网页“info.jsp"
        
    }
}

结果页面:info.jsp


	<%=request.getAttribute("outputMessage"    )·
	%>

JSP Servlet数据共享和关联

之间可以通过 request、session、application

  • 请求的数据共享(request)

    request.setAttribute("属性名",对象类型的属性值);
    对象类型  (强制类型)request.getAttribute("属性名");
    request.removeAttribute("属性名");//从作用域中删除
    
  • 会话的数据共享(session)

    session.setAttribute("属性名",对象类型的属性值);
    HttpSession request.getSession(boolean create);
    用法同上
    
  • 应用的数据分享(application)

    ServletContext application=this.getServletContext()
    
在JSP中调用Servlet
  • 通过表单调用Servlet

    ...
  • 通过超链接调用Servlet

    ...
    
Servlet跳转JSP
  • 转向:request对象不消亡

    req.getRequestDispatcher("product.jsp").forward(req, resp);
    
  • 重定向:直接跳转,重新创建request对象

    resp.sendRedirect("index.jsp"); 
    
MVC

分为JSP视图层(V),Servlet控制层(C)、JavaBean模型层(M)

好处: 降低耦合 方便版本迭代 代码复用高

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5686152.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存