【Java框架型项目从入门到装逼】第七节 - 学生管理系统项目搭建

简介: 本次的教程是打算用Spring,SpringMVC以及传统的jdbc技术来制作一个简单的增删改查项目,对用户信息进行增删改查,就这么简单。

本次的教程是打算用Spring,SpringMVC以及传统的jdbc技术来制作一个简单的增删改查项目,对用户信息进行增删改查,就这么简单。


###1.新建项目

首先,打开eclipse,新建一个web项目。项目名称就叫做student,注意,新建项目的时候,因为是eclipse。所以你需要选择Dynamic Web Project

9ad3817f8ca76f60205c82be3f40de1a (1).png

点击Next。

88b1c6ee38d3e629d19116561ae26aca.png

不管,继续Next。

49df130f743e8eb5e6ed56657efea35f.png

Finish完成。

项目的目录结构如下:

20739bafae0b2584c0b992f71b7f2a55.png

接下来,把我们需要用到的jar包全部拷贝进来。

7c307d8721ef15af470db6870b6f6864.png

其中,simple-jdbc是我自己封装了一些jdbc操作,可以看成是一个小型的jdbc框架,具体如何使用会在以后讲到。


这些jar包,有的会用到,有的可能用不到。现在先不管,就把他们全部拷贝进来。


###2.集成SpringMVC


SpringMVC在本项目中起到的作用就是一个请求分发器,所有的请求,我们都通过SpringMVC来分发。打开web.xml:

5bbfa9313e2be19229bb23469ec89264.png

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
  <display-name>student</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
</web-app>

welcome-file-list是欢迎页的配置,我们不管,在前加上如下配置:

 <!-- 配置SpringMVC分发器 -->
   <servlet>
       <servlet-name>springmvc</servlet-name>
       <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
       <init-param>
           <param-name>namespace</param-name>
           <param-value>spring-mvc</param-value>
       </init-param>
    </servlet>
  <servlet-mapping>
       <servlet-name>springmvc</servlet-name>
       <url-pattern>*.do</url-pattern>
   </servlet-mapping>

这和配置普通Servlet的方式是一样,其中

 <init-param>
  <param-name>namespace</param-name>
  <param-value>spring-mvc</param-value>
</init-param>

这个配置的意思是在创建DispatcherServlet类的时候,就把其中的一个namespace属性赋值“spring-mvc”。这个名字是我们自己定的,你可以取别的名字,也可以就叫做spring-mvc,它对应的是 WEB-INF 目录下的 spring-mvc.xml 文件。现在,我们是没有这个文件的,所以得新建一个。

cf05c0acfb876278805a743f3d4b4006.png

将一下代码拷贝进spring-mvc.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:p="http://www.springframework.org/schema/p"
  xmlns:context="http://www.springframework.org/schema/context"
  xmlns:util="http://www.springframework.org/schema/util" 
  xmlns:mvc="http://www.springframework.org/schema/mvc"
  xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
       http://www.springframework.org/schema/context 
       http://www.springframework.org/schema/context/spring-context-3.0.xsd
       http://www.springframework.org/schema/util 
       http://www.springframework.org/schema/util/spring-util-3.0.xsd 
       http://www.springframework.org/schema/mvc 
       http://www.springframework.org/schema/mvc/spring-mvc.xsd
      ">
      <!-- 包扫描器 -->
      <context:component-scan base-package="com.app.*"></context:component-scan>
      <!-- 开启注解驱动,写了以后,Spring的注解机制就开始生效 -->
      <mvc:annotation-driven >
        <mvc:message-converters register-defaults="true">
              <bean class="org.springframework.http.converter.StringHttpMessageConverter">
          <property name="supportedMediaTypes">
            <list>
              <value>text/plain;charset=UTF-8</value>
              <value>text/html;charset=UTF-8</value>
            </list>
          </property>
        </bean>
              <!-- 配置Fastjson支持 -->
              <bean class="com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter">
                  <property name="supportedMediaTypes">
                      <list>
                          <value>application/json</value>
                      </list>
                  </property>
                  <property name="features">
                      <!-- 
                          Fastjson的SerializerFeature序列化属性: 
                              QuoteFieldNames———-输出key时是否使用双引号,默认为true 
                              WriteMapNullValue——–是否输出值为null的字段,默认为false 
                              WriteNullNumberAsZero—-数值字段如果为null,输出为0,而非null 
                              WriteNullListAsEmpty—–List字段如果为null,输出为[],而非null 
                              WriteNullStringAsEmpty—字符类型字段如果为null,输出为”“,而非null 
                              WriteNullBooleanAsFalse–Boolean字段如果为null,输出为false,而非null
                       -->
                      <list>
                        <value>QuoteFieldNames</value>
                          <value>WriteMapNullValue</value>
                      </list>
                  </property>
              </bean>
          </mvc:message-converters>
    </mvc:annotation-driven>
    <!-- 配置SpringMVC的视图解析器 -->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
      <property name="prefix" value="/" />
      <property name="suffix" value=".jsp" /><!--可为空,方便实现自已的依据扩展名来选择视图解释类的逻辑 -->
      <property name="viewClass" value="org.springframework.web.servlet.view.JstlView" />
    </bean>
