请求---->web.xml中的Spring MVC拦截器---->Spring MVC框架配置文件spring-mvc.xml---->具体的控制类
一、web.xml中注册Spring MVC框架的拦截器
<!--Servlet定义
这里我们定义了请求分发Servlet,即:org.springframework.web.servlet.DispatcherServlet
DispatcherServlet 是Spring MVC 中负责请求调度的核心引擎,所有的请求将由此Servlet 根据配置分发至各个逻辑处理单元。其内部同时也维护了一个ApplicationContext实例。-->
<servlet>
<servlet-name>spring-mvc</servlet-name>
<servlet-class> org.springframework.web.servlet.DispatcherServlet </servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring-mvc.xml</param-value>
</init-param>
</servlet>
<!--配置一个请求后缀,凡是以html结尾的路径,都会被springmvc拦截-->
<servlet-mapping>
<servlet-name>spring-mvc</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
二、创建classpath:spring-mvc.xml文件
<?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:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd">
<context:annotation-config />
<!-- 把标记了@Controller注解的类转换为bean -->
<context:component-scan base-package="com.outsource.weixin.stuwx.controller" /> Spring MVC框架只应用于项目的某个模块
<!-- 启动Spring MVC的注解功能,完成请求和注解POJO的映射 -->
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" />
<!-- 对模型视图名称的解析,即在模型视图名称添加前后缀 -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"
p:prefix="/weixin/stuwx/jsp/" />
<bean id="multipartResolver"
class="org.springframework.web.multipart.commons.CommonsMultipartResolver"
p:defaultEncoding="utf-8" />
</beans>
三、创建Spring MVC的controller(类似Struts2的Action)
package com.outsource.weixin.stuwx.controller;
@Controller ----注解形式标注该类属于Spring MVC 的Controller层类似Struts2的Action
@RequestMapping(" /upwk.do") ----请求该类的路径
public class UpLoadWeeklyContriller {
@Autowired
@Qualifier("weeklyNotesService") //注释指定注入
private WeeklyNotesService weeklyNotesService;
@Autowired
@Qualifier("paramConfService") //注释指定注入
private ParamConfService paramConfService ;
@Autowired
@Qualifier("sysUserService") //注释指定注入
private SysUserService sysUserService ;
/** 任务管理层 */
@Autowired
@Qualifier("topicManageService") //注释指定注入
private TopicManageService topicManageService ;
private WeeklyNotes weeklyNotes;
private SysUser sysUser ;
@SuppressWarnings("unchecked")
@RequestMapping(params="createWeeklyNotes") ----请求该方法的路径
public ModelAndView createWeeklyNotes(HttpServletRequest request,HttpServletResponse response){
String redirectUrl=null;
String url = null ;
try {
response.setContentType("application/json;charset=utf-8");----设置响应类型
response.setCharacterEncoding("UTF-8"); ----设置响应编码
request.setCharacterEncoding("UTF-8"); ----设置请求编码
String info = null ;
String openId = null;
ModelAndView ma=new ModelAndView();
// 周记内容
String summaryWeek = request.getParameter("summaryWeek");
openId = request.getParameter("openId");
String weeklyCount = request.getParameter("weeklyCount");
if(summaryWeek.equals("")){
redirectUrl="redirect:/upwk.do?sendWeeklyNotes&openId="+openId+"&weeklyCount="+weeklyCount;
}else{
weeklyNotes = new WeeklyNotes();
weeklyNotes.setSummaryWeek(summaryWeek);
Map queryMap = new HashMap();
queryMap.put("start", 0);
queryMap.put("end", 100);
/** 根据openId获得用户id sysUserId */
sysUser = new SysUser();
if(openId!=null ){
sysUser.setOpenId(openId);
sysUser = sysUserService.getUserIdByOpenId(sysUser);
}
if(sysUser.getSysUserId()!=null||!"".equals(sysUser.getSysUserId())){
queryMap.put("userId", sysUser.getSysUserId());
}
weeklyNotes.setWeekUserId(sysUser.getSysUserId());// 用户id
List<ParamConf> pc = paramConfService.getPlanNameList(queryMap);
if(pc.size()>0){
weeklyNotes.setPlanId(pc.get(0).getPlanId());
weeklyNotes.setPlanStartDate(pc.get(0).getStartDate());
}
weeklyNotes.setWeekCount(Long.parseLong(weeklyCount));
weeklyNotes.setWeekUserId(sysUser.getSysUserId());
weeklyNotesService.insertWeeklyNotes(weeklyNotes);
// 根据学生id获得指导老师id
Map map = new HashMap();
map.put("studentId", sysUser.getSysUserId());
List guidelist = topicManageService.getGuideInfoByStudent(map);
Long guidesId = null ;
for(int i = 0; guidelist!= null && i < guidelist.size(); i++){
Map tempMap = (HashMap)guidelist.get(i);
guidesId = Long.parseLong(tempMap.get("IGUIDE_THR_ID").toString()) ;
}
if(guidesId!=null){
// 创建任务
topicManageService.createTaskByUser("/vsm/zul/weeklyNotes/teacherAuditWeeklyNotesWindow.zul", sysUser.getSysUserId() , guidesId, weeklyNotes.getWeeklyNotesId());
}
redirectUrl="redirect: /upwk.do?getPageWeeklyNotes&openId="+openId;----请求本类upwk.do的getPageWeeklyNotes方法并传递参数openId
}
} catch (Exception e) {
e.printStackTrace();
}
return new ModelAndView(redirectUrl) ; ---通过模型视图传递数据
}
/**
* 周记查看列表
*/
@SuppressWarnings("unchecked")
@RequestMapping(params="getPageWeeklyNotes") ----请求该方法的路径
public String getPageWeeklyNotes(HttpServletRequest request,HttpServletResponse response){
List<WeeklyNotes> list = null ;
String redirectUrl=null;
try {
response.setContentType("application/json;charset=utf-8");
response.setCharacterEncoding("UTF-8");
request.setCharacterEncoding("UTF-8");
String openId=request.getParameter("openId");
Map queryMap = new HashMap();
queryMap.put("start", "0");
queryMap.put("end", "100");
/** 根据openId获得用户id sysUserId */
sysUser = new SysUser();
if(openId!=null ){
sysUser.setOpenId(openId);
sysUser = sysUserService.getUserIdByOpenId(sysUser);
}
if(sysUser!=null){
if(sysUser.getSysUserId()!=null||!"".equals(sysUser.getSysUserId())){
queryMap.put("userId", sysUser.getSysUserId());
}
}
list = weeklyNotesService.getWeeklyNotesPage(queryMap);
System.out.println(list.size());
request.setAttribute("list",list);
redirectUrl= "viewWeekly.jsp?openId="+openId; ----请求viewWeekly.jsp页面并传递参数openId
} catch (Exception e) {
e.printStackTrace();
}
return redirectUrl; ---通过request传递数据
}