Spring-mvc
首先servlet 在这里变成了controller(控制器)
接下来是web.xml的配置:
Filter 过滤器,用来解决字符乱码的问题(这里只能解决post传过来的数据),get类型的需要配置Tomcat或者用
name= new String(name.getBytes("ISO-8859-1"),"utf-8");进行转码
<filter>
<filter-name>encodingFilter</filter-name>
<!--CharacterEncodingFilter的路径需要按住Ctrl加上Shift 和T 进行查找 -->
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<!-- 初始化字符集 -->
<init-param>
<!-- 这里的encoding固定写法 -->
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<!-- 这里的名字要与上面的名字一致 -->
<filter-name>encodingFilter</filter-name>
<!-- /*代表根路径下所有 -->
<url-pattern>/*</url-pattern>
</filter-mapping>
<!-- 配置spring的核心控制器 -->
<servlet>
<servlet-name>mvc</servlet-name>
<!--DispatcherServlet的路径需要按住Ctrl加上Shift 和T 进行查找 -->
<servlet-class>
org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!-- mvc的配置文件的路径 -->
<init-param>
<!-- 这里的contextConfigLocation固定写法 -->
<param-name>contextConfigLocation</param-name>
<!-- springmvc.xml是创建的spring的xml文件 -->
<param-value>classpath:springmvc.xml</param-value>
</init-param>
<!-- 启动tomcat 时加载DispatcherServlet -->
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>mvc</servlet-name>
<!--根路径下的 -->
<url-pattern>/</url-pattern>
</servlet-mapping>
配置完web.xml接下来是spring-mvc.xml:1:在xmlns里添加context,mvc并且同步添加到xsi里
<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/mvc " >http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd">
2: <!-- 添加扫描配置包 com.zb.contorller代表扫描的具体的包 -->
<context:component-scan base-package="com.zb.contorller"></context:component-scan>
3:<!-- 解析springmvc的注解 -->
<mvc:annotation-driven/>
4:<!-- 基于springmvc的注解开发 -->
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"></bean>
5:<!-- 视图结果映射 -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<!--
文件在跟路径下
prefix:http://localhost:8080/springmvc_02/
suffix:文件的类型
-->
<property name="prefix" value="/"></property>
<property name="suffix" value=".jsp"></property>
</bean>
6:<!-- 加载静态资源 -->
<!-- location="/static/" 根路径下的static mapping="/static/**" 根路径下的static里的(css,js,img)等所有 -->
<mvc:resources location="/static/" mapping="/static/**"/>
7:
<!-- 全局异常配置 -->
<bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
<property name="exceptionMappings">
<props>
<!-- 错误出现运行时异常, 跳转到error.jsp页面 -->
<prop key="java.lang.RuntimeException">error</prop>
</props>
</property>
</bean>
配置完成后,是类上的一些注解的使用:
@Controller
@Scope("prototype"),单例模式,每次创建一个新的单例
@SessionAttributes({"u"}) //将ModelMap中属性名字为u的再放入session中
Spring-mvc常用注解详情:https://www.cnblogs.com/leskang/p/5445698.html
异常处理:
package com.zb.controller;
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.ExceptionHandler;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.HandlerExceptionResolver;
import org.springframework.web.servlet.ModelAndView;
@Controller
@RequestMapping("/data")
//在类上定义,指定唯一的访问空间,在访问方法时必须, 先在方法的requestmapping前添加类上的映射/data?op=show
public class DataController implements HandlerExceptionResolver{
@RequestMapping(params = "op=show")
public String showData(Model model) {
//http://localhost:8080/springmvc_03/data?op=show
model.addAttribute("msg", "这是dataController中存储的数据!");
//演示全局异常
throw new RuntimeException("程序运行错误!");
// return "ok";
}
/**
* 局部异常处理
1.HandlerExceptionResolver
2.resolveException()
局部异常处理
仅能处理指定Controller中的异常
3.@ExceptionHandler
* @param model
* @return
*/
@RequestMapping(value="/show")
@ExceptionHandler
public String showData1(Model model) {
//http://localhost:8080/springmvc_03/data/show
model.addAttribute("msg", "这是dataController中存储的数据!");
//演示局部异常
throw new RuntimeException("程序运行错误!");
// return "ok";
}
public ModelAndView resolveException(HttpServletRequest request,
HttpServletResponse arg1, Object arg2, Exception arg3) {
// TODO Auto-generated method stub
request.setAttribute("errMgs", arg3);
return new ModelAndView("error");
}
}
新手上路,请多多指教,只是自己的一些笔记,嘿嘿