</beans>      

第一个配置,包扫描器:

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


这个是啥意思呢,就是说,Tomcat容器启动的时候,会去扫描com.app下面所有的包和类,如果是符合要求的类,就new一下,装进Spring的bean工厂。

我们先把对应的目录结构建起来:

9244be707feaa6d35388068e65798d0d.png

然后,建一个controller包:

1bea5962a94269e5b38551660f6db835.png

这样一来,这个controller就是将来会被扫描的对象。现在,我们在里面新建一个ViewController类。

50c260f75ad77f1b37152e842232d679.png


代码:

package com.app.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class ViewController {
  @RequestMapping("/test")
  public void test(){
    System.out.println("test");
  }
}

我们给这个类打上@controller标记,到时候Sping框架就会认识他,在Tomcat服务器启动的时候就new出这个类,放到Spring的bean工厂中。


@RequestMapping的含义是请求路径。


关于这两个标记,我在 这篇文章 中已经做了详细的说明,在此就不再赘述。接着,我们可以去发布我们的项目了。


如果你还不会用eclipse和tomcat发布web项目,就看一下 Tomcat的安装配置与JavaWeb入门教程 。我在这里就不详细说了。


启动tomcat,打开浏览器,在地址栏输入:

http://localhost/student/test.do

回车,可以看到在控制台打印出了test字样:

ffec5ad2d2605d2711f3ba53a66f4f0a.png

这就说明,流程已经走通了。注意,因为我本地tomcat配置的端口号是80,所以直接写localhost,不需要写localhost:80了。还有,为什么后面跟test.do?那是因为我们在配置Spring分发器的时候就规定了,只拦截所有 *.do 的请求。

<!-- 配置SpringMVC分发器 -->
   <servlet>
       <servlet-name>springmvc</servlet-name>
       <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
       <init-param>
           <param-name>namespace</param-name>
           <param-value>spring-mvc</param-value>
       </init-param>
    </servlet>
    <servlet-mapping>
       <servlet-name>springmvc</servlet-name>
       <url-pattern>*.do</url-pattern>
   </servlet-mapping>

本章就到这里,先撤了。

