(1)新建 Spring 项目
(2)添加所需要的 jar 包
spring 的 5+2:
- spring-core.jar
- spring.beans.jar
- spring-context.jar
- spring-expression.jar
- spring-aop.jar
- spring-web.jar
- spring-webmvc.jar
- (这 2 个 jar 包是 spring mvc 的)
Web 应用的 2 个:
- servlet.jar
- jsp.jar
这 2 个包的名字五花八门, 总之就是 servlet 一个, jsp 一个.
可以到 tomcat 的 lib 下复制, 也可以下载 Java EE 的压缩包.
可以在 Project Structure 中添加包, 这种方式在部署时容易出现 lib 复制不全的问题,
解决方式参考:
也可以在 Web-INF 下新建文件夹 lib, 把 jar 包复制到此文件夹, 然后对 lib 点击右键 ->Add as Library.
Web 应用的 lib 要建在 Web-INF 下, 只有建在 Web-INF 下, 部署时才会复制.
(3)新建包 com.chy,model, 包下新建实体类 User
- package com.chy.model;
- public class User {
- private String username;
- private String password;
- public String getUsername() {
- return username;
- }
- public void setUsername(String username) {
- this.username = username;
- }
- public String getPassword() {
- return password;
- }
- public void setPassword(String password) {
- this.password = password;
- }
- }
(4)新建包 com.chy.controller, 包下新建类 UserController, 只需实现 Controller 接口
- package com.chy.controller;
- import com.chy.model.User;
- import org.springframework.Web.servlet.ModelAndView;
- import org.springframework.Web.servlet.mvc.Controller;
- public class UserController implements Controller {
- @Override
- public ModelAndView handleRequest(javax.servlet.http.HttpServletRequest httpServletRequest, javax.servlet.http.HttpServletResponse httpServletResponse) throws Exception {
- // 视图可以在构造器中指定, 也可以先使用空参构造器, 在调用 setter 方法设置
- ModelAndView mav = new ModelAndView("/WEB-INF/jsp/user_info.jsp");
- User user = new User();
- user.setUsername("chy");
- user.setPassword("abcd");
- // 向视图传递数据
- mav.addObject("user", user);
- return mav;
- }
- }
注意实现的是 org.springframework.Web.servlet.mvc.Controller , 不要导错了.
(5)Web-INF 下新建文件夹 jsp,jsp 文件夹下新建文件 user_info.jsp
- <%@ page contentType="text/html;charset=UTF-8" language="java" %>
- <HTML>
- <head>
- <title>Title</title>
- </head>
- <body>
用户名:${user.username} <br />
密码:${user.password}
</body>
</HTML>
使用 controller 传过来的数据, 实质是通过 model 的 getter 方法获取属性值.
(6)在 src 下新建 springmvc 的配置文件 springmvc-config.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"
- xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
- <!-- 配置 url 处理器 -->
- <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping" />
- <!-- 配置控制器处理的适配器 -->
- <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter" />
- <!-- 配置资源视图解析器 -->
- <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" />
- <!-- 配置要使用的控制器, name 的值需要加 / -->
- <bean name="/userController" class="com.chy.controller.UserController" />
- </beans>
(7)在 Web.xml 中用 DispatcherServlet 拦截所有 HTTP 请求
- <?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">
- <!-- 配置 DispatcherServlet-->
- <servlet>
- <servlet-name>dispatcherServlet</servlet-name>
- <servlet-class>org.springframework.Web.servlet.DispatcherServlet</servlet-class>
- <!-- 指定配置文件的位置 -->
- <init-param>
- <param-name>contextConfigLocation</param-name>
- <param-value>classpath:springmvc-config.xml</param-value>
- </init-param>
- <!-- 1 表示 web 容器 (比如 tomcat) 启动时就初始化此 servlet -->
- <load-on-startup>1</load-on-startup>
- </servlet>
- <!-- 拦截所有 HTTP 请求 -->
- <servlet-mapping>
- <servlet-name>dispatcherServlet</servlet-name>
- <url-pattern>/</url-pattern>
- </servlet-mapping>
- </Web-App>
如果未指定 springmvc 配置文件的路径, 默认会去 Web-INF 下找名为 DispatcherServlet-servlet.xml 的文件,
所以也可以在 Web-INF 下新建 DispatcherServlet-servlet.xml, 在里面写 springmvc 的配置.
如果未指定 Servlet 的加载时机, 会在需要时才加载 (初始化) 此 Servlet.
测试
部署项目, 访问 controller:
http://localhost:8080/springmvc_war_exploded/userController
显示:
用户名: chy
密码: abcd
视图名的拼接
上面的 demo 中, 我们在 controller 中写的是完整的视图名:
ModelAndView mav = new ModelAndView("/WEB-INF/jsp/user_info.jsp");
每次设置视图名时都写一长串, 很麻烦, 可以拼接视图名:
- ModelAndView mav = new ModelAndView("user_info");
- <!-- 配置资源视图解析器 -->
- <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
- <!-- 前缀 -->
- <property name="prefix" value="/WEB-INF/jsp/" />
- <!-- 后缀 -->
- <property name="suffix" value=".jsp" />
- </bean>
来源: http://www.bubuko.com/infodetail-3398494.html