轻量级MVC框架搭建

本实验主要描述轻量级MVC框架(jquery+Spring MVC+Spring+Mybatis)的搭建。本实验分为两步骤进行介绍,第一步讲述Spring MVC框架环境的搭建,第二步讲述Spring与Mybatis框架的整合配置。

学习轻量级MVC框架的搭建。通过本次实验要掌握Spring MVC框架的搭建,以及Spring与Mybatis框架的整合,并掌握Spring 事务的配置。

环境搭建

  Spring Jar包引入

打开相关类库文件夹,一共有5个文件夹:

common文件夹:存放整个项目依赖的公用jar包;

js文件夹:存放前端依赖的js文件;

mybatis文件夹:存放后台持久化数据库Mybatis所依赖的jar包;

spring文件夹:spring框架的依赖jar包;

upload文件夹:文件上传的一些jar包。

 Spring框架配置

 web.xml配置。

将下面代码复制到web.xml文件中。

<?xml version="1.0" encoding="UTF-8"?>

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">

  <display-name>mvc_demo</display-name>

  <!-- 配置需要装载的Spring配置文件 -->

       <!-- 默认的路径是"/WEB-INF/applicationContext.xml,多个路径用号隔开 -->

       <context-param>

           <param-name>contextConfigLocation</param-name>

           <param-value>

                  /WEB-INF/spring/applicationContext.xml       

           </param-value>

       </context-param>

 

       <!-- Spring监听配置,Web容器启动自动装配ApplicationContext的配置信息 -->

       <listener>

              <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>

       </listener>

 

       <!-- Spring字符编码过滤器配置,处理中文乱码,针对post请求 -->

       <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>

      

       <!-- Spring Servlet配置 -->

       <servlet>

              <servlet-name>spring</servlet-name>

              <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>

              <init-param>

                     <param-name>contextConfigLocation</param-name>

                     <!-- 默认的路径是"/WEB-INF/spring-servlet.xml,多个路径用号隔开 -->

                     <param-value>/WEB-INF/spring/spring-servlet.xml</param-value>

              </init-param>

              <load-on-startup>1</load-on-startup>

       </servlet>

      

       <servlet-mapping>

              <servlet-name>spring</servlet-name>

              <url-pattern>/service/*</url-pattern>

       </servlet-mapping>

 

       <welcome-file-list>

              <welcome-file>jsp/index.jsp</welcome-file>

       </welcome-file-list>

 

</web-app>

Spring MVC中文乱码解决办法

为了解决中文乱码问题,我们需要修改tomcat的server.xml配置文件,在路径D:\apache-tomcat-7.0.30\conf中打开server.xml。

找到

<Connector port="8080"protocol="HTTP/1.1" connectionTimeout="20000"redirectPort="8443" />

改为:

<Connector port="8080"protocol="HTTP/1.1" connectionTimeout="20000"redirectPort="8443" URIEncoding="UTF-8"/>。

打开eclipse中Servers下面的server.xml文件。

同样找到上面那段代码,我们将server.xml改为:

<ConnectorconnectionTimeout="20000" port="8080"protocol="HTTP/1.1" redirectPort="8443" URIEncoding="UTF-8"/>

应用上下文配置

Spring配置用于开启基于注解的spring功能,照web.xml中设定,在WEB-INF中添加名为spring的文件夹。然后,在该文件夹下添加applicationContext.xml。选中spring文件夹,鼠标右键选择File

添加applicationContext.xml文件名,点击完成。

配置applicationContext.xml如下:

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"

       xmlns:context="http://www.springframework.org/schema/context"

       xmlns:beans="http://www.springframework.org/schema/beans"

       xmlns:p="http://www.springframework.org/schema/p"

       xmlns:mvc="http://www.springframework.org/schema/mvc"

       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

       xsi:schemaLocation="http://www.springframework.org/schema/beans

                    http://www.springframework.org/schema/beans/spring-beans-3.2.xsd

                    http://www.springframework.org/schema/context

                    http://www.springframework.org/schema/context/spring-context-3.2.xsd

                    http://www.springframework.org/schema/mvc

                    http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd

                    ">

                  

</beans>

DispatchServlet配置

Spring servlet配置用于开启基于注解的spring MVC功能,照web.xml中设定,在spring文件中建立spring-servlet.xml,过程同上。在spring-servlet.xml中添加如下代码:

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"

       xmlns:context="http://www.springframework.org/schema/context"

       xmlns:beans="http://www.springframework.org/schema/beans"

       xmlns:p="http://www.springframework.org/schema/p"

       xmlns:mvc="http://www.springframework.org/schema/mvc"

       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

       xsi:schemaLocation="http://www.springframework.org/schema/beans

                    http://www.springframework.org/schema/beans/spring-beans-3.2.xsd

                    http://www.springframework.org/schema/context

                    http://www.springframework.org/schema/context/spring-context-3.2.xsd

                    http://www.springframework.org/schema/mvc

                    http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd

                    ">

       <!-- 启动注解驱动的Spring MVC功能,注册请求url和注解POJO类方法的映射 -->

       <mvc:annotation-driven />

       <!-- 启动包扫描功能,以便注册带有@Controller@Service@repository@Component等注解的类成为springbean -->

       <context:component-scan base-package="com.inspur"></context:component-scan>

 

       <!-- 对模型视图名称的解析,在请求时模型视图名称添加前后缀 -->

       <bean

              class="org.springframework.web.servlet.view.InternalResourceViewResolver"

              p:prefix="/jsp/"

              p:suffix=".jsp" >

    </bean>

</beans> 


测试运行。

首先,在WebContent中添加jsp文件夹,在文件夹下创建index.jsp文件。创建步骤同.xml文件。将文件名命名为index.jsp。

复制如下代码到该文件。

<%@ page language="java" contentType="text/html; charset=gb2312"

    pageEncoding="gb2312"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=gb2312">

<title>首页</title>

</head>

<body>

       <h>恭喜环境搭建成功!</h>

</body>

</html>

在WebContent下创建skin文件夹(该文件夹主要用来存放前端js文件和样式文件CSS)。接着,在skin文件下创建css和js文件夹。同时,将相关类库中js文件夹下的jquery.js复制到js相应目录。如图:

为了能让项目正常运行,我们需要将相应的jar包添加到编译路径中。按照上面的步骤在JavaBuild Path中选择Libraries。点击Add JARs。在弹窗中选择mvc_demo项目找到WEB-INF下lib目录,选择该目录下所有jar包点击ok。

接着,添加jsp和servlet依赖jar包,点击AddExternal JARs,在弹出框中选择D盘tomcat目录下的lib文件,将jsp-api.jar和servlet-api.jar选中点击“打开”,添加到路径中。最后,点击确定完成jar导入。

在server视图,选中该tomcat右键选择Add andRemove如下图:

选择当前文件,add添加,完成项目部署。

选中tomcat右键选择publish,再start启动。

浏览器输入: http://localhost:8080/mvc_demo/jsp/index.jsp.出现如图界面,表示搭建成功:

为了后面的实验,这里我们再在jsp文件夹下添加一个rest.jsp页面。如下图所示:

在该页面中添加如下代码:

<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<script type="text/javascript" src="<%=request.getContextPath()%>/skin/js/jquery.js"></script>

<title>Insert title here</title>

<script type="text/javascript">

$(function($){

       $("#submit").bind("click",function(){

              var methodName = $("#methodName").val();

              var url = $("#urlPath").val();

              var param = $("#param").val();

              $.ajax({

                     url : url,

                     contentType: "application/json;charset=utf-8",

                     data : param,

                     async : false,

                     type: methodName,

                     success : function(data) {

                            $("#result").html(data);

                     },

                     error : function(data){

                            $("#result").html(data.responseText);

                     }

              });

       });

});

</script>

</head>

<body>

      

       <table>

              <tr><td>Method</td><td><select id="methodName"><option value="get">get</option><option value="post">post</option></select></td></tr>

              <tr><td>URL</td><td><input id="urlPath" type="text" size="100" ></td></tr>

              <tr><td>参数</td><td><textarea id="param" rows="3" cols="100"></textarea></td></tr>

              <tr><td colspan="2"><input type="submit" id="submit" value="提交"/></td></tr>

       </table>

       <div id="result" style="border: 1px solid; #ced">

       </div>

</body>

</html>

 

与Mybatis整合

Mybatis jar引入:

在上面实验基础上复制相关类库文件中mybatis文件下的所有jar包到lib目录下。

 Mybatis配置

       在上面项目的WebContent\WEB-INF\spring文件夹下添加datasource.xml数据源文件,用来配置数据源信息。添加如下代码:

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"

       xmlns:tx="http://www.springframework.org/schema/tx" xmlns:p="http://www.springframework.org/schema/p"

       xmlns:aop="http://www.springframework.org/schema/aop" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

       xsi:schemaLocation="http://www.springframework.org/schema/beans  

    http://www.springframework.org/schema/beans/spring-beans-3.2.xsd  

    http://www.springframework.org/schema/tx  

    http://www.springframework.org/schema/tx/spring-tx-3.2.xsd  

    http://www.springframework.org/schema/aop   

    http://www.springframework.org/schema/aop/spring-aop-3.2.xsd">

       <!-- 配置数据源 -->

       <bean id="dataSource"

              class="org.springframework.jdbc.datasource.DriverManagerDataSource">

              <property name="driverClassName">

                     <value>com.mysql.jdbc.Driver</value>

              </property>

              <property name="url">

                     <value>jdbc:mysql://localhost:3306/databaseName?characterEncoding=UTF-8

                     </value>

              </property>

              <property name="username">

                     <value>username</value>

              </property>

              <property name="password">

                     <value>password</value>

              </property>

       </bean>

</beans>

注:数据源配置中标红的字体需要修改成和自己匹配的数据信息。其中,databaseName:填写自己需要连接的数据库名称;

username:对应数据库的用户名称;

password:该用户的用户名密码。

在WebContent\WEB-INF\spring文件下添加Mybatis配置文件mybatis-config.xml。复制如下代码到该文件。

<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "classpath:/mybatis-3-config.dtd">

 

<configuration>

       <settings>

              <setting name="jdbcTypeForNull" value="NULL" />

              <setting name="callSettersOnNulls" value="true" />

        <setting name="logImpl" value="LOG4J" />   

    </settings>

</configuration>

在WebContent\WEB-INF\spring文件下添加Mybatis上下文配置文件mybatis-context.xml。该文件用来配置和spring框架的依赖。复制如下代码到该文件。

<?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:context="http://www.springframework.org/schema/context"

       xmlns:tx="http://www.springframework.org/schema/tx"

       xsi:schemaLocation="http://www.springframework.org/schema/beans

                                          http://www.springframework.org/schema/beans/spring-beans-3.2.xsd

                                          http://www.springframework.org/schema/context

                                          http://www.springframework.org/schema/context/spring-context-3.2.xsd

                                          http://www.springframework.org/schema/tx

                                          http://www.springframework.org/schema/tx/spring-tx-3.2.xsd"

       >

 

       <bean id="mybatisTransactionManager"

              class="org.springframework.jdbc.datasource.DataSourceTransactionManager">

              <property name="dataSource" ref="dataSource" />

       </bean>

 

       <tx:annotation-driven transaction-manager="mybatisTransactionManager" />

 

       <!-- define the SqlSessionFactory -->

       <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">

              <property name="dataSource" ref="dataSource" />

              <property name="configLocation" value="/WEB-INF/spring/mybatis-config.xml"/>

       </bean>

       <!-- 定义扫描路径 -->

    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">

       <property name="basePackage" value="com.inspur.**.dao" />

       <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" />

   </bean>   

</beans>

修改web.xml文件。添加Mybatis配置文件路径。添加如下红色字体代码。

<?xml version="1.0" encoding="UTF-8"?>

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">

  <display-name>mvc_demo</display-name>

  <!-- 配置需要装载的Spring配置文件 -->

       <!-- 默认的路径是"/WEB-INF/applicationContext.xml,多个路径用号隔开 -->

       <context-param>

           <param-name>contextConfigLocation</param-name>

           <param-value>

                  /WEB-INF/spring/datasource.xml

                     /WEB-INF/spring/mybatis-context.xml

                  /WEB-INF/spring/applicationContext.xml       

           </param-value>

       </context-param>

 

       <!-- Spring监听配置,Web容器启动自动装配ApplicationContext的配置信息 -->

       <listener>

              <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>

       </listener>

 

       <!-- Spring字符编码过滤器配置,处理中文乱码,针对post请求 -->

       <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>

      

       <!-- Spring Servlet配置 -->

       <servlet>

              <servlet-name>spring</servlet-name>

              <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>

              <init-param>

                     <param-name>contextConfigLocation</param-name>

                     <!-- 默认的路径是"/WEB-INF/spring-servlet.xml,多个路径用号隔开 -->

                     <param-value>/WEB-INF/spring/spring-servlet.xml</param-value>

              </init-param>

              <load-on-startup>1</load-on-startup>

       </servlet>

      

       <servlet-mapping>

              <servlet-name>spring</servlet-name>

              <url-pattern>/service/*</url-pattern>

       </servlet-mapping>

 

       <welcome-file-list>

              <welcome-file>jsp/index.jsp</welcome-file>

       </welcome-file-list>

 

</web-app>

添加jar到编译路径

为了能让项目正常运行,我们需要将Mybatis的jar包添加到编译路径中。按照上面的步骤在JavaBuild Path中选择Libraries。点击Add JARs。在弹窗中选择mvc_demo项目找到WEB-INF下lib目录,选择该目录下刚刚添加的Mybatis jar包点击ok。

至此,Spring与Mybatis整合搭建完成,按照上面验证spring的方法,重新发布该项目到tomcat,然后运行,查看console控制台是否正常。


 


一个非常简单的MVC框架,实现了类似Spring MVC的基本功能。 1、包括自动扫描绑定映射路径,只要在web.xml中指定扫描包,系统启动后会将请求url绑定到指定的处理方法上。如: 在web.xml中定义如下: <context-param> <param-name>ScanPackage</param-name> <param-value>com.mvc.controller</param-value> </context-param> 容器在启动时候,会将com.mvc.controller下所有映射路径绑定处理方法上,假如在扫描包中定义下列类: import javax.imageio.ImageIO; import javax.servlet.ServletOutputStream; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import com.hxw.simple.light.mvc.annotation.MappingMethodAnnotation; import com.hxw.simple.light.mvc.view.SimpleModelView; import com.mvc.verification.VerificationCode; public class LoginController { @MappingMethodAnnotation(mappingMethod = "/login.do") public String login(HttpServletRequest request, HttpServletResponse response) { return "login/main"; } @MappingMethodAnnotation(mappingMethod = "/loginvm.do") public SimpleModelView loginView(HttpServletRequest request, HttpServletResponse response) { SimpleModelView mv = new SimpleModelView("login/mainmv"); Map<String, String> m = new HashMap<String, String>(); m.put("beij", "北京"); m.put("sha", "上海"); m.put("nanj", "南京"); mv.setAttribute("city", m); return mv; } @MappingMethodAnnotation(mappingMethod = "/Verify.do") public void service(HttpServletRequest arg0, HttpServletResponse arg1) throws IOException { HttpServletRequest request = (HttpServletRequest) arg0; HttpServletResponse response = (HttpServletResponse) arg1; response.setContentType("image/jpeg"); response.setHeader("Pragma", "No-cache"); response.setHeader("Cache-Control", "no-cache"); response.setDateHeader("Expires", 0); VerificationCode vCode = new VerificationCode(); BufferedImage bufferImage = vCode.getImageData(); HttpSession session = request.getSession(); response.addCookie(new Cookie("JSSESIONID", session.getId())); ServletOutputStream responseOutputStream = response.getOutputStream(); ImageIO.write(bufferImage, "JPEG", responseOutputStream); responseOutputStream.flush(); responseOutputStream.close(); } } 那么在接到url请求如:http://localhost:8080/TestSimpleMVC/loginvm.do 会调用指定的方法处理。 2、支持视图定义,在web.xml定义了视图路径后: <servlet> <servlet-name>DelegateForwardServlet</servlet-name> <servlet-class>com.hxw.simple.light.mvc.servlet.DelegateForwardServlet</servlet-class> <init-param> <param-name>prefix</param-name> <param-value>/WEB-INF/view/</param-value> </init-param> <init-param> <param-name>suffix</param-name> <param-value>.jsp</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>DelegateForwardServlet</servlet-name> <url-pattern>/SYS_FORWARD_URL.fo</url-pattern> </servlet-mapping> 只需在执行完方法后,返回字符串:如return "login/main"就会跳转到指定视图,还可以在视图中用EL表单式访问modelview数据,例子如: SimpleModelView mv = new SimpleModelView("login/mainmv"); Map<String, String> m = new HashMap<String, String>(); m.put("beij", "北京"); m.put("sha", "上海"); m.put("nanj", "南京"); mv.setAttribute("city", m); return mv; 3、支持数据参数自动绑定如: @ParamAttribute(type = ParamaAttributeType.REQUEST, key = "userPassword") String s, @ParamAttribute(type = ParamaAttributeType.SESSION, key = "11212") String s1, @ParamAttribute(type = ParamaAttributeType.SERVLETCONTEXT, key = "32312") String s2, @ParamAttribute(type = ParamaAttributeType.REQUEST, key = "userNames") String[] s3 系统根据参数指定的范围,这指定范围内赋值到参数上,你还可以直接使用javabean做参数绑定,如: public class User extends PaginatedHelper { private static final long serialVersionUID = -8225389551152428829L; private String userName; private String userPassword; public User() { super(); } public User(String userName, String userPassword) { super(); this.userName = userName; this.userPassword = userPassword; } public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } public String getUserPassword() { return userPassword; } public void setUserPassword(String userPassword) { this.userPassword = userPassword; } 在方法上带上 Uer user后,属性名称相同的数据就会赋值到javabean上。不必再使用繁琐的user.setUserName(request.getParameter("userName")); 3、简便的jdbc操作 有查询模板QueryTemplate,命名查询NamedQueryTemplate及bean作为参数的BeanQueryTemplate等。支持返回javabean类型,javabean列表, MAP类型,map列表类型,统计结果queryForInt等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值