建设征婚网站网络服务主要包括什么
文章目录
- 零、本节学习目标
- 一、基于Java配置与注解的方式使用Spring MVC
- 1、创建Maven项目 - SpringMVCDemo2020
- 2、在pom.xml文件里添加相关依赖
- 3、创建日志属性文件 - log4j.properties
- 4、创建首页文件 - index.jsp
- 5、创建Spring MVC配置类 - SpringMvcConfig
- 6、创建Web应用初始化配置类 - MyWebInitializer
- 7、创建问候控制器 - HelloController
- 8、配置Tomcat服务器
- 9、启动服务器,查看效果
- 10、 将Spring MVC配置类与Web应用初始化配置类放到config子包
- 二、实战练习
- 任务1、创建登录页面、登录成功与登录失败页面
- 1、登录页面 - login.jsp
- 2、登录成功页面 - success.jsp
- 3、登录失败页面 - failure.jsp
- 任务2、首页添加登录链接,单击可跳转到登录页面
- 1、 修改首页,添加超链接
- 2、修改Spring MVC配置类,定义视图控制器
- 3、创建登录控制器 - LoginController
- 4、启动服务器,查看效果
- 任务3、添加静态资源,让Spring MVC正确处理
- 1、在images目录里添加一张图片 - bear.jpg
- 2、修改Spring MVC配置文件,添加静态资源映射
- 3、修改首页文件,添加图片元素
- 4、启动服务器,查看效果
- 5、在js目录里创建脚本 - check.js
- 6、修改Spring MVC配置文件
- 7、修改登录页面,导入脚本文件
- 8、启动服务器,查看效果
- 9、在css目录里创建样式文件 - login.css
- 10、修改Spring MVC配置文件
- 11、修改登录页面,导入样式文件
- 12、启动服务器,查看效果
零、本节学习目标
- 会基于Java配置与注解的方式使用Spring MVC
- 使用Spring与Spring MVC框架完成用户登录功能
上一讲,我们学习了如何基于XML配置与注解的方式使用Spring MVC,涉及到三个XML配置文件:Spring配置文件(spring-config.xml)、Spring MVC配置文件(spring-mvc-config.xml)、Web部署描述文件(web.xml),这一讲,我们通过案例学习如何基于Java配置与注解的方式使用Spring MVC,只有Java配置类,没有XML配置文件。
一、基于Java配置与注解的方式使用Spring MVC
1、创建Maven项目 - SpringMVCDemo2020
2、在pom.xml文件里添加相关依赖
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>net.hw.spring</groupId><artifactId>SpringDemo2020</artifactId><version>1.0-SNAPSHOT</version><properties><!-- spring.version --><spring.version>5.2.9.RELEASE</spring.version></properties><dependencies><!--Spring核心--><dependency><groupId>org.springframework</groupId><artifactId>spring-core</artifactId><version>${spring.version}</version></dependency><!--Spring Bean--><dependency><groupId>org.springframework</groupId><artifactId>spring-beans</artifactId><version>${spring.version}</version></dependency><!--Spring容器--><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>${spring.version}</version></dependency><!--Spring测试--><dependency><groupId>org.springframework</groupId><artifactId>spring-test</artifactId><version>${spring.version}</version></dependency><!--Spring数据库支持--><dependency><groupId>org.springframework</groupId><artifactId>spring-jdbc</artifactId><version>${spring.version}</version></dependency><!--数据库驱动工具包--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.49</version></dependency><!--数据库连接池框架--><dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.1.24</version></dependency><!--日志框架--><dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>1.2.17</version></dependency><!--Spring AOP--><dependency><groupId>org.springframework</groupId><artifactId>spring-aop</artifactId><version>${spring.version}</version></dependency><!--AspectJ支持--><dependency><groupId>aspectj</groupId><artifactId>aspectjrt</artifactId><version>1.5.4</version></dependency><dependency><groupId>org.aspectj</groupId><artifactId>aspectjweaver</artifactId><version>1.9.6</version><scope>runtime</scope></dependency><!--单元测试--><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.13</version><scope>test</scope></dependency><!--Spring Web--><dependency><groupId>org.springframework</groupId><artifactId>spring-web</artifactId><version>${spring.version}</version></dependency><!--Spring MVC--><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>${spring.version}</version></dependency><!--JSP标准标签库--><dependency><groupId>javax.servlet</groupId><artifactId>jstl</artifactId><version>1.2</version></dependency><!--Servlet--><dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>3.1.0</version><scope>provided</scope></dependency><!--对json的支持--><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-core</artifactId><version>2.9.7</version></dependency><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId><version>2.9.7</version></dependency><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-annotations</artifactId><version>2.9.7</version></dependency><!--对xml的支持--><dependency><groupId>com.fasterxml.jackson.dataformat</groupId><artifactId>jackson-dataformat-xml</artifactId><version>2.5.3</version></dependency></dependencies>
</project>
3、创建日志属性文件 - log4j.properties
- 在resources目录里创建log4j.properties
log4j.rootLogger=WARN, stdout, logfile
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - %m%n
log4j.appender.logfile=org.apache.log4j.FileAppender
log4j.appender.logfile.File=target/spring.log
log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
log4j.appender.logfile.layout.ConversionPattern=%d %p [%c] - %m%n
4、创建首页文件 - index.jsp
- 在resources里创建templates子目录,然后在子目录里创建index.jsp
5、创建Spring MVC配置类 - SpringMvcConfig
- 创建net.hw.spring包,然后在里面创建SpringMvcConfig类
package net.hw.spring;import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import org.springframework.web.servlet.view.InternalResourceViewResolver;
import org.springframework.web.servlet.view.JstlView;
/*** 功能:Spring MVC配置类* 作者:华卫* 日期:2020年10月01日*/
@Configuration
@EnableWebMvc
@ComponentScan("net.hw.spring")
public class SpringMvcConfig implements WebMvcConfigurer {@Beanpublic InternalResourceViewResolver viewResolver () {InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();viewResolver.setPrefix("/WEB-INF/classes/templates/");viewResolver.setSuffix(".jsp");viewResolver.setViewClass(JstlView.class);return viewResolver;}
}
6、创建Web应用初始化配置类 - MyWebInitializer
- 现在Java配置方式在逐步取代XML配置方式,WebApplicationInitializer接口可以看做是web.xml的替代,通过实现WebApplicationInitializer接口,在其中可以添加servlet,listener等,在加载Web项目时会加载这个接口实现类,从而起到web.xml相同的作用。
package net.hw.spring;import org.springframework.web.WebApplicationInitializer;
import org.springframework.web.context.support.AnnotationConfigWebApplicationContext;
import org.springframework.web.servlet.DispatcherServlet;import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.ServletRegistration;/*** 功能:Web应用初始化配置类* 作者:华卫* 日期:2020年10月01日*/
public class MyWebInitializer implements WebApplicationInitializer {@Overridepublic void onStartup(ServletContext servletContext) throws ServletException {// 创建Web应用容器AnnotationConfigWebApplicationContext context = new AnnotationConfigWebApplicationContext();// 注册配置类(配置类对应以前的spring-mvc-config.xml文件)context.register(SpringMvcConfig.class);// 与当前ServletContext关联context.setServletContext(servletContext);// 注册Spring MVC的前端控制器(DispatcherServlet)ServletRegistration.Dynamic servlet = servletContext.addServlet("dispatcher", new DispatcherServlet(context));// 过滤一切资源请求servlet.addMapping("/");// 设置启动加载顺序servlet.setLoadOnStartup(1);}
}
7、创建问候控制器 - HelloController
- 在net.hw.spring包里创建controller子包,然后在里面创建HelloController类
package net.hw.spring.controller;import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;/*** 功能:问候控制器* 作者:华卫* 日期:2020年10月01日*/
@Controller
public class HelloController {@RequestMapping("/hello")public String hello() {return "index";}
}
8、配置Tomcat服务器
- 单击【Add Configuration…】
- 添加Tomcat Server - Local
- 单击【Fix】按钮
- 单击【OK】按钮
- 查看项目启动URL
9、启动服务器,查看效果
10、 将Spring MVC配置类与Web应用初始化配置类放到config子包
二、实战练习
任务1、创建登录页面、登录成功与登录失败页面
1、登录页面 - login.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>用户登录</title><meta http-equiv="Content-Type" content="text/html; charset=utf-8" >
</head>
<body>
<h3 style="text-align: center">用户登录</h3>
<form id="frmLogin" action="login" method="post"><table class="tb" border="1" cellpadding="10" style="margin: 0px auto"><tr><td align="center">账号</td><td><input id="username" type="text" name="username"/></td></tr><tr><td align="center">密码</td><td><input id="password" type="password" name="password"/></td></tr><tr align="center"><td colspan="2"><input type="submit" value="登录"/><input type="reset" value="重置"/></td></tr></table>
</form>
</body>
</html>
2、登录成功页面 - success.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head><title>登录成功</title>
</head>
<body>
<h1>${username},登录成功!</h1>
</body>
</html>
3、登录失败页面 - failure.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head><title>登录失败</title>
</head>
<body>
<h1>${username},登录失败!</h1>
</body>
</html>
任务2、首页添加登录链接,单击可跳转到登录页面
1、 修改首页,添加超链接
2、修改Spring MVC配置类,定义视图控制器
package net.hw.spring.config;import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import org.springframework.web.servlet.view.InternalResourceViewResolver;
import org.springframework.web.servlet.view.JstlView;/*** 功能:Spring MVC配置类* 作者:华卫* 日期:2020年10月01日*/
@Configuration
@EnableWebMvc
@ComponentScan("net.hw.spring")
public class SpringMvcConfig implements WebMvcConfigurer {@Beanpublic InternalResourceViewResolver viewResolver() {InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();viewResolver.setPrefix("/WEB-INF/classes/templates/");viewResolver.setSuffix(".jsp");viewResolver.setViewClass(JstlView.class);return viewResolver;}/*** 添加视图控制器* @param registry*/@Overridepublic void addViewControllers(ViewControllerRegistry registry) {registry.addViewController("/toLogin").setViewName("login");}
}
3、创建登录控制器 - LoginController
- 在controller子包里创建LoginController类
package net.hw.spring.controller;import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;import javax.servlet.http.HttpSession;/*** 功能:登录控制器* 作者:华卫* 日期:2020年10月01日*/
@Controller
public class LoginController {@RequestMapping("/login")public String login(@RequestParam("username") String username,@RequestParam("password") String password,HttpSession session) {session.setAttribute("username", username);if (username.equals("admin") && password.equals("12345")) {return "success"; // 逻辑视图名} else {return "failure"; // 逻辑视图名}}
}
4、启动服务器,查看效果
任务3、添加静态资源,让Spring MVC正确处理
- 在resources里创建static目录,在static里创建images、css和js目录
1、在images目录里添加一张图片 - bear.jpg
2、修改Spring MVC配置文件,添加静态资源映射
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHandler("/images/**"). addResourceLocations("classpath:/static/images/");
}
3、修改首页文件,添加图片元素
4、启动服务器,查看效果
5、在js目录里创建脚本 - check.js
/*** 检验登录表单* * @returns {Boolean}*/
function checkLoginForm() { // 获取用户名文本框var username = document.getElementById("username");// 获取密码文本框var password = document.getElementById("password");// 非空校验if (username.value == "") {alert("用户名不能为空!");// 让用户名文本框获得焦点username.focus();return false;}if (password.value == "") {alert("密码不能为空!");// 让密码文本框获得焦点password.focus();return false;} return true; // 表明可以提交数据到服务器端
}
6、修改Spring MVC配置文件
registry.addResourceHandler("/js/**").addResourceLocations("classpath:/static/js/");
7、修改登录页面,导入脚本文件
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>用户登录</title><meta http-equiv="Content-Type" content="text/html; charset=utf-8" ><script src="js/check.js"></script>
</head>
<body>
<h3 style="text-align: center">用户登录</h3>
<form id="frmLogin" action="login" method="post"><table class="tb" border="1" cellpadding="10" style="margin: 0px auto"><tr><td align="center">账号</td><td><input id="username" type="text" name="username"/></td></tr><tr><td align="center">密码</td><td><input id="password" type="password" name="password"/></td></tr><tr align="center"><td colspan="2"><input type="submit" value="登录" onclick="return checkLoginForm()"/><input type="reset" value="重置"/></td></tr></table>
</form>
</body>
</html>
8、启动服务器,查看效果
9、在css目录里创建样式文件 - login.css
10、修改Spring MVC配置文件
registry.addResourceHandler("/css/**").addResourceLocations("classpath:/static/css/");
11、修改登录页面,导入样式文件
12、启动服务器,查看效果