华清远见-重庆中心-JavaWeb后端技术总结

本文介绍了Web项目开发的两种主要模式:Model1和MVC。Model1中JSP兼顾显示和数据处理,不适用于复杂项目,而MVC模式则将模型、视图和控制器分离,提高可维护性和扩展性。此外,文章还涵盖了B/S模式的访问流程、数据提交方式、路径解析、Servlet的使用以及JSP和JSTL在展示层的应用,强调了session在共享信息中的作用。
摘要由CSDN通过智能技术生成

Web项目开发模式

Model1

JSP+JavaBean模式。

JSP负责渲染数据和处理页面。

JavaBean是一个满足以下条件的类

  • 被public修饰
  • 其中的属性进行封装
  •  用private修饰属性
  •  提供get/set方法
  • 有无参数的构造方法

这种模式,不适合复杂项目的开发。

jsp既要显示内容,又要处理数据,后期维护扩展不方便。

 

Model(MVC)

MVC模式:模型-视图-控制器模式。

M:Model模型 用于封装数据处理数据,对应业务逻辑类、数据访问类、实体类

V:View视图 用于渲染数据,对应页面(jsp或html)

C:Controller控制器 用户调度用户请求,对应servlet

这种模式适合复杂项目的开发。

每个模块各司其职,耦合性低。

对于后期维护和扩展较为方便。

 WEB核心内容

B/S模式的访问流程

用户通过浏览器发送请求,访问服务器上的某个部署的项目,经过该项目的MVC,得到响应。

框架部分会使用SpringMVC替换现有的Servlet实现MVC的流程。

页面提交数据的方式

  • 通过表单提交,可以设置get/post
<form action="地址" method="get/post">
    <input type="text" name="参数" >
    <input type="submit">
</form>
  • 通过超链接提交,属于get提交
<a href="地址?参数=值&参数=值">xxxx</a>
  • 通过Ajax提交,可以设置get/post
  • 先导入jQuery
$.ajax({
	//请求地址
    url:'',
    //提交数据
    data:{
        "参数名":值,
        "参数名":值
    },
    //提交方式
    type:"get/post",
    //成功回调
    success:function(res){
        //res为控制层的返回值
    },
    //失败回调
	error:function(){}
});

路径

  • /

表示根目录,即域名:端口号,如localhost:8080

  • ./

表示当前目录,如在localhost:8080/Web03/page.html页面中访问./index.html,相当于localhost:8080/Web03/index.html

  • ../

表示向上一层目录,如在localhost:8080/Web03/page.html页面中访问../index.html,相当于localhost:8080/index.html

使用EL的${pageContext.request.contextPath}表示当前项目的上下文路径,

如localhost:8080/Web03/pages/index.html中使${pageContext.request.contextPath}/hello.html,相当于localhost:8080/Web03/hello.html

servlet依赖

如果要使用servlet、filter、listener、request、response都需要该依赖

<!--servlet-->
<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
    <version>4.0.1</version>
</dependency>

web.xml中的相关配置

  • servlet
<!-- 声明servlet -->
<servlet>
    <servlet-name>自定义servlet名</servlet-name>
    <servlet-class>servlet全限定名</servlet-class>
    <!-- servlet初始化参数 -->
    <init-param>
        <param-name>参数名</param-name>
        <param-value>参数值</param-value>
    </init-param>
</servlet>

<!-- 配置servlet请求映射 -->
<servlet-mapping>
    <servlet-name>自定义servlet名</servlet-name>
    <url-patten>/映射名</url-patten>
</servlet-mapping>
  • filter
<!-- 声明filter -->
<filter>
	<filter-name>自定义filter名</filter-name>
	<filter-class>filter全限定名</filter-class>
</filter>
<!-- 配置filter请求映射 -->
<filter-mapping>
	<filter-name>自定义filter名</filter-name>
    <!--过滤器通常用于解决中文乱码,要过滤所有请求-->
    <url-patten>/*</url-patten>
</filter-mapping>
  • listener 
<listener>
    <listener-class>监听器的全限定名</listener-class>
</listener>
  • session
<!--设置全局session配置-->
<session-config>
    <session-timeout>session有效时长,单位为分钟</session-timeout>
</session-config>
  • 全局参数
<!--设置全局参数-->
<context-param>
    <param-name>参数名</param-name>
    <param-value>参数值</param-value>
</context-param>

数据访问层(Dao)

现在使用JDBC实现查询,框架部分会使用MyBatis、MyBatisPlus或JPA,简化该层的写法。

跳转

请求转发forward

保存在request中的数据会一直存在,

 重定向redirect

保存在redirect中的数据会丢失(不是同一个请求)

 

JSP

由控制层保存数据到作用域中,跳转到Jsp中展示数据。

作用域对象

pageContext request session application

内置对象

request response page pageContext session application out config exception

EL

表达式语言。替换jsp中的输出<%=%>部分。

  • 从作用域中获取对象,通过.或[]获取属性,该属性必须存在且有get方法

        ${对象名.属性名}或${指定作用域.对象名["属性名"]}

  • 从请求中获取参数,表单的name或?后的数据

        ${param.参数名}

  • 逻辑判断、计算

        非空判断 ${empty 对象}

        计算 ${xx + yy}

  • 获取当前项目上下文路径
${pageContext.request.contextPath}

JSTL

<!--jstl标签库-->
<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>jstl</artifactId>
    <version>1.2</version>
</dependency>

先导入依赖,在jsp页面中引入标签库

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
  • 判断
<c:if test="条件">
	html内容
</c:if>
  • 遍历
<c:forEach items="要遍历的集合" var="遍历出的对象">
	html内容
</c:if>

Session

通常用session保存登录时的用户信息,实现在各个页面中共享信息或防止未登录的情况下访问。

使用session时,会创建一个JSESSIONID,保存在cookie中,在浏览器开启状态下,该JSESSIONID默认会有30分钟的有效期,

如果在30分钟内没有对session进行操作或关闭浏览器,该cookie就会销毁,对应的session就会失效。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值