介绍
- 所需储备知识点:jsp/servlet、spring、tomcat
- springMVC主要功能:在获取参数信息、文件上传、数据校验等方面等简便
springMVC框架搭建
第一步:导入jar包
第二步:书写主配置文件(springmvc.xml)
springmvc.xml
<!-- 包扫描 -->
<context:component-scan base-package="包名"/>
<!-- 配置MVC框架特有的注解驱动 -->
<mvc:annotation-driver/>
web.xml的配置
<!-- 配置核心类:DispatcherServlet -->
<servlet>
<servlet-name>DispatcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatherServlet<servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springmvc.xml<prarm-value>
</init-param>
<!-- 保证项目启动时第一个加载,数字越小越先加载 -->
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>DispatherServlet</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
第三步:启动tomcat服务器测试
一、springMVC中常用注解
- @Controller注解:
如果一个普通类被此注解修饰,此类的作用类似于Servlet类 - @RequestMapping类:
此注解可以修饰类和方法,用来指定访问的虚拟路径和请求方式等@RequestMapping("/login.do",method=RequestMethod.POST) public void login(User user){ System.out.println(user); } @RequestMapping(value={"/login.do","login2.do"}){ public void add(){ system.out.println("add......") }
- @Scope类:
指定spring创建对象时以单例或多例的方式创建 - @AutoWired类:
- @Param类:
二、springMVC获取参数信息
需要什么参数,就在形参位置给什么参数
@RequestMapping("/login.do",method=RequestMethod.POST)
public void login(User user){
System.out.println(user);
}
@RequestMapping(value={"/login.do","login2.do"}){
public void add(HttpServletRequest request, HttpServletRespinse response, HttpSession session){
system.out.println("add......")
}
三、重定向和转发
- servlet的传统方式
//转发 request.getRequestDispatcher("").forward(request, response); //重定向 response.sendRedirect("");
- springMVC的独特方式:当函数的返回值为字符串时就是重定向或转发
@RequestMapping("/test1") public String text1(){ //转发 return "/index.jsp"; //重定向 return "redirect:/index.jsp";
处理json格式
@RequestMapping()
@ResponseBody //该注解可以将map、list返回值变成json
public Map<String, Object> test2(){
Map<String, Object> hm = new HashMap<String, Object>;
hm.put("id",1L);
hm.put("username","王二麻子");
return hm;
}
返回普通字符串
@RequestMapping()
@ResponseBody
public String test3(){
return "hello";
}
四、视图解析器
视图解析器对转发有效,对重定向无效。
springmvc.xml配置
<!-- 配置视图解析器 -->
<bean id="internalResourceViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<!-- 配置前缀 -->
<property name="prefix" value="/pages/front/"></property>
<!-- 配置后缀 -->
<property name="suffix" value=".jsp"></property>
</bean>
使用
@RequestMapping("/login")
public String login(String username,String password){
if("admin".equals(username) && "123".equals(password)){
return "main"; //相当于“/pages/front/main.jsp”
}
return "fail";
}
五、中文乱码问题
此方法只针对post请求
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>
六、统一异常处理
@ExceptionHandler(Exception.class) //该方式只能处理本类中的异常
public String exceptionHander(){
return "jsp文件";
}