博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SpringMVC入门项目
阅读量:3906 次
发布时间:2019-05-23

本文共 12936 字,大约阅读时间需要 43 分钟。

       

1.SpringMVC技术

1.1 技术介绍

一个MVC框架,在web模型中,MVC是一种很流行的框架,通过把Model,View,Controller分离,把较为复杂的web应用分成逻辑清晰的几部分,是为了简化开发,减少出错。

1.2 技术注意点

1.2.1 @RequestParam注解

请求参数名和列对不上时,可以使用required="false"来选择可以不用传参,defaultValue来默认请求参数。

public String add(@RequestParam(value="id" required=false)Integer idxxxa, defaultValue="1"){    ...}

1.2.2 设置请求和响应编码格式

修改web.xml

   
encodingFilter
   
org.springframework.web.filter.CharacterEncodingFilter
   
       
encoding
       
UTF-8
   
   
       
forceEncoding
       
true
   
   
encodingFilter
   
/*

1.2.3 静态资源放行

修改spring-mvc.xml

1.2.4 全局更改编码

修改tomcat的server.xml

1.2.5 @ResponseBody注解

加上这个注解后,是无法返回jsp页面,所以在springmvc中要根据@RestController

@RequestMapping("/getStudent")@ResponseBodypublic String getStudentInfo(@RequestParam(value = "id", required = false) Long id,ModelMap model) {   List
student = studentService.getStudentById(id);   System.out.println(student);   model.addAttribute("student", student.get(0));   return "student";}

1.3 技术具体demo文件路径

链接:https://pan.baidu.com/s/1j2-VIv-A5jNgX2WJiQaaAw 

提取码:hm00 

1.4 demo的UML图

1.5 demo的技术代码实现

1.5.1 pom的编写

   
UTF-8
   
5.0.2.RELEASE
   
1.2.3
   
4.12
   
5.1.38
   
1.1.0
   
1.2.17
   
1.7.5
   
1.7.12
   
1.3.2
   
3.1
   
3.3.1
   
5.1.8
   
1.3.2
   
1.9.2
   
0.9.5.2
   
       
commons-fileupload
       
commons-fileupload
       
1.2.1
   
   
       
javax.servlet
       
servlet-api
       
2.5
   
   
   
       
org.mybatis
       
mybatis
       
3.4.6
   
   
   
       
junit
       
junit
       
${junit.version}
       
       
test
   
   
   
       
mysql
       
mysql-connector-java
       
${mysql.version}
   
   
   
       
org.mybatis.caches
       
mybatis-ehcache
       
${mybatis.ehcache.version}
   
   
   
       
log4j
       
log4j
       
${log4j.version}
   
   
       
org.slf4j
       
slf4j-api
       
${slf4j.version}
   
   
       
org.slf4j
       
slf4j-log4j12
       
${slf4j.log4j.version}
   
   
   
       
org.mybatis.generator
       
mybatis-generator-core
       
${mybatis.generator.version}
   
   
   
       
cglib
       
cglib
       
${cglib.version}
   
   
       
asm
       
asm
       
${asm.version}
   
   
   
       
com.github.pagehelper
       
pagehelper
       
${pagehelper.version}
   
   
   
       
org.springframework
       
spring-context
       
${spring.vision}
   
   
   
       
org.springframework
       
spring-aop
       
${spring.vision}
   
   
       
org.springframework
       
spring-orm
       
${spring.vision}
   
   
   
       
org.springframework
       
spring-jdbc
       
${spring.vision}
   
   
   
       
org.springframework
       
spring-webmvc
       
${spring.vision}
   
   
       
org.springframework
       
spring-web
       
${spring.vision}
   
   
       
org.springframework
       
spring-context-support
       
${spring.vision}
   
   
   
       
org.mybatis
       
mybatis-spring
       
${mybatis.spring.version}
   
   
   
       
org.aspectj
       
aspectjweaver
       
${aspectjweaver.version}
   
   
   
       
com.mchange
       
c3p0
       
${c3p0.version}
   

1.5.2 数据源的配置 jdbc.properties

jdbc.driver=com.mysql.jdbc.Driverjdbc.url=jdbc:mysql://localhost:3306/stus?useUnicode=true&characterEncoding=utf8&useSSL=falsejdbc.username=rootjdbc.password=123#最大连接数maxPoolSize=100#最小连接数minPoolSize=20# 关闭连接后不自动commitautoCommitOnClose=false# 获取连接超时时间checkoutTimeout=10000# 初始化连接initialSize=30#driver default 指定由连接池所创建的连接的只读(read-only)状态。#如果没有设置该值,则“setReadOnly”方法将不被调用。(某些驱动并不支持只读模式,如:Informix)defaultReadOnly=#driver default 指定由连接池所创建的连接的事务级别(TransactionIsolation)。#可用值为下列之一:(详情可见javadoc。)NONE,READ_UNCOMMITTED, READ_COMMITTED, REPEATABLE_READ, SERIALIZABLEdefaultTransactionIsolation=READ_UNCOMMITTED#连接数acquireIncrement=30

1.5.3 日志的配置 log4j.properties

#---- global logging configuration#---- level: FATAL,ERROR,WARN,INFO,DEBUG#---- appender: console, file, mail### set log levels ###log4j.rootLogger = DEBUG,console​### 输出到控制台 ###log4j.appender.console = org.apache.log4j.ConsoleAppenderlog4j.appender.console.Target = System.outlog4j.appender.console.layout = org.apache.log4j.PatternLayoutlog4j.appender.console.layout.ConversionPattern =  %d{yyyy-MM-dd HH\:mm\:ss} %5p %c{1}:%L - %m%n​### 输出到日志文件 ###log4j.appender.file = org.apache.log4j.DailyRollingFileAppenderlog4j.appender.file.File = ${webapp.root}/WEB-INF/logs/platform.loglog4j.appender.file.DatePattern=_yyyyMMdd'.log'#log4j.appender.file.Append = true#log4j.appender.file.Threshold = INFOlog4j.appender.file.layout = org.apache.log4j.PatternLayoutlog4j.appender.file.layout.ConversionPattern =%-d{yyyy-MM-dd HH\:mm\:ss}  [ %t\:%r ] - [ %p ]  %m%n​### 打印SQL ####log4j.logger.com.ibatis=DEBUG#log4j.logger.com.ibatis.common.jdbc.SimpleDataSource=DEBUG#log4j.logger.com.ibatis.common.jdbc.ScriptRunner=DEBUG#log4j.logger.com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate=DEBUGlog4j.logger.java.sql.Connection=DEBUGlog4j.logger.java.sql.Statement=DEBUGlog4j.logger.java.sql.PreparedStatement=DEBUG#log4j.logger.java.sql.ResultSet=DEBUG

1.5.4 web.xml配置

   
   
       
org.springframework.web.context.ContextLoaderListener
   
   
   
       
contextConfigLocation
       
classpath:applicationContext.xml,classpath:spring-mvc.xml
   
   
   
       
spring-mvc
       
org.springframework.web.servlet.DispatcherServlet
       
           
contextConfigLocation
           
classpath:applicationContext.xml,classpath:spring-mvc.xml
       
       
       
1
   
   
       
spring-mvc
       
       
/
   
       
   
       
org.springframework.web.util.IntrospectorCleanupListener
   
       
   
       
encodingFilter
       
org.springframework.web.filter.CharacterEncodingFilter
       
           
encoding
           
UTF-8
       
       
           
forceEncoding
           
true
       
   
       
       
encodingFilter
       
/*
   
       
       
index.jsp
   

1.5.5 springmvc.xml配置

       
   
       
   
       
   
   
       
       
       
       
   
       
       
       
       
       
   
       
   
       
   
       
       
   
   
   
       
   
   
   
   
       
   
       
       
           
104857600
       
       
           
40960
       
   

1.5.6 applicationContext.xml配置

   
   
   
   
       
       
       
       
       
       
       
       
       
       
       
   
       
   
       
       
       
       
       
       
       
       
   
       
   
       
       
       
       
   
       
   
   
       
   
       
   
   
       
           
           
       
   
       
   
       
       
       
       
   
       
   
       
   
       
   
       
   
       
   
       
           
           
           
           
           
           
           
           
           
           
           
                       
           
           
           
           
                       
       
   

1.5.7 model的准备

package org.hikktn.model;​public class Student {​​    /**     * 主键     */    private Long id;​    /**     * 名称     */    private String name;​    /**     * 年齡     */    private Long age;​​    public Long getId() {        return id;    }​    public void setId(Long id) {        this.id = id;    }​​    public String getName() {        return name;    }​    public void setName(String name) {        this.name = name;    }​​    public Long getAge() {        return age;    }​    public void setAge(Long age) {        this.age = age;    }​    @Override    public String toString() {        return "Student{" + "id=" + id + ", name='" + name + '\'' + ", age=" + age + '}';    }}

