SpringMVC4.3+jkd1.8+tomcat8.5第一个小程序及简单测试

//嘿!手动原创标识

经过多天的学习,准备上手操作加深对SpringMVC的理解了。对书上的各种代码和方法进行验证学习。
1.IDEA新建progect,选spring,选springmvc,选上webapplicantion
2.输入project的文件名,我的是myspringmvc
3.IDEA帮我们导入好了jar包,都在lib目录下
4.到apache官方下载tomcat最新版本,tomcat9,64位的zip版本的(不要写tomcat9,下面有配置不成功的经过,括号内容是修正的时候加的!!下tomcat8.5如果你的jdk是1.8的话,要是1.9可以尝试下tomcat9)
5.找到bin目录下的setclasspath.bat文件,在文件的头部分加入这样两句话
set JAVA_HOME = C:\Java\jdk1.8.0_162
set JRE_HOME = C:\Java\jdk1.8.0_162\jre
还要在catalina.bat加上这两句
还要在电脑->属性->高级->环境变量里配上这两个环境变量
6.在tomcat安装的目录下,在bin目录下的startup的bat文件,tomcat启动,同理运行showdown的bat文件,tomcat关闭。事实上把tomcat的小窗口关闭,tomcat就会关闭了
7.在浏览器上输入http://localhost:8080 ,出现东西,成功运行了tomcat(事实上不行,因为我们环境变量没有配好)
8.我的电脑,属性,高级系统设置,环境变量
//后话:第九步不用做如果你不部署在cmd上的话,在idea上运行可以先不配这个
9.在”系统变量“中添加系统变量CATALINA_BASE,CATALINA_HOME //Tomcat安装目录
变量名:CATALINA_BASE
变量值:E:\apache-tomcat-9.0.14-windows-x64\apache-tomcat-9.0.14
变量名:CATALINA_HOME

变量值:E:\apache-tomcat-9.0.14-windows-x64\apache-tomcat-9.0.14
//后话:第十步不用做如果你不部署在cmd上的话,在idea上运行可以先不配这个
10.此处还需修改ClassPath和Path的变量值
在ClassPath的变量值中加入:%CATALINA_HOME%\lib\servlet-api.jar;
在Path的变量值中加入:%CATALINA_HOME%\bin;%CATALINA_HOME%\lib
(注意加的时候在原变量值后加英文状态下的“;”)
//如果不行,就在startup.bat的目录下,输入startup.bat启动tomcat
11.点击"开始"->“运行”,键入"cmd"(或快捷键win+R);键入命令: startup,出现信息,tomcat启动成功,说明环境变量配置成功
//tomcat的小窗可能是乱码,没事,不慌,我们在idea上设置成不是乱码就暂时可以了
12.在IntelliJ IDEA配置Tomcat

点击Run-Edit Configurations…

点击“+”,选择Tomcat Server–Local

起个名字name:myspringmvc_tomcat

在Tomcat Server -> myspringmvc_tomcat -> Server -> Application server项目下,点击 Configuration ,找到本地 Tomcat 服务器

点开“Deployment”选项卡,继续设置,

创建Artifact,下面有个app什么 context 设置成 \ (很重要,否则打不开8080)最后记得点OK保存

13.至此,IntelliJ IDEA配置Tomcat完成

14.解决tomcat的中文乱码问题:
setting-Editor-File Encodings 上面两个设置成UTF-8 下面一个设置成UTF-8,旁边打钩

Run/DeBug Edit Configurations

在VM options填写-Dfile.encoding=UTF-8:

在Stratup/Connetction 增加一个JAVA_TOOL_OPTIONS ,value是-Dfile.encoding=UTF-8

打开idea安装目录-bin

用记事本打开idea.exe.vmoptions和idea64.exe.vmoptions文件

在文件后面添加一行:-Dfile.encoding=UTF-8

保存文件,重启idea,乱码问题解决!

(重启idea相当重要)

15.启动项目,发现报错:ClassNotFoundException

16.打开file->Project Structure,点开"Artifacts"选项卡后,上面有多出很明显的提示,缺失Spring MVC相关类库的引用

17.修复之,让程序部署的时候,把Spring MVC相关类库复制到lib文件夹中。修复方法:

点击fix -> Add all missing …

18.开启debug模式,成功运行并且弹出一个页面,出现 E N D END END,运行成功了
SpringMVC4.3+jkd1.8+tomcat8.5第一个小程序及简单测试_第1张图片

2018.12.28 5:56 finish

继续配置springmvc
SpringMVC4.3+jkd1.8+tomcat8.5第一个小程序及简单测试_第2张图片

在src目录下创建一个springmvc.xml

拷贝如下



    

配置web.xml


dispatcher改成
dispatcherServlet
配置dispatcherServlet



    dispatcherServlet
    org.springframework.web.servlet.DispatcherServlet
    
    
        contextConfigLocation
        classpath:springmvc.xml
    
    1

配置mapping

    dispatcherServlet
    
    
    /

在src目录下创建一个package 名为cn.java.controller
在cn.java.controller下创建一个class文件 名为FrontServlet
把一个类变成servlet的方法就是在类前面加上@controller注解,这个类就变成了servlet
//cyycyy 如果一个普通类被@Controller,则普通类变成一个servlet
在类里面随便写个方法

public void Login(){
    System.out.println("登录成功");
}