相关文章
|
6天前
|
存储 安全 Java
Java 集合框架中的老炮与新秀:HashTable 和 HashMap 谁更胜一筹?
嗨,大家好,我是技术伙伴小米。今天通过讲故事的方式,详细介绍 Java 中 HashMap 和 HashTable 的区别。从版本、线程安全、null 值支持、性能及迭代器行为等方面对比,帮助你轻松应对面试中的经典问题。HashMap 更高效灵活,适合单线程或需手动处理线程安全的场景;HashTable 较古老,线程安全但性能不佳。现代项目推荐使用 ConcurrentHashMap。关注我的公众号“软件求生”,获取更多技术干货!
29 3
|
4天前
|
自然语言处理 Java
Java中的字符集编码入门-增补字符(转载)
本文探讨Java对Unicode的支持及其发展历程。文章详细解析了Unicode字符集的结构,包括基本多语言面(BMP)和增补字符的表示方法,以及UTF-16编码中surrogate pair的使用。同时介绍了代码点和代码单元的概念,并解释了UTF-8的编码规则及其兼容性。
77 60
|
8天前
|
Java Maven
java项目中jar启动执行日志报错:no main manifest attribute, in /www/wwwroot/snow-server/z-server.jar-jar打包的大小明显小于正常大小如何解决
在Java项目中,启动jar包时遇到“no main manifest attribute”错误,且打包大小明显偏小。常见原因包括:1) Maven配置中跳过主程序打包;2) 缺少Manifest文件或Main-Class属性。解决方案如下:
java项目中jar启动执行日志报错:no main manifest attribute, in /www/wwwroot/snow-server/z-server.jar-jar打包的大小明显小于正常大小如何解决
|
4天前
|
存储 Java BI
java怎么统计每个项目下的每个类别的数据
通过本文,我们详细介绍了如何在Java中统计每个项目下的每个类别的数据,包括数据模型设计、数据存储和统计方法。通过定义 `Category`和 `Project`类,并使用 `ProjectManager`类进行管理,可以轻松实现项目和类别的数据统计。希望本文能够帮助您理解和实现类似的统计需求。
40 17
|
26天前
|
NoSQL Java 关系型数据库
Liunx部署java项目Tomcat、Redis、Mysql教程
本文详细介绍了如何在 Linux 服务器上安装和配置 Tomcat、MySQL 和 Redis,并部署 Java 项目。通过这些步骤,您可以搭建一个高效稳定的 Java 应用运行环境。希望本文能为您在实际操作中提供有价值的参考。
119 26
|
1月前
|
Java 开发者 微服务
Spring Boot 入门:简化 Java Web 开发的强大工具
Spring Boot 是一个开源的 Java 基础框架,用于创建独立、生产级别的基于Spring框架的应用程序。它旨在简化Spring应用的初始搭建以及开发过程。
58 6
Spring Boot 入门:简化 Java Web 开发的强大工具
|
1月前
|
监控 架构师 Java
Java虚拟机调优的艺术:从入门到精通####
本文作为一篇深入浅出的技术指南,旨在为Java开发者揭示JVM调优的神秘面纱,通过剖析其背后的原理、分享实战经验与最佳实践,引领读者踏上从调优新手到高手的进阶之路。不同于传统的摘要概述,本文将以一场虚拟的对话形式,模拟一位经验丰富的架构师向初学者传授JVM调优的心法,激发学习兴趣,同时概括性地介绍文章将探讨的核心议题——性能监控、垃圾回收优化、内存管理及常见问题解决策略。 ####
|
2月前
|
设计模式 消息中间件 搜索推荐
Java 设计模式——观察者模式:从优衣库不使用新疆棉事件看系统的动态响应
【11月更文挑战第17天】观察者模式是一种行为设计模式,定义了一对多的依赖关系,使多个观察者对象能直接监听并响应某一主题对象的状态变化。本文介绍了观察者模式的基本概念、商业系统中的应用实例,如优衣库事件中各相关方的动态响应,以及模式的优势和实际系统设计中的应用建议,包括事件驱动架构和消息队列的使用。
|
2月前
|
存储 缓存 安全
Java 集合框架优化:从基础到高级应用
《Java集合框架优化:从基础到高级应用》深入解析Java集合框架的核心原理与优化技巧,涵盖列表、集合、映射等常用数据结构,结合实际案例,指导开发者高效使用和优化Java集合。
46 4
|
2月前
|
Java
Java项目中高精度数值计算:为何BigDecimal优于Double
在Java项目开发中,涉及金额计算、面积计算等高精度数值操作时,应选择 `BigDecimal` 而非 `Double`。`BigDecimal` 提供任意精度的小数运算、多种舍入模式和良好的可读性,确保计算结果的准确性和可靠性。例如,在金额计算中,`BigDecimal` 可以精确到小数点后两位,而 `Double` 可能因精度问题导致结果不准确。