springmvc从零开始
无聊大学生疫情在家属实无聊,提前开始学校的教学任务,springMVC是在eclipse中开始的。
1:第一个SpringMVC程序
首先需要做的就创建工程,导入需要的jar包
然后首先开始写前端控制器:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
id="WebApp_ID" version="3.1">
<display-name>Chacpter11</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>
<!-- 配置前端控制器 -->
<servlet>
<servlet-name>springmvc</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>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
然后就是控制器和前端页面
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;
public class FirstController implements Controller {
@Override
public ModelAndView handleRequest(HttpServletRequest arg0, HttpServletResponse arg1) throws Exception {
ModelAndView mav = new ModelAndView();
mav.addObject("msg", "第一个springmvc");
mav.setViewName("first.jsp");
return mav;
}
}
这里的控制器需要继承Controller方法,并创建一个ModelAndView对象,向对象中添加数据和设置逻辑视图名。这样,页面请求就会发送到逻辑视图中了。
然后就是写配置文档
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:mvc="http://www.springframework.org/schema/mvc"
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
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd">
<bean name="/controller" class="com.itheima.controller.FirstController"/>
</beans>
定义一个bean,将控制器映射到bean中,通过页面实现控制器的方法。
最后创建jsp页面`
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<font size="6" color="red">
${msg}
</font>
</body>
</html>
通过${msg}取值
最后的运行结果是:
2:通过注解的方式进行配置
前面的接口方法过于复杂,可以直接把controller接口换成@Controller注解。
同时可以通过@RequestMapping注解来对控制器内部的请求进行处理。
@RequestMapping标注在方法上时对方法进行注解,标注在类上时对类进行 注解。
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class FirstController{
@RequestMapping(value="/hello")
public String handleRequest(HttpServletRequest request,
HttpServletResponse response,Model model) throws Exception{
model.addAttribute("msg", "第二个");
return "first";
}
}
同时需要在配置文档中对直接进行扫描,和配置视图解析器。
<?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:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.3.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-4.3.xsd">
<context:component-scan base-package="com.itheima.controller"/>
<bean id="ViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/jsp/" />
<property name="suffix" value=".jsp" />
</bean>
</beans>
3:SpringMVC的简单数据绑定
在2的基础上,对基本的简单数据进行绑定
首先对定义一个控制器类,并定义方法的访问路径。
import javax.servlet.http.HttpServletRequest;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
@Controller
public class FirstController {
@RequestMapping(value="/selectUser")
public String selectUser(HttpServletRequest request) {
String id = request.getParameter("id");
System.out.println("id=" + id);
return "success";
}
@RequestMapping(value="/aaa")
public String user(Integer id) {
System.out.println("id=" + id);
return "success";
}
@RequestMapping(value="/bbb")
public String user2(@RequestParam("user_id")Integer id) {
System.out.println("id="+id);
return "success";
}
}
第一个方法中中使用了 HttpServletRequest类型,并通过该对象的GetParameter() 方法获取了指定的参数 ,为了方便查看结果,将获取的参数进行输出打印。
页面地址中的id值被打印到了控制台,这说明HttpServletRequest类型完成了数据绑定。
通过第二个方法可以看出,将方法的参数类型换成简单数据类型也可以完成数据绑定。
第三个方法是当前端请求的参数名和控制器类的参数名不一样时,解决数据绑定问题的