话不多说,直接上代码:
注解是Spring的一个构建的一个重要手段,减少写配置文件,下面解释一下一些要用到的注解:
@Configuration 作用于类上面,声明当前类是一个配置类(相当于一个Spring的xml文件)
@ComponentScan(“xxx”) 作用于类上面,自动扫描xxx包名下所有使用@Service、@Component、@Repository和@Controller的类,并注册为Bean
@Bean 作用与类和方法上,相当于Spring配置文件bean节点
@EnableWebMvc 作用于类,开启一些默认配置,如一些ViewResolver或者MessageConverter
@RequestMapping 作用于类、方法,配置URL和方法之间的映射
@RequestBody 作用于参数前,允许request的参数在request体中,而不是在直接链接在地址后面
@ResponseBody 作用于返回值、方法上,支持将返回值放在response体中,而不是返回一个页面。
@RequestParam 作用于参数前,将form的对应name值映射到当前参数中。
项目的创建这里就省略啦........
pom.xml配置文件:
4.0.0
com.oukele.hellowrod
HelloWord
1.0-SNAPSHOT
war
org.springframework
spring-context
5.1.3.RELEASE
org.springframework
spring-core
5.1.3.RELEASE
org.springframework
spring-beans
5.1.3.RELEASE
org.springframework
spring-web
5.1.3.RELEASE
org.springframework
spring-webmvc
5.1.3.RELEASE
javax.servlet
javax.servlet-api
4.0.1
javax.servlet
jstl
1.2
View Code
导入静态资源:
在WEB-INF中,直接粘贴boostrap的标准资源,并新建一个views文件夹,将index.jsp拉进去,将自己写的Login.jsp(想要示例的登陆页面的话在本文的最下面有个github地址可以去下载)复制进去,效果如下(顺便删了web.xml):
java文件夹下面的目录结构
创建SpringConfig类(类似配置文件):
新建类SpringConfig类,继承WebMvcConfigurerAdapter,并配置一些必要的方法。
packagecom.oukele.spring;importorg.springframework.context.annotation.Bean;importorg.springframework.context.annotation.ComponentScan;importorg.springframework.context.annotation.Configuration;import org.springframework.web.servlet.config.annotation.*;importorg.springframework.web.servlet.view.InternalResourceViewResolver;importorg.springframework.web.servlet.view.JstlView;
@Configuration//声明当前类是一个配置类(类似于 spring_xxx.xml 的文件)
@EnableWebMvc//若无此注解,WebMvcConfigurerAdapter无效
@ComponentScan//自动扫描spring注解 比如@Service、@Component、@Repository和@Controller的类,并注册为Bean
public class SpringConfig extendsWebMvcConfigurerAdapter {//添加一个ViewResolver解析view
@Bean//相当于Spring配置文件bean节点
publicInternalResourceViewResolver viewResolver(){
InternalResourceViewResolver viewResolver= newInternalResourceViewResolver();
viewResolver.setPrefix("/WEB-INF/views/");
viewResolver.setSuffix(".jsp");
viewResolver.setViewClass(JstlView.class);returnviewResolver;
}//注册静态资源,没注册的话,网站是访问不了的
@Overridepublic voidaddResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/css/**").addResourceLocations("/WEB-INF/css/");
registry.addResourceHandler("/js/**").addResourceLocations("/WEB-INF/js/");
registry.addResourceHandler("/fonts/**").addResourceLocations("/WEB-INF/fonts/");
}//根目录的时候直接跳转到登录界面
@Overridepublic voidaddViewControllers(ViewControllerRegistry registry) {
registry.addViewController("/").setViewName("Login");
}
}
与xml配置对比:
创建WebInit类(web.xml配置文件):
在 WebInit类中实现 WebApplicationInitializer接口 并实现方法,方法的内容如下:
packagecom.oukele.spring;importorg.springframework.web.WebApplicationInitializer;importorg.springframework.web.context.support.AnnotationConfigWebApplicationContext;importorg.springframework.web.servlet.DispatcherServlet;importjavax.servlet.ServletContext;importjavax.servlet.ServletException;importjavax.servlet.ServletRegistration;public class WebInit implementsWebApplicationInitializer {public void onStartup(ServletContext servletContext) throwsServletException {
AnnotationConfigWebApplicationContext ctx= newAnnotationConfigWebApplicationContext();
ctx.register(SpringConfig.class);
ctx.setServletContext(servletContext);
ServletRegistration.Dynamic dynamic= servletContext.addServlet("dispatcher",newDispatcherServlet(ctx));
dynamic.addMapping("/");
dynamic.setLoadOnStartup(1);
}
}
web.xml文件 与 WebInit 类 的对比:
new DispatcherServlet(ctx); --> 在上写文中注册Spring配置文件,添加到DispatcherServlet上下文中。
添加Controller:
新建一个LoginController类。
packagecom.oukele.spring.controller;importorg.springframework.stereotype.Controller;importorg.springframework.web.bind.annotation.RequestMapping;importorg.springframework.web.bind.annotation.RequestParam;
@Controllerpublic classLoginController {
@RequestMapping("/login")public String login(@RequestParam("username") String username, @RequestParam("pwd") String pwd) {
String forword= null;if (username.equals("oukele") && pwd.equals("oukele")) {
forword= "index";//登录成功跳转到index.jsp
} else{
System.out.println("no such user");
forword= "Login";//登录失败跳转到Login.jsp继续登录操作
}returnforword;
}
}
添加Tomcat,运行:
这里已经设置根目录是Login.jsp页面。
运行结果:
到这里就结束啦。