最近要做一个Web项目,采用了Spring的MVC框架,特此记录下这次搭建过程
1.准备Spring所需的MVC,IOC,数据库等Jar包:
spring配置文件:
2.Web.xml文件
配置拦截请求DispatcherServlet,上下文监听器SpringContext,过滤器Filter
<!-- 配置DispatcherServlet,指定拦截.do的请求, 请求转发给对应的Controller处理 --> <servlet> <servlet-name>DtServlet</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/classes/*-mvc.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>DtServlet</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>customDim.html</welcome-file> <welcome-file>index.jsp</welcome-file> </welcome-file-list> <!-- 配置Spring的上下文监听器,并且指定Spring的xml配置文件的路径 --> <listener> <listener-class> org.springframework.web.context.ContextLoaderListener </listener-class> </listener> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:spring-context.xml</param-value> </context-param> <!-- 配置filter,返回UTF-8编码的数据格式 --> <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> <init-param> <param-name>forceEncoding</param-name> <param-value>true</param-value> </init-param> </filter> <filter-mapping> <filter-name>characterEncodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
3. spring-context.xml上下文监听器文件配置:IOC对象初始化
<context:property-placeholder location="classpath:jdbc.properties" /> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> <property name="driverClassName" value="${jdbc.driver}" /> <property name="url" value="${jdbc.url}" /> <property name="username" value="${jdbc.username}" /> <property name="password" value="${jdbc.password}" /> <property name="maxActive" value="${jdbc.maxActive}" /> <property name="maxIdle" value="${jdbc.maxIdle}" /> <property name="maxWait" value="${jdbc.maxWait}" /> <property name="defaultAutoCommit" value="${jdbc.defaultAutoCommit}" /> </bean> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource" /> </bean> <bean id="dataDao" class="com.sun.dt.dao.impl.DataDaoImpl"> <property name="dataSource" ref="dataSource"></property> </bean> <bean id="dataService" class="com.sun.dt.service.impl.DataServiceImpl"> <property name="dataDao" ref="dataDao"></property> </bean>
4. jdbc.properties文件
jdbc.driver=oracle.jdbc.driver.OracleDriver jdbc.url=jdbc:oracle:thin:@127.0.0.1:1526:testdb jdbc.username=test001 jdbc.password=123456 jdbc.maxActive=10 jdbc.maxIdle=3 jdbc.maxWait=5 jdbc.defaultAutoCommit=false
5.spring-mvc.xml中MVC拦截后转发配置controller
<beans:beans> <!-- 加载Spring的全局配置文件 --> <beans:import resource="spring-context.xml" /> <!-- SpringMVC配置 --> <!-- 通过component-scan 让Spring扫描com.sun.dt.controller下的所有的类,让Spring的代码注解生效 --> <context:component-scan base-package="com.pingan.dt.controller"></context:component-scan> <!-- 配置SpringMVC的视图渲染器, 让其前缀为:/ 后缀为.jsp 将视图渲染到/page/<method返回值>.jsp中 --> <beans:bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" p:prefix="/page/" p:suffix=".jsp"> </beans:bean> </beans:beans>
6.MVC中Conntroller类
通过spring-mvc.xml文件中配置拦截的请求都转给com.sun.dt.conntroller类处理,类中可针对不同不同URL请求给不同的conntroller类和其方法处理
import java.io.IOException; import java.io.PrintWriter; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; @Controller @RequestMapping("/data/*") public class DataController { @Resource(name = "dataService") private DataService dataService; private String username = "test001"; private String code = ""; //获取维度机构信息 @RequestMapping(value="department",method=RequestMethod.GET) public @ResponseBody List department(){ ArrayList<Department> list = dataService.getDepartmentInfo(code); return list; } @RequestMapping(value="catgory1",method=RequestMethod.GET) public void catgory11(String username,HttpServletResponse response){ String jsonString = dataService.getCategoryInfo(username); try { response.setCharacterEncoding("UTF-8"); response.setContentType("text/json"); PrintWriter out = response.getWriter(); out.print(jsonString); out.flush(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } //获取用户自定义维度信息 @RequestMapping(value="catgory",method=RequestMethod.GET) public void catgory(PrintWriter printWriter){ String jsonString = dataService.getCategoryInfo(umName); printWriter.write(jsonString); printWriter.flush(); } // 用户自定义维度保存接口 @RequestMapping(value="dimdef",method=RequestMethod.POST) public @ResponseBody Map<String,String> dimdef(@RequestParam("json")String json){ HashMap<String,String> map = new HashMap<String,String>(); System.out.println(json); if(checkJson(json)){ dataService.saveDefDimension(umName, json); map.put("result", "defined dimension finished"); map.put("code","1"); }else{ map.put("result", "json invalid"); map.put("code","-1"); } return map; } // 用户树形结构书签保存接口 @RequestMapping(value="marksaving",method=RequestMethod.POST) public @ResponseBody Map<String,String> saveBookMark(@RequestParam("bookmark")String json){ HashMap<String,String> map = new HashMap<String,String>(); System.out.println(json); if(checkJson(json)){ dataService.saveBookMark(umName, json); //System.out.println(json); map.put("result", "defined dimension finished"); map.put("code","1"); }else{ map.put("result", "json invalid"); map.put("code","-1"); } return map; } // 用户获取书签获取书签列表信息接口 @RequestMapping(value="marklist",method=RequestMethod.GET) public @ResponseBody List bookMarkList(){ ArrayList<BookMark> list = dataService.getBookMarkList(umName); return list; } // 用户获取书签节点信息接口 @RequestMapping(value="bookmark",method=RequestMethod.GET) public void bookMark(PrintWriter printWriter,@RequestParam("markid")String markId){ BookMark bm = new BookMark(); bm.setMarkId(markId); bm.setUmName(umName); String jsonString = dataService.getBookMarkInfo(bm); printWriter.write((jsonString == null) ? "" : jsonString); printWriter.flush(); } // 用户书签删除接口markid=11 @RequestMapping(value="markdel",method=RequestMethod.GET) public @ResponseBody Map<String,String> delBookMark(@RequestParam("markid")String markId){ HashMap<String,String> map = new HashMap<String,String>(); System.out.println("markdel " + markId); if(!markId.equals("")){ dataService.delBookMark(markId); //System.out.println(json); map.put("result", "defined dimension finished"); map.put("code","1"); }else{ map.put("result", "json invalid"); map.put("code","-1"); } return map; } // 用户书签删除接口markid=11 @RequestMapping(value="markupdate",method=RequestMethod.POST) public @ResponseBody Map<String,String> updateBookMark(@RequestParam("bookmark")String json){ HashMap<String,String> map = new HashMap<String,String>(); System.out.println(json); if(checkJson(json)){ dataService.updateBookMark(umName, json); //System.out.println(json); map.put("result", "defined dimension finished"); map.put("code","1"); }else{ map.put("result", "json invalid"); map.put("code","-1"); } return map; } private boolean checkJson(String json){ return true; } }
7.浏览器中直接输入
即可看见获取机构返回信息
参考:http://blog.csdn.net/swingpyzf/article/details/8904205