关于springmvc框架的web工程,从.xml到.java再到.jsp显示到网页上的过程,以及jsp静态文件的访问

Java模块 专栏收录该内容
184 篇文章 3 订阅
作为一个初学者来说解决一个大难题是不容易的,要抓紧记录下来分享给大家才行。

首先,你应该拥有一个配置好的环境和安装好插件的eclipse(需要用到web插件,spring插件和jsp插件),以及tomcat的相关配置。
打开浏览器输入本地服务器地址(一般是http://localhost:8080/),可以显示tomcat主界面。
like this:


好了现在可以创建动态web工程了(工程名字随便起,在工作中要符合规范的起名字,乱来是不行的。这里为了方便理解(PS:主要是起名什么的我嫌麻烦),整个工程里面的名字全部用英语数字代替。),右键新建other...向下面的对话框:




(当然,以后用到的xml,jsp...都在此创建)


先说一下总体的框架,


框架可以理解为前后台两部分,前台是浏览器访问文件,后台是处理数据的java。像图片里画的的那样(这个是以前的,我边写边建一个新的(one)工程,但是基本组成的文件是差不多的)。
工程的目的是在浏览器网页访问本地服务器输出一个存在后台.java中的一个变量(我操作的是一个String name = zhu;访问其他数据也是可以的,比如再显示一张服务器上的照片),我还没有用到数据库的使用,让各位来寻找数据库连接办法的盆友失望了。
首先来了,工程所需要的包是不可缺少的,要导入的包各有各的用途,现在我们只导入基本的包(这些包在网上都有,自己去搜,这你都搜不到的话就别来学电脑了,转行吧!^_^)主要是我不知道怎么上传文件到这个帖子里。


把包放在WEB-INF下的lib文件夹里,然后编译。(可以在libraries找到导入的包就成功了)



下面需要配置web.xml文件这个文件是工程运行时第一个要找的文件,把它建立在WEB-INF下面,名字不能改。
内容是如下以及其详解
XML/HTML code
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
<? xml  version = "1.0"  encoding = "UTF-8" ?>
< web-app  xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"  xmlns = "http://xmlns.jcp.org/xml/ns/javaee"  xsi:schemaLocation = "http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"  id = "WebApp_ID"  version = "3.1" >
   < display-name >one</ display-name >
   <!-- 上面这些都是系统自动生成的,是固定的,目前还没有理解其作用。 -->
   <!-- 制定首页
     当用户在浏览器中输入的URL不包含某个servlet名或JSP页面时,welcome-file-list元素可指定显示的默认文件
     PS:咱这个工程里基本没用 -->
   < welcome-file-list >
     < welcome-file >index.html</ welcome-file >
     < welcome-file >index.htm</ welcome-file >
     < welcome-file >index.jsp</ welcome-file >
     < welcome-file >default.html</ welcome-file >
     < welcome-file >default.htm</ welcome-file >
     < welcome-file >default.jsp</ welcome-file >
   </ welcome-file-list >
     <!-- servlet控制跳转 ,所有的请求都会被此拦截。有了它就要在外面配置一个对应的xml。-->
     < servlet >
     <!-- 这个name是随便起的,但是要对应起来 -->
       < servlet-name >two</ servlet-name >
        < servlet-class >org.springframework.web.servlet.DispatcherServlet</ servlet-class >
        < load-on-startup >1</ load-on-startup >
   </ servlet >
   < servlet-mapping >
      <!-- 这个地方的name与上面的对应才行,还有外面对应的xml文件要写成 two-servlet.xml必须对应。 -->
       < servlet-name >two</ servlet-name >
       < url-pattern >/</ url-pattern > <!-- 这个地方的/代表全部请求 -->
   </ servlet-mapping >
   <!-- 字符过滤器 ,在此工程中貌似是没用到。-->
   < filter >
    < filter-name >encodingFilter</ filter-name >
    < filter-class >org.springframework.web.filter.CharacterEncodingFilter</ filter-class >
    < init-param >
       < param-name >encoding</ param-name >
       < param-value >utf8</ param-value >
    </ init-param >
</ filter >
< filter-mapping >
    < filter-name >encodingFilter</ filter-name  >
    < url-pattern >/*</ url-pattern >
</ filter-mapping >
   
</ web-app >

好了web.xml的文件配置完成了,下面配置一个里面提到的对应的two-servlet.xml
XML/HTML code
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<? 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:mvc = "http://www.springframework.org/schema/mvc"
        xsi:schemaLocation="http://www.springframework.org/schema/mvc 
              http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd
             http://www.springframework.org/schema/beans 
             http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
             http://www.springframework.org/schema/context 
             http://www.springframework.org/schema/context/spring-context-3.0.xsd">
<!-- 上边这些就是一些引用的文件种种,不用管它,照着来就行。 -->
<!-- 引用注解 -->
   < mvc:annotation-driven />
   <!-- 自动扫描下面命名的包 ,扫描到注解@controller后,就访问那个后台java了。-->
   < context:component-scan  base-package = "three" />  
   < bean  id = "registry"  class = "org.springframework.web.servlet.view.InternalResourceViewResolver" >
      < property  name = "viewClass"  value = "org.springframework.web.servlet.view.JstlView" />
      <!-- java文件里return的名字就是在这里找/WEB-INF/jsp/(eight).jsp ,于是就找到了-->
      < property  name = "prefix"  value = "/WEB-INF/jsp/" ></ property >
      < property  name = "suffix"  value = ".jsp" ></ property >
    </ bean >      
</ beans >

好了  现在配置文件已经完成了,该写后台文件了,前面说道要扫描的包名,我们先命名为three,则需要创建three包了
顺便也建好four类,数据处理都是在这里完成的。


java文件里我们说到了要用到注解还有与jsp文件传值的各种方法,所以要引入各种包。
直接写在工程里吧!说的比较明白。
Java code
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
package  three;
 
import  java.util.Map;
 
import  org.springframework.stereotype.Controller;     //你看,这里就用到了我们导入的包。
import  org.springframework.web.bind.annotation.RequestMapping;
 
@Controller                //这个就是前面xml文件里扫描到的类似连接进来的注解。
public  class  Four {
     public  String Name =  "zhu" ;
     
     //@RequestMapping”请求路径映射,如果标注在某个controller的类级别上,则表明访问此类路径下的
     //    方法都要加上其配置的路径;最常用是标注在方法上,表明哪个具体的方法来接受处理某次请求。
     @RequestMapping (value={ "/" , "/zhu" })         //value值前后是否有“/”对请求的路径没有影响,即value="zhu" 、"/zhu"、"/zhu/"其效果是一样的   
     public  String seven(Map<String,Object> a){
         a.put( "lalala" , Name);
         return  "eight" //这个地方return的值是将要寻找的jsp文件的名称,去哪儿找呢?
         //就是去two-servlet。xml配置路径前面说的找eight.jsp。
     }
}


好的额,现在运行完java文件又来寻找jsp文件了,jsp文件应该建立在哪里电脑才能找得到呢?
按配置的来呀!配置里写的是/WEB-INF/jsp/下面的.jsp文件,所以就要新建一个jsp文件夹,再把jsp文件放进去。
好的,上图。

jsp文件建好了,写点什么呢?哼哼o( ̄ヘ ̄o#)这就是html语句的使用了,自己去网上学,一天就能把基本的都掌握了。

XML/HTML code
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<%@ page language="java" contentType="text/html; charset=utf-8"
     pageEncoding="utf-8"%>
     <!-- 注意上边的默认字符集要改成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=ISO-8859-1" >
< title >爱吃青菜的猪</ title > <!-- 这地方是显示在最上方标签位置的文字 -->
</ head >
< body >    <!-- body里面写的就是网页上显示的正文了。 -->
<!-- java 里用了个Map方法,使用具体信息自己去查。 -->
         < p >这是后台里输出来的变量</ p >
         ****************************************************************< br >
         ${lalala }< br >
         
</ body >
</ html >


到这时候输出来的是些什么东西呢?来吧,我们在服务器上运行一下吧!点击工程名右键run as==》run on  server。
如果不能显示出来,就关掉eclipse重新以管理员的身份打开试一试吧!再不行的话就去百度解决吧!

看到域名为http://localhost:8080/one/,这个就是访问的我们建立的工程,在java@RequestMapping(value={"/","/zhu"})
就说明了,我们访问http://localhost:8080/one/或者是http://localhost:8080/one/zhu是得到相同的界面。
要是说我想输出各种不同的东西呢?好吧,给你个网址
http://wenku.baidu.com/link?url=oGkl2Xp0oDHE0cY7I3m1YFE8EYKEox7_Pz2Z93A9EMgVSj1Ctz2x5wou9fo3UmlvwxK37Kiw-BUddMcouOOS7mJai7L8-QMxJsXA_zHPcK7
讲的很清楚,学起来太简单。基本的都是很基础的。
来输出个图片,先把资源放进工作空间里去,放到哪里呢,嘿嘿,当然是你定义的eclipse的工作空间了。
比如我的工作空间D:\MyEclipse,再在工作空间里会找到一个和工程名一样的文件夹,按照我们没有使用数据库的前提下
我们要把它放在前台去也就是D:\MyEclipse\one\WebContent这里面,好吧来建一个存放静态文件资源的文件夹。
就叫five好了,来吧图片拷贝进去吧!
这时候你刷新一下你的eclipse就会看到,咦!多出来一个文件夹five呀!

好吧再在jsp文件里加一条输出
XML/HTML code
?
1
2
3
4
5
< h1 >下面是一张图片</ h1 >
< img  src="<%=request.getContextPath()%>/five/tupian.jpg" />< br >
<!-- 中间那玩意是啥呀? 说实话 我也不清楚 O(∩_∩)O~  -->
< img  src = "/five/tupian.jpg"  />< br >
<!-- 去掉也能显示 -->

但是我在输出图片或是音乐一类的文件的时候会出现一些问题,没有图片出来吧!

这是springmvc配置文件在拦截访问路径的时候把你的图片地址也拦下来了,当做一个地址去@controller 找了。
当然找不到,这些文件是在前台,后台有没有
来我们修改配置文件,找到two-servlet.xml在拦截器上戳个洞
按照下边的改了这块。
XML/HTML code
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
   
<!-- 引用注解 -->
   < mvc:annotation-driven />
   <!-- 自动扫描下面命名的包 ,扫描到注解@controller后,就访问那个后台java了。-->
   < context:component-scan  base-package = "three" />  
    <!-- 下面这行,静态文件访问路径权限,意思就是下面的location目录会跳过拦截直接访问,
        (在这里写的five,six就是说WebContent的five,six文件夹里的所有东西都可以跳过拦截)
        这是后面我要说的静态文件访问的问题用到的。 -->
        < mvc:resources  location = "/five/"  mapping = "/five/**" />
   < bean  id = "registry"  class = "org.springframework.web.servlet.view.InternalResourceViewResolver" >
      < property  name = "viewClass"  value = "org.springframework.web.servlet.view.JstlView" />
      <!-- java文件里return的名字就是在这里找/WEB-INF/jsp/(eight).jsp ,于是就找到了-->
      < property  name = "prefix"  value = "/WEB-INF/jsp/" ></ property >
      < property  name = "suffix"  value = ".jsp" ></ property >
    </ bean >      
</ beans >

改完之后,需要重新启动服务器才行。
不要激动,在查个视频音频什么的。
XML/HTML code
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<%@ page language="java" contentType="text/html; charset=utf-8"
     pageEncoding="utf-8"%>
     <!-- 注意上边的默认字符集要改成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=ISO-8859-1" >
< title >爱吃青菜的猪</ title > <!-- 这地方是显示在最上方标签位置的文字 -->
</ head >
< body >    <!-- body里面写的就是网页上显示的正文了。 -->
<!-- java 里用了个Map方法,使用具体信息自己去查。 -->
         < p >这是后台里输出来的变量</ p >
         ****************************************************************< br >
         ${lalala }< br >
     < h1 >下面是一视频和一音乐</ h1 >
     < embed  src = "five/yinyue.mp3"  autostart = "false"  loop = "true"  width = "300"  height = "70" >  </ embed >
     < br >
     < embed  src = "five/shipin.mp4"  autostart = "false"  loop = "true"  width = "500"  height = "300" >  </ embed >
     
< h1 >下面是一张图片</ h1 >
< img  src="<%=request.getContextPath()%>/five/tupian.jpg" />< br >
<!-- 中间那玩意是啥呀? 说实话 我也不清楚 O(∩_∩)O~  -->
< img  src = "/five/tupian.jpg"  />< br >
<!-- 去掉也能显示 -->
 
</ body >
</ html >


  • 1
    点赞
  • 0
    评论
  • 1
    收藏
  • 打赏
    打赏
  • 扫一扫,分享海报

©️2022 CSDN 皮肤主题:编程工作室 设计师:CSDN官方博客 返回首页

打赏作者

石工记

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值