手搭手入门SpringMVC

举报
QGS 发表于 2023/03/18 18:00:29 2023/03/18
【摘要】 手搭手入门SpringMVC

Tomcat安装

Linux安装Tomcat https://bbs.huaweicloud.com/blogs/307171

Windos配置Tomcat


关于Tomcat服务器的目录

bin: 该目录是Tomcat服务器的命令文件存放的目录,打开关闭Tomcat
conf: 该目录是Tomcat服务器的配置文件存放目录。(Server.xml文件中可以配置端口号,默认Tomcat端口是8080)
lib: 该目录是Tom服务器核心程序目录,因为Tomcat服务器是java语言编写的,这里的jar包里面都是class文件。
logs: Tomcat服务器的日志目录,Tomcat服务器启动等信息都会在这个目录下生成日志文件。
temp: Tomcat服务器的临时目录。存储在临时文件。
webapps: 该目录当中就是用来存放大量的webapp(web application web应用)
work: 该目录

 


windos启动tomcat


浏览器访问
http://localhost:8080/
http://127.0.0.1:8080/
在Tomcat实现一个基本webapp应用
第一步:CATALINA_HOME/webapps 所有webapp要放到webaps目录下
第二步:CATALINA_HOME/webapps 下新建子目录,
第三步:在新建的子目录下创建资源文件
<!doctype html>
<html>
<head>
<title>index page</title>
<body>
<h1>hello world webapp</h1>
</body>
</head>
</html>
第四步:浏览器访问http://127.0.0.1:8080/demo/
在浏览器中加入一个超链接
<!-- 绝对路径 -->
<a href="/demo/test.html">test</a>
<a href="https://www.bilibili.com/">test2</a>

 


浏览器软件
WEB Server
DB Server
webapp
webapp与WEB Server直接有一套规范:JavaEE规范之Servlet规范。
Servlet的作用:webapp与WEB Server解耦合
Browser和WebServer之间有一套传输协议:http协议
webapp和DB Server之间有一套规范:JDBC规范
Servlet接口是Oracle提供的
Servlet接口是JavaEE的规范的成员
Tomcat服务器实现了Servlet规范,所以Tomcat服务器也需要使用Servlet

解决IDEA控制台乱码问题


解决TomcatwindosDOS窗口乱码问题

将UTF-8修改为GBK

IDEA集成Tomcat


IDEA项目关联Tomcat


SpringMVC开发步骤

IDEA新建空项目

 

或者


Pom.xml配置

添加SpringMVC的依赖,添加Servlet的依赖

<!--      添加Springmvc的依赖-->
  <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-webmvc</artifactId>
      <version>5.2.5.RELEASE</version>
  </dependency>

<!--    添加servlet的依赖-->
  <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>javax.servlet-api</artifactId>
      <version>4.0.1</version>
  </dependency>

 

<!--  指定资源文件-->

  <build>
    <resources>
      <resource>
        <directory>src/main/java</directory>
        <includes>
          <include>**/*.xml</include>
          <include>**/*.properties</include>
        </includes>
      </resource>
      <resource>
        <directory>src/main/resources</directory>
        <includes>
          <include>**/*.xml</include>
          <include>**/*.properties</include>
        </includes>
      </resource>
    </resources>
  </build>

添加springmvc.xml配置文件+main.jsp页面

Springmvc.xml配置

SpringMVC.xml配置文件,指定包扫描,添加ViewResolver(视图解析器)

 <!--    包扫描-->
<context:component-scan base-package="com.qgs.controller"/>

<!--    视图解析器-->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <!--配置前缀-->
        <property name="prefix" value="/admin/"></property>
        <!--配置后缀-->
        <property name="suffix" value=".jsp"></property>
    </bean>

原理

web.xml文件中注册SpringMVC框架(所有的web请求都是基于servlet)、在webapp目录下新建admin目录并新建main.jsp页面,新代替建index.jsp页面,发送请求给服务器

注册DispatcherServlet

DispatcherServlet要在web.xml文件中注册才可用




SpringMVC框架注册
删除模板中的旧版本web.xml,更换新版本

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">

    <!--    注册SpringMVC框架-->
    <servlet>
        <servlet-name>springmvc01</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:springmvc.xml</param-value>
        </init-param>
    </servlet>

    <servlet-mapping>
        <servlet-name>springmvc01</servlet-name>
        <url-pattern>*.action</url-pattern>
    </servlet-mapping>
</web-app>

使用springmvc跳转页面


springmvc.xml配置
<!--    组件扫描-->
    <context:component-scan base-package="com.qgs.controller"/>

    <!--    视图解析器-->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <!--配置前缀-->
        <property name="prefix" value="/admin/"></property>
        <!--配置后缀-->
        <property name="suffix" value=".jsp"></property>
    </bean>
web.xml配置

<!--    注册SpringMVC框架-->
<servlet>
    <servlet-name>springmvc01</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:springmvc.xml</param-value>
    </init-param>
</servlet>

<servlet-mapping>
    <servlet-name>springmvc01</servlet-name>
    <url-pattern>*.action</url-pattern>
</servlet-mapping>
index.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<a href="${pageContext.request.contextPath}/demo.action">跳转</a>
</body>
</html>


Servlet对象

//Spring创建Servlet对象
@Controller
public class testAction  {
/**
 * action中的功能实现由方法来完成
 *
 * action方法规范
 * 访问选择public
 * 方法返回值任意、方法名称任意、方法可以没有参数也可以是任意类型
 *需要@RequestMapping注解声明访问路径
 *
 */

@RequestMapping("/demo")
public String demo(){

    return "main";//跳转至main.jsp页面
}

}


main.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<h2>hello main</h2>
</body>
</html>

Tomcat配置

                        

@RequestMapping详解


@RequestMappin映射服务器访问的路径
@RequestMappin可区分get请求和post请求
@RequestMappin的定义请求规则
通过@RequestMappin注解额可以定义处理器对于请求的映射规则。该注解可以注解在方法上。也可以注解在类上,但意义是不同的。
@RequestMappin的value属性用于定义所匹配请求的URI。 Value属性值常以”/”开始。
@Controller所注解的类中,可以定义多个处理方法。不同的处理方法所匹配的URI是不同的。这些不同的URL被指定在注解与方法之上的@RequestMappin的value属性中。

如类上和方法上都有@RequestMappin注解,则(虚拟路径)路径为${pageContext.request.contextPath} /test/demo
如类上没有@RequestMappin注解而方法有,则(虚拟路径)路径为${pageContext.request.contextPath} /demo


@RequestMappin区分get请求和post请求


@RequestMapping(value = "/demo",method = RequestMethod.GET)
public String demo(){

    return "main";//跳转至main.jsp页面
}

@RequestMapping(value = "/demo",{RequestMethod.POST, RequestMethod.GET })
public String demo2(){

    return "main";//跳转至main.jsp页面
}


action方法的返回值


五种返回类型值ModelAndView、String、void、Object、基本数据类型

Object:返回json格式的对象,自动将对象或集合转为json,使用Jackson工具进行转换,必须要添加jackson依赖,一般用于ajax请求。
Void:无返回值:一般用于ajax请求。
基本数据类型:用于ajax请求。
ModelAndView:返回数据和视图对象。(很少用)
String:资源地址,自动拼接前缀和后缀,还可以屏蔽自动拼接字符串,指定返回的路径


致敬每一位自学者,加油
【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。