Spring MVC使用笔记

在浏览器地址栏输入http://localhost:8080/spmvc01/reg.jsp,显示界面:
注册用户名
reg.jsp的代码如下:(reg.jsp放在WebRoot文件夹下)

<%@ page language="java" import="java.util.*" pageEncoding="gbk"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">

    <title>My JSP 'reg.jsp' starting page</title>

    <meta http-equiv="pragma" content="no-cache">
    <meta http-equiv="cache-control" content="no-cache">
    <meta http-equiv="expires" content="0">    
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="description" content="This is my page">
  </head>

  <body>
    <form action=user.do>
        用户名:<input type=text name=uname /><br/>
        <input type=hidden name=method value="reg"/>
        <input type=submit value= 注册   />
    </form>     
  </body>
</html>

里面一个form标签,属性有action=user.do
form标签下三个input标签:
第一个,属性有type 和name,表示文本框以及指定名称
第二个,属性有type,name,value,表示隐藏域
第三个,属性有type,value,表示提交按钮submit,按钮上显示注册
很明显这是注册常用的form标签,action会跳转页面,使用到了servlet
这里的action怎么配置的呢?

需要用到web.xml文件,代码如下:

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" 
    xmlns="http://java.sun.com/xml/ns/javaee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
    http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

    <servlet>
        <servlet-name>dispatcherServlet</servlet-name>
        <servlet-class>
            org.springframework.web.servlet.DispatcherServlet
        </servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>/WEB-INF/hib-config.xml,/WEB-INF/web-config.xml,/WEB-INF/service-config.xml,/WEB-INF/dao-config.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>dispatcherServlet</servlet-name>
        <url-pattern>*.do</url-pattern> 
    </servlet-mapping>

</web-app>

里面的servlet-mapping标签下的url-pattern,指定了凡是以.do结尾的URL通通可以执行servlet。而user.do到底指向哪个servlet呢?

需要使用web-config.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" 
    xsi:schemaLocation="
http://www.springframework.org/schema/beans 
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">

    <!-- Controller方法调用规则定义 -->
    <bean id="paraMethodResolver"
        class="org.springframework.web.servlet.mvc.multiaction.ParameterMethodNameResolver">
        <property name="paramName" value="action"/>
        <property name="defaultMethodName" value="list"/>
    </bean>

   <!-- 页面View层基本信息设定 -->
    <bean id="viewResolver"       class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="viewClass"          value="org.springframework.web.servlet.view.JstlView"/>
        <!--<property name="prefix" value="/myjsp/"/>-->
        <property name="suffix" value=".jsp"/>
    </bean>

<!-- servlet映射列表,所有控制层Controller的servlet在这里定义 -->
    <bean id="urlMapping"        class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
        <property name="mappings">
            <props>
                <prop key="user.do">userController</prop>
            </props>
        </property>
    </bean>

<bean id="userController" class="com.sxt.action.UserController">
    <property name="userService" ref="userService"></property>
</bean>

</beans>

里面的bean标签,且id=”urlMapping”,指定user.do
–>userController;
然后userController标签注入了userService标签,在service-config.xml文件中找到;
service-config.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" 
    xsi:schemaLocation="
http://www.springframework.org/schema/beans 
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">

    <bean id="userService" class="com.sxt.service.UserService">
        <property name="userDao" ref="userDao"></property>
    </bean>

</beans>

然后userService标签又注入了userDao标签,在dao-config.xml文件中找到;
dao-config.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" 
    xsi:schemaLocation="
http://www.springframework.org/schema/beans 
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">

    <bean id="userDao" class="com.sxt.dao.UserDao">
      <property name="hibernateTemplate" ref="hibernateTemplate"></property>
    </bean>


</beans>

然后userDao标签注入了hibernateTemplate标签,在hib-config.xml文件中找到;
hib-config.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:aop="http://www.springframework.org/schema/aop"
    xmlns:tx="http://www.springframework.org/schema/tx"
    xmlns:context="http://www.springframework.org/schema/context"
    xsi:schemaLocation="
http://www.springframework.org/schema/beans 
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-2.5.xsd
http://www.springframework.org/schema/aop 
http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
  http://www.springframework.org/schema/context   
   http://www.springframework.org/schema/context/spring-context-2.5.xsd
">
    <context:component-scan  base-package="com.sxt"/>   
    <!-- 支持aop注解 -->
    <aop:aspectj-autoproxy />


    <bean id="dataSource"  
            class="org.apache.commons.dbcp.BasicDataSource">  
            <property name="driverClassName"  
                value="com.mysql.jdbc.Driver">  
            </property>  
            <property name="url" value="jdbc:mysql://localhost:3306/myhib"></property>  
            <property name="username" value="root"></property>  
            <property name="password" value="123456"></property>
    </bean>  

   <bean id="sessionFactory"  
       class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">  
           <property name="dataSource">  
               <ref bean="dataSource" />  
           </property>
           <property name="hibernateProperties">  
               <props>  
                <!-- key的名字前面都要加hibernate. -->
                   <prop key="hibernate.dialect">  
                       org.hibernate.dialect.MySQLDialect  
                   </prop>  
                   <prop key="hibernate.show_sql">true</prop>
                   <prop key="hibernate.hbm2ddl.auto">update</prop>
               </props>
           </property>
        <property name="packagesToScan">
            <value>com.sxt.po</value>
        </property>
   </bean>  

<bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate" >
    <property name="sessionFactory" ref="sessionFactory"></property>
</bean>

<!--配置一个JdbcTemplate实例-->  
<bean id="jdbcTemplate"  class="org.springframework.jdbc.core.JdbcTemplate">   
     <property name="dataSource" ref="dataSource"/>   
</bean>  


<!-- 配置事务管理 -->
<bean id="txManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager" >
    <property name="sessionFactory" ref="sessionFactory"></property>
</bean>
<tx:annotation-driven transaction-manager="txManager" />
<aop:config> 
    <aop:pointcut expression="execution(public * com.sxt.service.impl.*.*(..))" id="businessService"/> 
    <aop:advisor advice-ref="txAdvice" pointcut-ref="businessService" /> 
</aop:config> 
<tx:advice id="txAdvice" transaction-manager="txManager" > 
    <tx:attributes> 
        <tx:method name="find*"  read-only="true" propagation="NOT_SUPPORTED"  /> 
        <!-- get开头的方法不需要在事务中运行 。 
        有些情况是没有必要使用事务的,比如获取数据。开启事务本身对性能是有一定的影响的--> 
        <tx:method name="*"/>    <!-- 其他方法在实务中运行 --> 
    </tx:attributes> 
</tx:advice> 

</beans>

然后hibernateTemplate标签注入了sessionFactory标签,在 hib-config.xml文件中找到;
sessionFactory标签注入了dataSource标签,指定了数据库连接驱动,本地Mysql数据库地址,数据库名,数据库密码;属性packagesToScan自动扫描Class的hibernate映射文件,其目录com.sxt.po下的POJO类User,该种类,其类名对应数据库下的表名,成员变量对应表中字段。

这里java用到四种类:
pojo :数据库表映射的对象类
action :前台与后台交互,称为Controller
service:逻辑处理层,对数据进行相应的操作
dao:数据库交互层 增删改查等。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值