目录
1. Part1: springmvc总结
2. Part2: Spring mvc框架搭建步骤
3. Part3:Springmvc基于注解的实现
4. Part4:HandleMapping(处理器映射)实现的方式有三种
5. Part4:参数传递的3种方式
6. Part5:返回页面数据的四种方式
7. Part6:Springmvc ajax(基于注解)
Part1: springmvc总结
1.springmvc是一个mvc框架,通过实现MVC很好的将数据,业务,展现进行分离。
2.springmvc设计围绕DispatcherServlet展开的,由DispatcherServlet负责将请求派发到特定的handler.
Part2: Spring mvc框架搭建步骤
1.创建工程,并把springmvc相关的jar包拷贝进项目。
2.配置web.xml,主要配DispatcherServlet(前端控制器),以下代码进行配置。
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
3.在WEB-INF下创建springmvc的配置文件,[servletname]-servlet.xml,文件名必须为springmvc-servlet.xml
4.配置HandlerMapping 根据beanname找到对应Controller(可以省略)
<!-- 配置HandlerMapping,根据beanname找到对应的Controller(可以省略) -->
<bean class="org.springframework.web.servlet.mvc.support.ControllerBeanNameHandlerMapping"></bean>
5.创建jsp页面,需要发出请求页面
6.创建HelloController继承AbstractController重写handleRequestInternal
//返回数据和页面
ModelAndView mav = new ModelAndView("index");
mav.addObject("helloword","hello "+hello);
7.配置视图解析器
<!-- 配置视图解析器 -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<!-- 前缀 -->
<property name="prefix" value="/view/"></property>
<!-- 后缀 -->
<property name="suffix" value=".jsp"></property>
</bean>
8.处理乱码问题:web.xml中添加以下代码
<filter>
<filter-name>CharacterEncodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>utf-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CharacterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
Part3:Springmvc基于注解的实现
1.创建工程,并把springmvc相关的jar包拷贝进项目。
2.配置web.xml,主要配DispatcherServlet(前端控制器),以下代码进行配置。
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
3.在WEB-INF下创建springmvc的配置文件,[servletname]-servlet.xml,文件名必须为springmvc-servlet.xml
4.springmvc-servlet.xml中配置注解驱动
<!-- springmvc注解驱动 -->
<mvc:annotation-driven></mvc:annotation-driven>
5.springmvc-servlet.xml中添加扫描器,用于扫描的目标的包或类。
<!-- 扫描器 -->
<context:component-scan base-package="com"></context:component-scan>
6.新增包,里边添加Controller,配置如下:
package com;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
@RequestMapping("/user")
public class UserController{
@RequestMapping(value="/list.do")
public String list(){
System.out.print("=======*=======");
return "user_list";
}
}
Part4:HandleMapping(处理器映射)实现的方式有三种
1.根据Beanname访问Controller
<!--1. 配置HandlerMapping,根据beanname找到对应的Controller(可以省略) -->
<bean class="org.springframework.web.servlet.mvc.support.ControllerBeanNameHandlerMapping"></bean>
<!-- 配置controller -->
<bean name="/hello.do" class="com.UserController"></bean>
2.根据url访问Controller
<!--2. 通过简单url来查找Controller -->
<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="mappings">
<props>
<prop key="/userInfo.do">userController</prop>
</props>
</property>
</bean>
<bean id="userController" class="com.UserController"></bean>
3.根据Controller类名访问访问Controller,访问时类名首字母需要小写
<!-- 控制类的类名访问controller,访问时类名首字母需要小写 -->
<bean class="org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping"></bean>
<bean class="com.UserController"></bean>
Part5:参数传递的3种方式
1.通过设置HttpServletRequest request来获取数据
@RequestMapping(value="/add.do")
public String add(HttpServletRequest request,HttpServletResponse responce){
String userName=request.getParameter("userName");
String passWord=request.getParameter("passWord");
System.out.print("=======*======="+userName+"====="+passWord);
return "user_list";
}
2.直接设置参数
@RequestMapping(value="/add1.do")
public String add1(String userName,String passWord){
System.out.print("=======*======="+userName+"====="+passWord);
return "user_list";
}
3.通过对象
(1)Controller编写
@RequestMapping(value="/add2.do")
public String add2(UserInfo userinfo){
System.out.print("=======*======="+userinfo);
return "user_list";
}
(2)对象类的编写
package com.pojo;
import java.util.Arrays;
public class UserInfo{
private String userName;
private String passWord;
private String[] userxq;
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;
}
public String[] getUserxq() {
return userxq;
}
public void setUserxq(String[] userxq) {
this.userxq = userxq;
}
@Override
public String toString() {
return "UserInfo [passWord=" + passWord + ", userName=" + userName
+ ", userxq=" + Arrays.toString(userxq) + "]";
}
}
总结:
/**
* 时间属性编辑器
* @param bin
*/
@InitBinder
public void initBinder(ServletRequestDataBinder bin){
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
CustomDateEditor cust=new CustomDateEditor(sdf, true);
bin.registerCustomEditor(Date.class, cust);
}
Part6:返回页面数据的四种方式
1.通过设置HttpServletRequest request来返回数据
@RequestMapping(value="/add.do")
public String add(HttpServletRequest request,HttpServletResponse responce){
String userName=request.getParameter("userName");
String passWord=request.getParameter("passWord");
request.setAttribute("userName", "还是");
return "user_list";
}
2.通过ModelAndView返回数据
@RequestMapping(value="/add1.do")
public ModelAndView add1(){
ModelAndView mav=new ModelAndView("user_list");
mav.addObject("userName","样");
return mav;
}
3.通过Model返回数据
@RequestMapping(value="/add2.do")
public String add2(Model model){
model.addAttribute("userName", "丽莎");
return "user_list";
}
4.通过Map返回数据
@RequestMapping(value="/add3.do")
public String add3(Map map){
map.put("userName", "嘻嘻");
return "user_list";
}
Part7:Springmvc ajax(基于注解)
1.新增jar包处理json数据的
2.新建jsp页面,引入jquery.js
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'index.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<script type="text/javascript" src="js/jquery-1.7.2.js"></script>
<script>
$(function(){
$("#but01").click(function(){
var userName=$("#userName").val();
var userName=$("#userName").val();
$.post("<%=basePath%>ajaxUser.do",{userName:userName},function(data){
alert(data);
});
});
$("#but02").click(function(){
var userName=$("#userName").val();
var userName=$("#userName").val();
$.post("<%=basePath%>ajaxUser1.do",{userName:userName},function(data){
alert(data.userName);
},"json");
});
});
</script>
</head>
<body>
用户名1:<input type="text" id="userName"/>
<input type="button" id="but01"/>
用户名2:<input type="text" id="userName"/>
<input type="button" id="but02"/>
</body>
</html>
3.设置springmvc-servlet.xml用于异步返回json数据
<!-- 从请求和响应读取/编写字符串 -->
<bean id="stringHttpMessage" class="org.springframework.http.converter.StringHttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>text/plain;charset=UTF-8</value>
</list>
</property>
</bean>
<!-- 用于将对象转化为JSON -->
<bean id="jsonConverter" class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"></bean>
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
<property name="messageConverters">
<list>
<ref bean="stringHttpMessage" />
<ref bean="jsonConverter" />
</list>
</property>
</bean>
4.设置Controller处理ajaxUser1用于返回json数据
package com;
import java.io.PrintWriter;
import javax.servlet.http.HttpServletResponse;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import com.pojo.UserInfo;
@Controller
public class UserController{
@RequestMapping(value="/ajaxUser.do")
public String ajaxUser(String userName,HttpServletResponse responce){
try{
responce.setContentType("text/html");
responce.setCharacterEncoding("utf-8");
PrintWriter out=responce.getWriter();
out.println("userName==="+userName);
out.flush();
out.close();
}
catch (Exception e) {
e.printStackTrace();
// TODO: handle exception
}
return "user_list";
}
@RequestMapping(value="/ajaxUser1.do")
public @ResponseBody UserInfo ajaxUser1(String userName){
UserInfo userInfo = new UserInfo();
userInfo.setUserName(userName);
userInfo.setPassWord("123456");
return userInfo;
}
}