@Controller用于类;@RequestMapping("/login")用于方法,即涉及到login路径的用注解的以下方法,还可以用来接收表单数据,就一个参数时,可以省略value。
内部资源视图解析器InternalResourceViewResolver最常用,配置如下
<bean id="viewResolver"
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<!--前缀 -->
<property name="prefix" value="/WEB-INF/jsp/" />
<!--后缀 -->
<property name="suffix" value=".jsp" />
</bean>
重定向:客户端行为,两次请求,url地址会变,之前获得得参数已失效。
请求转发:服务器行为,一次请求,url地址不变,之前获得得参数可以继续使用。
post请求:更安全,url地址中不出现填写的数据。
get请求:表单中填写的参数在跳转时会带到url地址中,重定向默认使用的是get请求。
model.addAttribute(key, value);在后端中将key封装进model 在前端可以通过EL表达式${key}来获取value,
key为对象时,可以获取对象的各个属性,如model.addAttribute("user", user);${user.name},${user.age}
@Service 注解会将标注类自动注册到 Spring 容器中。对Service类注解
@Autowired 注解可以对类成员变量、方法及构造函数进行标注,完成自动装配的工作。对 private XXService xxService;注解,
会使XXService 的一个实例(对象)被注入到 XXController 实例中。本质是spring的DI和IOC,不再new对象,即可实例化对象。
拦截器:1.自定义拦截器类实现接口HandlerInterceptor中的三个方法preHandle postHandle afterCompletion
对于登录前的拦截preHandle( )来说,可以分为已登录(通过session来记录登录,予以放行)和未登录(未在登录页面想进入其它页面的,进行拦截并跳转到登录页面。
还可以对登录中postHandle,登陆完成后afterCompletion进行拦截
2.在springmvc中注册拦截器和指定拦截器规则(拦截路径和不拦截路径)
<!-- 配置拦截器 -->
<mvc:interceptors>
<mvc:interceptor>
<!-- 配置拦截器作用的路径 -->
<mvc:mapping path="/**" />
<bean class="com.hty.interceptor.LoginInterceptor" />
</mvc:interceptor>
</mvc:interceptors>
@ModelAttribute 注解在方法的参数上,调用方法时,模型的值会被注入。public String login(@ModelAttribute("user") User user) 等同于model.addAtttribute("user", user)”,
实际中多用后面的,因为可能不止注入对象的值,还有可能注提示的message或者其它信息,这样还是需要实例Model 然后addAtttribute。
@ModelAttribute 注解的方法会在每次调用该控制器类的请求处理方法前被调用。这种特性可以用来控制登录权限。
比如写个父类,然后子类继承:在Controller 类中的 add、update、delete 请求处理方法执行时,首先执行父类 BaseController 中的 isLogin 方法判断登录权限,
Spring MVC类型转换器(Converter)可以用内置转换器,
也可以自定义(自定义一个类中写自己想要的转换器实现接口,并且在springmvc-servlet.xml 配置文件中注册格式化转换器类,即将自定义类型转换器交给Spring管理,注册过后就可自动使用,controller或者jsp不用动。
比如一个文本框直接输入三个参数,通过逗号隔开来取参数并赋值,实际没有必要,直接三个文本框输入三个参数直接赋值即可,或者自定义转化时间类型格式)
Session根据count属性,每访问一次页面就记录一次访问次数 方法头参数用HttpSession session,方法体中就可以用session,只是一个访问次数,可能一个用户访问多次,所以不太能用来算作用户数,用户数应该根据session的创建和销毁
post请求中文问题,出现乱码,需要在xml里面配置过滤器,get出现乱码需要修改Tomcat文件编码
文件上传:需要导入 commons-io-2.4.jar 和 commons-fileupload-1.2.2.jar 两个 jar 文件 并且 配置MultipartResolver 解析器
在springmvc.xml文件中添加<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"/>
负责文件上传表单的编码类型必须是“multipart/form-data”类型。即<form action="/login" method="post" enctype="multipart/form-data">
文件下载(程序编码)可分为两个步骤:
在客户端使用一个文件下载超链接,链接指向后台下载文件的方法以及文件名。
在控制器类中,提供文件下载方法进行下载。
利用程序编码实现下载需要设置以下两个报头:
response.setHeader("Content-Type", "application/x-msdownload");
response.setHeader("Content-Disposition", "attachment;filename="+filename); 看Demo5
数据校验,需要导入三个包,并在实体类中通过注解来限制输入的数据如@NotNull(message = "用户id不能为空")private Integer id; 暂未完成,可能是数据包或者xml文件配置问题,后续学到maven时 在maven的pom.xml文件中添加依赖导包( springmvc.xml文件是否需要注册Validator数据校验驱动)暂时不知道,后续实验完成
验证完成,需要在 springmvc.xml文件中配置Validator数据校验器并注册,maven添加依赖导包校验器在xml文件中配置不会出错,不用maven导包配置会出错,原因可能是自己导包导的不准确。
maven的pom.xml中添加
<dependency>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
<version>1.1.0.Final</version>
</dependency>
<dependency>
<groupId>org.jboss.logging</groupId>
<artifactId>jboss-logging</artifactId>
<version>3.1.0.CR2</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>5.1.0.Final</version>
</dependency>
注意注意:pom添加依赖以后 一定去proiect structure中打入war包
xml中配置如下 :
<!-- 配置校验器 -->
<bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean">
<!-- 校验器,使用hibernate校验器 -->
<property name="providerClass" value="org.hibernate.validator.HibernateValidator"/>
</bean>
<!-- 引入验证器 -->
<mvc:annotation-driven validator="validator"/>
controller层需要使用public String xxx(@Valid Account account, BindingResult result) 将实体类和校验器连在一起
想要将校验器实体类注解中的错误信息在前端显示,则前端用<sf:form action="" method="" modelAttribute="实体类"></sf:form >表单,在输入的每一行后面加上<sf:errors path="id"></sf:errors>即可 还需再开打上sf标签<%@ taglib prefix="sf" uri="http://www.springframework.org/tags/form" %> 有时候提交或者按钮事件没反应,一般就是jsp页面的语法写错
异常处理,自定义异常类实现异常处理接口 HandlerExceptionResolver,并在xml配置文件中注册自定义异常类
<!--托管MyExceptionHandler-->
<bean class="net.biancheng.exception.MyExceptionHandler"/>
发生异常时,Spring MVC 会通过xml文件中注册的自定义异常类调用其中的resolveException() 方法,并转到 ModelAndView 对应的视图中,返回一个异常报告页面反馈给用户。
Spring REST 风格可以简单理解为:使用 URL 表示资源时,每个资源都用一个独一无二的 URL 来表示,并使用 HTTP 方法表示操作,即准确描述服务器对资源的处理动作(GET、POST、PUT、DELETE),实现资源的增删改查。
ssm整合:首先搭建整合环境,创建maven工程选择webapp框架,导入各个依赖,创建各个package(controller,service,dao,domain即实体类) main/java存放源代码 main/resources存放配置文件
ssm整合:spring配置文件applicationContext.xml springmvc配置文件web.xml springmvc.xml mybatis配置文件mybaitsConfig.xml
spring整合mvc:因为启动tomcat时只加载了springmvc的配置文件即只扫描了controller层,没有加载spring配置文件即没有扫描service和dao,所以除了配置自身的配置文件,还需在web.xml里面配置spring的监听器(等于把springmvc连接到spring中),这样启动服务器时就加载spring配置文件,然后tomcat启动加载springmvc配置文件
spring整合mybatis 把mybatis中的配置文件mybatisConfig.xml内容在到spring配置文件中配置一遍去(等于把mybatis连接到spring中),让它产生代理并存到IOC容器中
详细可看https://blog.csdn.net/qq_44543508/article/details/100192558 以及ssm项目 各个配置文件的导入可以直接从ssm项目中拿
前端onclick事件传递多个参数时使用以下格式:οnclick="update('a','b','c')" 不管几个参数,里面参数记得加单引号,否则会出现不执行方法
注意注意:pom添加依赖以后 一定去project structure中打入war包