1.5.8 dao的编写

@Repositorypublic interface StudentDao {​   List
getStudentById(@Param("id")Long id);}

1.5.9 service的编写

public interface StudentService {​   List
getStudentById(Long id);}

1.5.10 service实现类的编写

@Servicepublic class StudentServiceImpl implements StudentService {​    @Autowired    private StudentDao studentDao;​    public List
getStudentById(Long id) { List
student = studentDao.getStudentById(id); return student; }}

1.5.11 Controller的编写

@Controllerpublic class StudentController {​   @Autowired   private StudentService studentService;​   @RequestMapping(value = "/hello")   public String hello(ModelMap model) {      model.addAttribute("message", "Spring 3 MVC Hello World");      return "index";   }​   @RequestMapping("/getStudent")   public String getStudentInfo(@RequestParam(value = "id", required = false) Long id,ModelMap model) {      List
student = studentService.getStudentById(id);      System.out.println(student);      model.addAttribute("student", student.get(0));      return "student";   }}

1.5.12 启动访问路径

1.5.13 jsp的编写

index.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>    Title    Hello World!    

message:${message}

 student.jsp

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

学生信息:

学生姓名:${student.name}

学生年龄:${student.age}

1.6 对应博客地址

1.7 环境准备

1.7.1 在idea上准备tomcat

