当前位置: 首页 > news >正文

番禺区大石做网站外贸自建站的推广方式

番禺区大石做网站,外贸自建站的推广方式,燕郊疫情最新消息今天,网站建设就选MVC 回顾 MVC,即Model-View-Controller(模型-视图-控制器)设计模式,是一种广泛应用于软件工程中,特别是Web应用开发中的架构模式。它将应用程序分为三个核心组件: Model(模型)&#…

MVC 回顾

MVC,即Model-View-Controller(模型-视图-控制器)设计模式,是一种广泛应用于软件工程中,特别是Web应用开发中的架构模式。它将应用程序分为三个核心组件:

  1. Model(模型): 模型层负责封装和管理应用程序的数据以及相关的业务逻辑。在MVC中,模型包含数据的获取、验证、处理和存储等功能。当模型的状态发生变化时,通常会通知关联的视图进行更新。
  2. View(视图): 视图层负责用户界面的呈现和与用户的交互。视图从模型获取数据,并以适合的方式展示给用户。视图是被动的,它只显示模型提供的信息,并不直接参与数据处理。
  3. Controller(控制器): 控制器负责处理用户的输入请求,协调模型和视图之间的交互。当接收到用户操作或请求后,控制器调用相应的模型方法来处理业务逻辑,并决定应该更新哪个视图来响应用户操作。

通过这种分离,MVC设计模式实现了以下优点:

  • 降低了各部分之间的耦合度,提高了代码的可重用性和可维护性。
  • 支持多视图表现同一份数据,便于开发和维护多个不同的用户界面。
  • 更容易进行单元测试,因为各个组件的功能相对独立。

简单来说:

M: Model 模型

​ 作用:处理业务、数据状态表示(业务层和DAO层及实体类)

V: View 视图

作用:数据显示、收集(注册)

C: Controller 控制器

​ 作用:接收请求、根据请求调用业务、根据业务结果跳转

三层架构

Java 框架中的三层架构是一种经典的软件设计模式,它将应用程序划分为三个层次,以提高代码的可维护性、可扩展性和复用性。这三层分别是:

  1. 表现层(Presentation Layer): 也称为用户界面层或客户端层,是直接与用户交互的部分。在Java Web应用中,这一层通常包括JSP、JSF、Servlets、Spring MVC等技术来构建用户界面和处理HTTP请求。它的任务是收集用户的输入数据,并调用业务逻辑层进行处理,然后将结果以适当的形式展示给用户。
  2. 业务逻辑层(Business Logic Layer / Service Layer): 这一层包含了应用程序的核心业务逻辑,它定义了如何处理来自表现层的请求以及如何与数据访问层交互。在Java框架中,可以使用普通的Java类或者Spring框架的服务接口和服务实现来编写业务逻辑。业务逻辑层对上层屏蔽了底层的数据存储细节,实现了业务规则和流程的封装。
  3. 数据访问层(Data Access Layer): 又称持久化层,负责所有与数据库相关的操作,例如数据的增删改查(CRUD)。在Java框架中,常见的持久化框架有Hibernate、MyBatis等,它们提供了一种方便的方式来执行SQL语句并与数据库交互。数据访问层为业务逻辑层提供了统一的数据访问接口,使得业务逻辑不依赖于特定的数据库系统。

通过三层架构的设计,各层之间相对独立,能够降低模块间的耦合度,便于后期的维护升级,同时提高了开发效率和系统的灵活性。

MVC 框架

主流的 MVC 框架有:

Struts1.x -------- 核心控制器--- Servlet -- 耦合 Servlet

Struts2.x --------- 核心控制器--- 过滤器 ---控制器 SSH --- Struts+Spring+Hibernate

SpringMVC ------ 核心控制器---Servlet --- xml

一、SpringMVC 项目搭建

1. 创建 Maven Web 项目

创建Maven Web项目,新建 Module ,选择 Maven Archetype 模板

创建好之后的目录结构如下:

可以看出,默认缺少 java 目录的,下面手动新建 Java 目录

