一 简单配置SpringMVC4
1 导包
|
2 配置”web.xml”,默认配置在”WEB-INF”目录下:
<servlet> <servlet-name>springMVC</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> </servlet>
<servlet-mapping> <servlet-name>springMVC</servlet-name> <url-pattern>*.html</url-pattern> </servlet-mapping> |
通过配置web.xml文件的”init-param”标签,可以将”*-servlet.xml”文件放在”src”目录下面:
<servlet> <servlet-name>springMVC</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath*:/springMVC-servlet.xml</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>springMVC</servlet-name> <url-pattern>*.html</url-pattern> </servlet-mapping> |
注意:这样配置的话”springMVC-servlet.xml”的名称将可以自己指定,例如ghySpring.xml:
<servlet> <servlet-name>springMVC</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath*:/ghySpring.xml</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>springMVC</servlet-name> <url-pattern>*.html</url-pattern> </servlet-mapping> |
2 配置”*-servlet.xml”文件,注意:”*”指的是”web.xml”中所指的servlet-name值.例如,这里指的是springMVC.配置过程如下:
(1)实例化”HelloController.java”.并定义id值为”helloController”.
<bean id="helloController" class="com.qhr.controller.HelloController"></bean> |
(2) 配置控制器映射
<!-- 控制器映射 --> <bean id="simpleUrlHandlerMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"> <property name="mappings"> <props> <!-- key表示http的请求标识,helloController表示请求的controller --> <prop key="hello.html">helloController</prop> </props> </property> </bean> |
(3)配置视图解析器
<!-- 视图解析器 --> <bean id="internalResourceViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/"></property> <property name="suffix" value=".jsp"></property> </bean> |
3 创建”HelloController.java”文件
public class HelloController implements Controller { @Override public ModelAndView handleRequest(HttpServletRequest arg0, HttpServletResponse arg1) throws Exception { ModelAndView mav = new ModelAndView(); mav.setViewName("success"); return mav; } } |
二 注解方式配置SpringMVC4
1 导包
|
2 配置”web.xml”,默认配置在”WEB-INF”目录下:
<servlet> <servlet-name>springMVC</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> </servlet>
<servlet-mapping> <servlet-name>springMVC</servlet-name> <url-pattern>*.html</url-pattern> </servlet-mapping> |
通过配置web.xml文件的”init-param”标签,可以将”*-servlet.xml”文件放在”src”目录下面:
<servlet> <servlet-name>springMVC</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath*:/springMVC-servlet.xml</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>springMVC</servlet-name> <url-pattern>*.html</url-pattern> </servlet-mapping> |
注意:这样配置的话”springMVC-servlet.xml”的名称将可以自己指定,例如ghySpring.xml:
<servlet> <servlet-name>springMVC</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath*:/ghySpring.xml</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>springMVC</servlet-name> <url-pattern>*.html</url-pattern> </servlet-mapping> |
3 配置”*-servlet.xml”,这里的”*”指的是”web.xml”中所指的servlet-name值,但由于我配置”classpath”的值,所以现在的配置文件的名称为ghySpring.xml.配置过程如下:
|
如图:引入
”xmlns:context="http://www.springframework.org/schema/context”,”http://www.springframework.org/schema/context”,
“http://www.springframework.org/schema/context/spring-context-4.1.xsd”,并且一定要按照如图的顺序引入.
同时,添加”<context:component-scan base-package="com.qhr.controller"/>”,这个标签用来解析(实例化)”com.qhr.controller”包下的类.
4 创建”HelloController.java”类
import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.servlet.ModelAndView;
@Controller @RequestMapping("helloController") public class HelloController { @RequestMapping("hello") public ModelAndView handleRequest(){ ModelAndView mav = new ModelAndView(); mav.setViewName("success"); return mav; } }
|
@Controller:表示本Java类是controller的控制层,相当于实例化本类
@RequestMapping:表示用指定的URL路径访问本控制层
@RequestParam注解的功能:根据参数名从url取得参数值
5 SpringMVC乱码解决
在”web.xml”文件中,增加乱码过滤器.配置过程如下:
注意:以下方法只适用于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> |
三 MyBatis的开发步骤
1 导入jar包
|
2 编写mybatis.xml文件
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <!—编写默认环境变量(可以多个)--> <environments default="development"> <!—编写mysql的环境变量--> <environment id="development"> <!—设置事务管理器的类型为JDBC--> <transactionManager type="JDBC" /> <!—配置mysql的数据源连接方式--> <dataSource type="POOLED"> <!—设置mysql数据库驱动--> <property name="driver" value="com.mysql.jdbc.Driver" /> <!—设置mysql数据库连接方式--> <property name="url" value="jdbc:mysql://localhost:3306/ruige"/> <!—设置mysql数据库名称--> <property name="username" value="root"/> <!—设置mysql数据库密码--> <property name="password" value="123456"/> </dataSource> </environment> </environments> <!—设置数据库表的映射方式--> <mappers> <mapper resource="userMapper.xml"/> <mapper resource="workMapper.xml"/> </mappers> </configuration> |
3 创建相应的数据库类
配置user表的映射文件类,其他表的与user表相似:(这里先不配置关联表的配置情况)
根据数据库的userinfo表,添加相应的相应字段,并且添加相应的get和set的方法. |
4 创建SqlSessionFactory测试类:
//导入相关包 import java.io.IOException; import java.io.InputStream; import java.util.List;
import org.apache.ibatis.io.Resources; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder; import org.junit.After; import org.junit.Before; import org.junit.Test;
import com.qhr.bean.Work;
public class MappingTest { //声明SqlSessionFactory变量,用于开启mysql连接 private SqlSessionFactory sqlSessionFactory = null; //声明SqlSession变量,用于调用相关操作mysql的方法 private SqlSession sqlSession = null; //在进行测试之前,先调用连接数据库的文件源 @Before public void init(){ String resource = "mybatis.xml"; InputStream inputStream; try { //通过Resources调用字节流 inputStream = Resources.getResourceAsStream(resource); sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } //进行mysql数据库操作 @Test public void O2O(){ //连接mysql数据库 sqlSession = sqlSessionFactory.openSession(); //调用mysql的操作方法 List<Work> list = sqlSession.selectList("getUserAndWork"); for (Work work : list) { System.out.println(work); } } //进行测试后执行的方法 @After public void destory(){ //提交事务 sqlSession.commit(); //释放资源 sqlSession.close(); } } |
5 创建ORM(实体和数据库表的映射关系)
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.hxzy.bean.User"> <select id="getUser" resultType="com.hxzy.bean.User"> SELECT * FROM userinfo WHERE userid=1 </select> </mapper> |
6 通过sqlSession操作数据库
User user = sqlSession.selectOne("getUser"); |
7 myBatis的增删查改
(1)查询
<resultMap type="com.qhr.bean.User" id="userMap"> <id property="userId" column="userId"/> <result property="userName" column="userName" /> <result property="userPwd" column="userPwd" /> <result property="age" column="age"/> </resultMap> <select id="getAllUser" resultMap="userMap"> select * from userinfo </select> <select id="getUserNameById" resultType="com.qhr.bean.User" parameterType="int"> select userName from userinfo where userId=#{userId} </select> <select id="getUser" resultType="com.qhr.bean.User" parameterType="int"> select * from userinfo where userId=#{userId} </select> |
(2)删除
<delete id="deleteUser" parameterType="int"> delete from userinfo where userId=#{userId} </delete> |
(3)增加
<insert id="insertUser" parameterType="com.qhr.bean.User"> insert into userinfo(userName,userPwd,age) values(#{userName},#{userPwd},#{age}) </insert> |
(4)更改
<update id="updateUser" parameterType="com.qhr.bean.User"> update userinfo set userPwd=#{userPwd},age=#{age} where userId = #{userId} </update> |