1.7.2 idea上配置webapp

1.7.3 idea上移除或加入jar包

解释:左侧的available elements里面,如果出现jar包,则直接手动拖动lib目录下,并移除lib目录下报红的jar包,报红的jar包代表不存在。这里主要是当你的jar包出现冲突,某个类找不到的时候,你需要更改pom,但是maven依赖成功了,问题还是没有解决,这时你就需要手动排除掉一些错误引入的jar包,保证正确的jar包引入。

1.7.4 配置详解

1.7.4.1 数据库的数据源配置解释

本次使用的C3P0作为练习,即在applicationContext.xml中配置

这样就能连接数据库。

1.7.4.2 applicationContext上下文配置

下面的模板,只需要更改红框起来的地方,其他可以不用修改。

转载地址:http://kbqen.baihongyu.com/

你可能感兴趣的文章
Code Vs 1014 装箱
查看>>
循环队列,队链的实现
查看>>
HDU 2602 Bone Collector (01背包)
查看>>
POJ 1837 Blance (01背包)
查看>>
HDU 2456 饭卡 (01背包)
查看>>
HDU 1559 最大子矩阵
查看>>
Open Judge 4010 :2011
查看>>
百练OJ-2815 城堡问题【DFS】
查看>>
CODE[VS] 1025 选菜 【背包】
查看>>
POJ 1724 ROADS【DFS+剪枝】
查看>>
AOJ 847 整数拆段
查看>>
AOJ 848 分数拆分
查看>>
UVA 133 The Dole Queue 【约瑟夫环】
查看>>
XDOJ 1208 B.笑爷买房 【DFS】
查看>>
部门年度工作总结的内容
查看>>
pandas学习笔记
查看>>
Numpy笔记
查看>>
正则表达式
查看>>
python线程进程笔记
查看>>
TensorFlow初学者必须了解的55个经典案例
查看>>