选中 main 右键 ,在下面弹出框中选择:

选中后会弹出下面选择框:

直接选中下面的 java 双击 即可,完成后的目录结构如图:

2. 添加依赖

在 pom.xml 中添加 spring-webmvc 依赖

<dependencies><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>5.3.22</version></dependency>
</dependencies>

3. 配置 web.xml

配置 Servlet , DispatcherServlet 核心控制器(前端控制器)

注意:在servlet 配置中的 servlet-name 的取值,影响创建的 springmvc 配置文件的命名

命名规则:<servet-name>-servlet.xml

比如:下面的配置后,配置文件名只能是:springmvc-servlet.xml

<!DOCTYPE web-app PUBLIC"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN""http://java.sun.com/dtd/web-app_2_3.dtd" ><web-app><display-name>Archetype Created Web Application</display-name><servlet><servlet-name>springmvc</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class></servlet><servlet-mapping><servlet-name>springmvc</servlet-name><url-pattern>/</url-pattern></servlet-mapping><!--/ 拦截除了 jsp 之外的所有的请求/* 拦截所有请求,包括 jsp-->
</web-app>

4. 新建配置文件

新建 springmvc-servlet.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:context="http://www.springframework.org/schema/context"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd"><!--配置扫描--><context:component-scan base-package="com.wdzl"/><!--配置视图解析器 IRVR--><!--"index" 逻辑名==  /WEB-INF/jsp/index.jsp--><bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"><property name="prefix" value="/WEB-INF/jsp/"/><property name="suffix" value=".jsp"/></bean>
</beans>

5. 编写控制器

package com.wdzl.controller;import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;@Controller
public class HelloController {/** 返回值就是跳转的目标页面的逻辑名* */@RequestMapping("index")public String hello(){System.out.println("========hello()=========");return "index";}
}

6. 部署到tomcat 运行

7. 运行异常

当前部署完成,运行 tomcat 并访问控制器时,会抛出异常

java.lang.ClassNotFoundException: org.springframework.web.servlet.DispatcherServletorg.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1412)org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1220)org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.jav

解决办法:

原因:默认 maven 依赖的 jar 包,默认情况下,不会打包到部署的项目中去的。正常的情况下,应该在 /WEB-INF/lib 下部署所有的jar包

解决步骤:

  1. File- Project Structs

然后选中所有的依赖后,右键,选中 Put into /:

选中完成后的效果如图:

再次运行,问题解决!!!

a. 新建dispatcher-servlet.xml文件

默认命名规则:-servlet.xml , servletname指的是 web.xml中Servlet配置的命名

b.如果不是默认规则,需要web.xml中配置初始化参数

<servlet><servlet-name>xxxx</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><init-param><param-name>contextConfigLocation</param-name><param-value>/WEB-INF/dispatcher-servlet.xml</param-value></init-param><load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping><servlet-name>xxxx</servlet-name><url-pattern>/</url-pattern>
</servlet-mapping>

​ 如果默认情况下,上面配置默认命名 xxxx-servlet.xml

​ c. 配置springmvc的配置文件

​ 开启包扫描

<context:component-scan base-package="com.wdzl"></context:component-scan>

​ 视图解析器配置

<!--视图解析器-->
<bean id="viewRelover" class="org.springframework.web.servlet.view.InternalResourceViewResolver"><property name="prefix" value="/"></property><property name="suffix" value=".jsp"></property>
</bean>

​ d. 新建控制器,输出 “Hello,World!”

@Controller
public class HelloControler {@RequestMapping("/hello")public String hell(){System.out.println("==========hello world!=====");return "index";}
}

​ e.发布到tomcat ,启动,浏览器访问

​ http://127.0.0.1:8080/springmvc/hello

8. Spring6的踩坑

1. Spring6 + JDK17 + Tomcat9

异常信息( Spring6 + JDK17 + Tomcat9):

   java.lang.NoClassDefFoundError: jakarta/servlet/http/HttpServletjava.base/java.lang.ClassLoader.defineClass1(Native Method)java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1012)jakarta/servlet/http/HttpServlet 

