1、New Project——Spring——Spring MVC——(设置项目名,项目的位置)——然后Finish。IDEA会自动下载必要的 jar 包
,构建好后项目结构如图:
2、修改web.xml, 将
元素的值改为 / ,表示拦截所有请求,并交由Spring MVC的后台控制器来处理。
3、编辑dispatcher-servlet.xml,与上面 web.xml 中的
元素配置的 dispatcher 对应,这是 Spring MVC 的映射配置文件(xxx-servlet.xml)。配置如下:
<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">
<bean id="simpleUrlHandlerMapping"
class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="mappings">
<props>
<prop key="/hello">helloControllerprop>
props>
property>
bean>
<bean id="helloController" class="controller.HelloController">bean>
beans>
4、创建HelloController
在项目原文件中创建一个HelloController类(可以建一个包在再创建类),并实现org.springframework.web.servlet.mvc.Controller 接口。如果 javax.servlet 包找不到的话,可将本地 Tomcat 服务器的目录下lib文件夹下的 servlet-api.jar 包拷贝到工程lib文件夹下,并添加依赖(Project Structure——Modules——Dependencies
)。
package controller;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;
import javax.servlet.http.HttpServletRequest; // 需要导入依赖
import javax.servlet.http.HttpServletResponse;
public class HelloController implements Controller {
@Override
public ModelAndView handleRequest(HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) throws Exception {
//Spring MVC 通过 ModelAndView 对象把模型和视图结合在一起
ModelAndView mav = new ModelAndView("index.jsp");
mav.addObject("message", "Hello Spring MVC");
return mav;
}
}
5、修改index.jsp,用El表达式显示 message 的内容.
<%@ page contentType="text/html;charset=UTF-8" language="java"
pageEncoding="UTF-8" isELIgnored="false"%>
$Title$
<%--用El表达式显示 message 的内容。--%>
${message}
6、部署Tomcat环境
Run菜单——Edit Configurations——添加Tomcat Server(Local)——进行相关配置——添加 Deployment ——然后就可以Run工程了
7、启动服务器进行访问,在浏览器中输入地址 localhost:8080/hello,就能得到返回的内容了。
8、几个常见的问题:
Cannot start compilation: the output path is not specified for module “HelloSpringMVC”. Specify the output path in the Project Structure dialog.
原因是项目中此时没有指定class文件生成的路径,进行配置一下:Project Structure——Modules——Paths——Compile output(选择Use module compile output path,并进行相关设置
)。
Error:java: 无效的源发行版: 12
原因是本机的JDK
版本与项目的语言级别不同造成的,设置相同的jdk版本。Project Structure——Project——Project SDK 要和Project language level 版本一致,或者与Project Structure——Modules——Source(Language level 一致)
。
以上就基本实现了一个简单的Spring MVC demo,并且通过配置dispatcher进行拦截请求,通过dispatcher-servlet查询HandlerMapping并调用相应的Controller。然后将数据模型传递到视图层。整个项目都是通过xml配置完成的,下面可使用注解完成程序的配置(注解和xml的作用是等效的)。
1、为HelloController 添加注解,使用@Controller
注解来声明控制器,使用@RequestMapping
注解进行方法映射。
package controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@Controller
public class HelloController {
@RequestMapping("/hello")
public ModelAndView handleRequest(HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) throws Exception {
//Spring MVC 通过 ModelAndView 对象把模型和视图结合在一起
ModelAndView mav = new ModelAndView("index.jsp");
mav.addObject("message", "Hello Spring MVC");
return mav;
}
}
2、取消之前dispatcher-servlet.xml 文件中配置,并增加一句组件扫描的配置:
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
<context:component-scan base-package="controller"/>
beans>
重启服务器,项目仍然可以正常运行。以上就就算通过使用XML和注解进行Spring MVC项目的简单配置过程,现在大多项目比较提倡使用注解,主要原因是因为xml过于冗长,配置比较麻烦,而注解则简化了配置,使用起来也比较直观容易,能够提升开发效率。当然xml也有一些注解没有的优点,比如说xml类与类间的的松耦合,使类容易扩展和更换,在灵活性上xml要注解好很多。
1、创建一个login.jsp页面,使用表单提交数据请求。form action="/param" role="form" method=post
设置数据提交的目录方法。
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
登录界面
欢迎登录
2、在HelloController中创建一个doPost方法,并使用@RequestMapping("/param")注释。通过request.getParameter()方法获取提交的数据,并进行验证,输出返回对应的信息。
@RequestMapping("/param")
protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws IOException{
response.setContentType("text/html;charset=UTF-8");
String username = request.getParameter("username");
String password = request.getParameter("password");
PrintWriter out = response.getWriter();
if(username.equals("admin")&&password.equals("123456")){
out.println("登录成功!"
+"");
}
else{
out.println("用户名或密码错误!"
+"");
}
out.flush();
out.close();
}
至此,基本上利用Spring MVC框架实现了简单的Java web demo,从项目环境的配置,Tomcat的部署,JSP和Servlet的控制跳转,以及Spring MVC的简单工作原理都简单的概括了。嗯,就这样,先熟悉一个基本流程,后续的业务逻辑等以后再慢慢去实现。