加上@RequestMapping(value = “/login.html”)
/login.html是虚拟路径
加上这个注解之后,就能变成dopost,doget方法了(因为没有设置method,get post都可以处理)

//cyycyy 为当前方法配置一个对外访问的虚拟路径

去springmvc里面添加扫描器



这样就会去扫描这个包下的所有东西了




//实践证明,不要加上面这两句,会报错,不加就没事了

报错:

has been compiled by a more recent version of the Java Runtime (class file version 55.0), this version of the Java Runtime only recognizes class file versions up to 52.0 (无法载入的.类

Tomcat的版本和JDK的版本不对应导致的,当前我运行的jdk是1.8而我用的Tomcat版本是Tomcat 9所以就会出现这个问题。
所以准备降低tomcat的版本了
去下一个tomcat8吧
弄完之后按上面的重新配置一遍tomcat
那个edit config那个,jre要改一改,改成环境变量里面的比较好
不对,可能是环境变量里面的用的太旧了?java1.8?而不是java11?
不,我的想法是错误的
jdk1.8就是java8,版本已经很新了
然后把idea的jdk和jre都换成本地的,不要用自带的那个11,感觉会出一些未知错误
把edit config 设置成系统的那个路径和环境变量一致,setting->Build,Execution,Deployment->java Compiler 里面的版本,手动换成系统的版本

切记tomcat的版本要和jdk的版本对应,idea里运行的java的版本也要和tomcat和环境变量的版本对应,只有都对应了,才不容易报错!




似乎在springmvc.xml的配置文件里不需要这个特有的注解驱动,目前来看

实现tomcat热部署,要在debug模式下开,然后在edit config。。。里面把On ‘update’action的选项和下面的选项都改成最长那个,就行了

有时候热部署会不成功,没事的,因为:(下面两个来源之间的内容,属于引用,仅供大家学习之用!)
来源: https://www.cnblogs.com/firstdream/p/5207241.html
1.小规模的修改,没有改变类的块结构,不用重启服务器,也可以立即生效.(前提是同步发布,即要勾上菜单 project->build automatically)

2.修改了类的结构(如增加或删除类的方法,字段).如果是这种情况,myeclipse会有"hot code replace fail"的提示,和失败的原因的说明(如add method not implemented, scheme change not implemented 等),并且提示重新启动服务器.这种情况要重启服务器才可以生效.

3.还有一种情况,对java文件进行小的修改(如 代码中不重要的地方加一个空格 )然后保存,myeclipse也会提示hot code replace fail.这种情况遇到的几率很小. 这种情况的很可能是服务器(如tomcat)下面发布了多个web应用程序,而所修改的类的名字在多个web应用中存在(如 有app1和app2两个应用, app1中有个类com.company.LoginAction, app2中也有个类com.company.LoginAction. 修改的是app1中的LoginAction ).

个人猜测:jvm在进行hot code replace的之前,将所修改的类(app1中的LoginAction)与另外一个应用中的同名类(app2中的LoginAction)对比,发现两者有结构上的差异,于是认为该类的改变很大,不能够进行hot code replace.

来源: https://www.cnblogs.com/firstdream/p/5207241.html

接下来在FrontServlet类中测试了:多值的value,热部署,多个方法
代码就不贴了

接下来测试获取参数,login时传一个用户名和密码,先假设用get请求(上面说了没有设置method,所以get和post都可以处理)
获取方法是…/login.html?username=admin&password=123
用这个?来get
直接在参数列表里就可以接收得到username和password

嗯,截一下图留念一下
第一次运行成功的样子的截图
SpringMVC4.3+jkd1.8+tomcat8.5第一个小程序及简单测试_第3张图片
第一次测试控制器与注解的截图
SpringMVC4.3+jkd1.8+tomcat8.5第一个小程序及简单测试_第4张图片
第一次在一个控制器里写两个方法的截图
SpringMVC4.3+jkd1.8+tomcat8.5第一个小程序及简单测试_第5张图片
测试value的多值情形
在这里插入图片描述
SpringMVC4.3+jkd1.8+tomcat8.5第一个小程序及简单测试_第6张图片
SpringMVC4.3+jkd1.8+tomcat8.5第一个小程序及简单测试_第7张图片
获取参数的测试
SpringMVC4.3+jkd1.8+tomcat8.5第一个小程序及简单测试_第8张图片
这个还可以偷偷帮我把格式转换成合适的样子,比如输入的是String,接收的是long,可以不报错
SpringMVC4.3+jkd1.8+tomcat8.5第一个小程序及简单测试_第9张图片

建一个实体类,将用户名和密码储存到里面
toString方法就是当打印一个类的变量的时候,就调用那个类的toString方法
SpringMVC4.3+jkd1.8+tomcat8.5第一个小程序及简单测试_第10张图片
SpringMVC4.3+jkd1.8+tomcat8.5第一个小程序及简单测试_第11张图片
说老实话,我也不知道FrontServlet的login方法是怎么找到这个别的包里的类的
但是上面的属性名,必须要有get的属性名完全一样,不然传不进去。

可能有后文,也可能没有 QAQ

本文除了介绍热部署可能不成功的原因(已注明来源)之外,均属于原创,转载请注明出处哦!

你可能感兴趣的:(SpringMVC,SpringMVC,Java,Web,Spring,MVC)