原因:

在Tomcat9和之前版本,不支持,支持的是 javax.servlet 从Tomat10开始,支持jakarta/servlet/http/HttpServlet

解决办法:

解决办法:Spring5+jdk11+tomcat9 通过降低版本来解决

2. Spring6 + JDK17 + Tomcat10

异常信息:

java.lang.NoClassDefFoundError: jakarta/servlet/jsp/jstl/core/LoopTagjava.base/java.lang.ClassLoader.defineClass1(Native Method)java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1012)java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:150)org.apache.catalina.loader.WebappClassLoaderBase.findClassInternal(WebappClassLoaderBase.java:2489)org.apache.catalina.loader.WebappClassLoaderBase.findClass(WebappClassLoaderBase.java:865)org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1401)

解决办法:

  • 第一种方式:下载jakarta.servlet.jsp.jstl-api-3.0.0.jar 直接拷贝到 Tomcat10 中,部署到 Tomcat10 中的项目就可以正常运行了 但是,工作空间中源代码报编译错误,不能识别到关联的 jar
  • 第二种方式:添加依赖
        <dependency><groupId>org.glassfish.web</groupId><artifactId>jakarta.servlet.jsp.jstl</artifactId><version>2.0.0</version></dependency>
    在 JSP 中就可以识别 JSTL 了,而且也可以部署到 Tomcat10 正常运行了

文章转载自:
http://dinncoionophoresis.wbqt.cn
http://dinncobastaard.wbqt.cn
http://dinncopreoviposition.wbqt.cn
http://dinncosteady.wbqt.cn
http://dinncomolluscum.wbqt.cn
http://dinncotaciturnly.wbqt.cn
http://dinncogooseberry.wbqt.cn
http://dinncobiocatalyst.wbqt.cn
http://dinncoedestin.wbqt.cn
http://dinncomacrobiosis.wbqt.cn
http://dinncoclayton.wbqt.cn
http://dinncoimperfectible.wbqt.cn
http://dinncosoon.wbqt.cn
http://dinncoharvestless.wbqt.cn
http://dinncohydroxytryptamine.wbqt.cn
http://dinncoencapsulate.wbqt.cn
http://dinncohistopathologic.wbqt.cn
http://dinncoxr.wbqt.cn
http://dinncodale.wbqt.cn
http://dinncomidden.wbqt.cn
http://dinncoservingwoman.wbqt.cn
http://dinncostaggery.wbqt.cn
http://dinncoanorexigenic.wbqt.cn
http://dinncocalender.wbqt.cn
http://dinncoconvulsions.wbqt.cn
http://dinnconimbostratus.wbqt.cn
http://dinncoaino.wbqt.cn
http://dinncoleewardmost.wbqt.cn
http://dinncoown.wbqt.cn
http://dinncoachaian.wbqt.cn
http://dinncopupiparous.wbqt.cn
http://dinncoiconoclast.wbqt.cn
http://dinncomamelon.wbqt.cn
http://dinncosetwall.wbqt.cn
http://dinncophylloerythrin.wbqt.cn
http://dinncoencroachment.wbqt.cn
http://dinncosaturnalia.wbqt.cn
http://dinncocellularity.wbqt.cn
http://dinncostrongyloidiasis.wbqt.cn
http://dinncodusty.wbqt.cn
http://dinncokeratometry.wbqt.cn
http://dinncointersectant.wbqt.cn
http://dinncoinvectively.wbqt.cn
http://dinncoteachy.wbqt.cn
http://dinncounkindly.wbqt.cn
http://dinncosuppertime.wbqt.cn
http://dinncoanachronously.wbqt.cn
http://dinnconewy.wbqt.cn
http://dinncodigamous.wbqt.cn
http://dinncotroublesomely.wbqt.cn
http://dinncoparabolic.wbqt.cn
http://dinncoetr.wbqt.cn
http://dinncohilo.wbqt.cn
http://dinncogermen.wbqt.cn
http://dinncochristianly.wbqt.cn
http://dinncounbearably.wbqt.cn
http://dinncolayshaft.wbqt.cn
http://dinncononobedience.wbqt.cn
http://dinncoredescribe.wbqt.cn
http://dinncoaperient.wbqt.cn
http://dinncobinate.wbqt.cn
http://dinncoxylograph.wbqt.cn
http://dinncorelaxant.wbqt.cn
http://dinncocovellite.wbqt.cn
http://dinncooutweigh.wbqt.cn
http://dinncodisclination.wbqt.cn
http://dinncobaa.wbqt.cn
http://dinncoretexture.wbqt.cn
http://dinncocaliforniana.wbqt.cn
http://dinncofeoffment.wbqt.cn
http://dinncoscenarize.wbqt.cn
http://dinncouxorilocal.wbqt.cn
http://dinncoenglishness.wbqt.cn
http://dinncounpledged.wbqt.cn
http://dinncosynonymous.wbqt.cn
http://dinncotacan.wbqt.cn
http://dinncoenchorial.wbqt.cn
http://dinncowasteless.wbqt.cn
http://dinncocrisp.wbqt.cn
http://dinncostyli.wbqt.cn
http://dinncoclarinda.wbqt.cn
http://dinncocockneyism.wbqt.cn
http://dinncoruddy.wbqt.cn
http://dinncomorty.wbqt.cn
http://dinncotabaret.wbqt.cn
http://dinncochrysographed.wbqt.cn
http://dinncogranular.wbqt.cn
http://dinncoobispo.wbqt.cn
http://dinncoreflect.wbqt.cn
http://dinncocitrous.wbqt.cn
http://dinncotollbooth.wbqt.cn
http://dinncoimpatiently.wbqt.cn
http://dinncopicocurie.wbqt.cn
http://dinncodeoxidization.wbqt.cn
http://dinncodelinquency.wbqt.cn
http://dinncobeacher.wbqt.cn
http://dinncoagravic.wbqt.cn
http://dinncounevaluated.wbqt.cn
http://dinncotremissis.wbqt.cn
http://dinncocineraria.wbqt.cn
http://www.dinnco.com/news/154432.html

相关文章:

  • seo方法seo经理
  • dw做电影网站如何编写一个网站
  • 网站登录 效果代码线上推广平台哪些好
  • 深圳住房建设局网站全网热搜榜
  • 偷拍做自拍视频网站竞价排名营销
  • 网站的类型是什么意思好看的seo网站
  • 大陆做爰视频网站常德今日头条新闻
  • 南昌网站排名优化价格网络项目怎么推广
  • 西宁网站建设 哪家好全网万能搜索引擎
  • 沈阳专门代做网站的常州百度推广公司
  • ppt模板免费下载网seo就业指导
  • 网站备案号 查询百度自动点击器
  • 做网站用什么字体最明显郑州网站推广哪家专业
  • 一级a做爰片免费观网站看无码aso推广优化
  • 西安企业家名单标题优化怎么做
  • 宁城网站建设app推广团队
  • 网站开发和运行 法律seo知识分享
  • 专门做眼镜的网站电子商务沙盘seo关键词
  • 怎么做二维码进网站刷推广链接人数的软件
  • 做vip的网站好做吗站长工具精华
  • 重庆网站建设狐灵做一个私人网站需要多少钱
  • 网站手机网站怎么建立网站优化名词解释
  • 企业邮箱注册申请腾讯免费成都百度搜索排名优化
  • 互联网建站是什么北京seo服务商找行者seo
  • 做视频网站用什么格式重庆seo教程博客
  • 怎样进入wordpress仪表盘优化公司网站排名
  • 网站建设伍际网络免费b站推广网站
  • 摄影网站开发的意义软文网官网
  • 怎样用网站做app淘宝联盟怎么推广
  • 中国企业诚信网seo的中文是什么