一、基于注解方式配置

1、首先是修改IndexContoller控制器类

  1.1、在类前面加上@Controller:表示这个类是一个控制器

  1.2、在方法handleRequest前面加上@RequestMapping("/index"):表示路径/index会用射到该方法

  1.3、不能让IndexController在实现Controller接口

IndexControlller.java具体实现如下:

package com.demo.controller;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequsetMapping;
import org.springframework.web.servlet.ModelAndView;
@Controller
public class IndexController{
@RequestMapping("/index")
public ModelAndView handleRequest(HttpServletRequest request,HttpServletResponse response) throws Exception{
ModelAndView mav=new ModelAndView("index");
mav.addObject("name","I love you");
return mav;
}
}

2、修改配置文件springmvc-servlet.xml

由于我们使用了注解方式实现,所以把之前的配置可以去掉,增加如下代码:

<!--表示从包controller下扫描所有注解@Controller的类-->
<context component-scan base-package="controller"/>

具体配置如下:

<?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"
xsi:schemaLocation="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">
<!--扫描包下面有注解@Controller的所有的类-->
<context:component-scan base-package="controller" />
<bean id="irViewResolver"
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/page/" />
<property name="suffix" value=".jsp" />
</bean>
<!--注释掉之前基于xml方式的bean的配置-->
<!-- <bean id="simpleUrlHandlerMapping" -->
<!-- class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"> -->
<!-- <property name="mappings"> -->
<!-- <props> -->
<!-- <prop key="/index">indexController</prop> -->
<!-- </props> -->
<!-- </property> -->
<!-- </bean> -->
<!-- <bean id="indexController" class="controller.IndexController"></bean> -->
</beans>

二、Session的应用

Session在用户登录,一些特殊场合在页面间传递数据的时候会经常用到;

1、修改IndexController控制器类

为方法提供参数HttpSession session,这样可以在方法中使用session。新增一个check方法。

package com.demo.controller;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession; import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequsetMapping;
import org.springframework.web.servlet.ModelAndView;
@Controller
public class IndexController{
@RequestMapping("/index")
public ModelAndView handleRequest(HttpServletRequest request,HttpServletResponse response) throws Exception{
ModelAndView mav=new ModelAndView("index");
mav.addObject("name","I love you");
return mav;
} @RequestMapping("/check")
publc ModelAndView check(HttpSession session){
Integer i=(Integer)session.getAttribute("count");
if(i==null){
i=0;
}
else{
i++
}
session.setAttribute("count",i);
ModelAndView mav=new ModelAndView("check");
return mav;
}
}

2、新建一个check.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" isElIgnored="false"%>
session中记录的访问次数:${count}

三、SpringMVC的中文问题

在Spring MVC中处理中文问题和Filter处理中文问题是一样的。都是通过修改web.xml配置文件。

1、修改web.xml配置文件

<!--新增一个filter配置解决中文问题-->
<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>
</filter> <!--指定映射-->
<filter-mapping>
<filter-name>CharacterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

具体配置web.xml如下:

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>
org.springframework.web.servlet.DispatcherServlet
</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<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>
</filter>
<filter-mapping>
<filter-name>CharacterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>

2、jsp页面也要使用相同对应的编码方式

新增一个addProduct.jsp,设置字符集为UTF-8

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" import="java.util.*" isELIgnored="false"%> <form action="addProduct" method="post"> 产品名称 :<input type="text" name="name" value=""><br />
产品价格: <input type="text" name="price" value=""><br /> <input type="submit" value="增加商品">
</form>

四、上传文件功能解决

修改web.xml配置文件,允许访问*.jpg等文件

1、在web.xml中新增一段

<!--表示允许访问jpg文件-->
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.jpg</url-pattern>
</servlet-mapping>
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<!--因为配置springmvc的servlet使用的路径是"/",导致静态资源无法访问,所以加上这一段,才能允许访问-->
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.jpg</url-pattern>
</servlet-mapping> <servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>
org.springframework.web.servlet.DispatcherServlet
</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>/</url-pattern>
<!--<url-pattern>/*.do</url-pattern>加上这个,可以不用配置,允许所有的 -->
</servlet-mapping>
<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>
</filter>
<filter-mapping>
<filter-name>CharacterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>

2、配置springmvc-servlet.xml

新增一段配置:

<bean id="multipartRevoler" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<?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"
xsi:schemaLocation="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"> <context:component-scan base-package="controller" />
<bean id="irViewResolver"
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/page/" />
<property name="suffix" value=".jsp" />
</bean>
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"/>
</beans>

3、准备上传文件的jsp

新增一个upload.jsp文件

<%@ page language="java" contentType="text/html;charset=UTF-8" pageEncoding="UTF-8" import="java.util.*" isElIgnored="false" %>
<form action="uploadImage" method="post" enctype="multipart/form-data">
选择图片:<input type="file" name="image" accept="image/*"/><br/>
上传文件:<input type="submit" value="上传"/>
</form>

4、准备UploadedImageFile的实体类

package com.demo.pojo;

import org.springframework.web.multipart.MultipartFile;

publc class UploadedImageFile{
MultipartFile image;//封装MultipartImage类型的属性image,用于接受页面的注入
//image与jsp里的input的name属性值保持相同。
public MultipartFile getImage(){
return image;
} public void setImge(MultipartFile image){
this.image=image;
}
}

5、上传控制器UploadController

新建一个控制器类

package com.demo.controller;

import java.io.File;
import java.io.IOException; import javax.servlet.http.HttpServletRequest; import org.apache.commons.lang.xwork.RandomStringUtils;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequsetMapping;
import org.springframework.web.servlet.ModelAndView; import com.demo.pojo.UploadedImageFile; @Controller
public class IndexController{
@RequestMapping("/uploadImage")
public ModelAndView upload(HttpServletRequest request,UploadedImageFile file) throws IOException,IllegalStateException{
String name=RandomStringUtils.randomAlphanumeric(10);
String newFileName=name+".jpg";
File newFile=new File(request.getServletContext().getRealPath("/image"),newFileName);
newFile.getParentFile().mkdirs();
file.getImage().transferTo(newFile);
ModelAndView mav=new ModelAndView("showUploadedFile");
mav.addObject("imageName",newFileName);
return mav;
} }

6、准备showUploaddFile.jsp显示图片的页面

<%@ page language="java" contentType="text/html;charset=UTF-8" pageEncoding="UTF-8" import="java.util.*" isElIgnored="false" %>
<img src="data:image/${imageName}"/>

二十一、MVC的WEB框架(Spring MVC)的更多相关文章

  1. YbSoftwareFactory 代码生成插件【二十一】:Web Api及MVC性能提升的几个小技巧

    最近在进行 YbSoftwareFactory 的流程功能升级,目前已经基本完成,现将用到的一些关于 Web Api 及 MVC 性能提升的一些小技巧进行了总结,这些技巧在使用.配置上也相当的简单,但 ...

  2. 十三、MVC的WEB框架(Structs2)

    一.Structs2的应用 Structs2是基于MVC的WEB框架.一般基于框架的程序要运行成功,对于JAR包的版本,配置文件的正确性有着苛刻的要求,一个地方错了,都会导致框架程序运行出错. 1.首 ...

  3. Java框架-Spring MVC理解001

    Spring MVC理解 1.servlet--Spring MVC的本质 2.Spring MVC其实是一个工具,具体的理解可以分为两步:第一步,了解这个工具是怎么创建出来的:第二步,了解这个工具是 ...

  4. 用maven创建web项目(spring Mvc)

    用maven创建web项目(spring Mvc) 1.打开cmd进入到你要创建maven项目的目录下: 2.输入以下命令.然后根据提示输入相应的groupId.artifactId.version: ...

  5. 从一个简单案例上手Spring MVC,同时分析Spring MVC面试问题

    很多公司都会用Spring MVC,而且初级程序员在面试时,一定会被问到这方面的问题,所以这里我们来通过一个简单的案例来分析Spring MVC,事实上,我们在培训中就用这个举例,很多零基础的程序员能 ...

  6. Spring mvc系列一之 Spring mvc简单配置

    Spring mvc系列一之 Spring mvc简单配置-引用 Spring MVC做为SpringFrameWork的后续产品,Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块 ...

  7. Spring MVC(2)Spring MVC 组件开发

    一.控制器接收各类请求参数 代码测试环境: 接收各类参数的控制器--ParamsController package com.ssm.chapter15.controller; @Controller ...

  8. Python开发【第二十二篇】:Web框架之Django【进阶】

    Python开发[第二十二篇]:Web框架之Django[进阶]   猛击这里:http://www.cnblogs.com/wupeiqi/articles/5246483.html 博客园 首页 ...

  9. 第三百二十一节,Django框架,发送邮件

    第三百二十一节,Django框架,发送邮件 全局配置settings.py EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend' ...

随机推荐

  1. 【译】第11节---数据注解-TimeStamp

    原文:http://www.entityframeworktutorial.net/code-first/TimeStamp-dataannotations-attribute-in-code-fir ...

  2. PHP feof()函数

    feof()函数检查是否已经到达文件末尾(EOF) EOF == end  of  file 如果出错或者文件指针到了文件末尾(EOF)则返回true,否则返回false 语法: feof(file) ...

  3. linux运行lnmp 出现502错误

    之前遇到的问题: 安装好之后访问域名出现502错误,打开html文件正常,说明是php出现问题.在wwwlog文件夹查看nginx日志,发现报错原因是找不到/var/run/php5-fpm.sock ...

  4. sqlserver 中常见的函数 数学函数

    create table testnum( ID int identity(1,1), num float) insert testnum values (1) insert testnum valu ...

  5. JavaSE习题 继承接口和泛型

    问答题: 1.子类在什么情况下可以继承父类友好成员? 答:在同一个包内 2.子类通过怎样的方法可以隐藏继承的成员变量? 答:声明一个与父类相同变量名的成员变量 3.子类重写继承的方法原则是什么? 答: ...

  6. NativeWindow_01_CreateWindow(Ex)_VC6

    1. #include <windows.h> LRESULT CALLBACK ProcWindow(HWND hwnd, UINT uMsg, WPARAM wParam, LPARA ...

  7. vue-cli3快速创建项目

    文档:https://cli.vuejs.org/zh/guide/ 条件: npm 更至最新 node >=8.9 1.全局安装 npm install -g @vue/cli 或 yarn ...

  8. 大数据新手之路四:联合使用Flume和Kafka

    Ubuntu16.04+Kafka1.0.0+Flume1.8.0 1.目标 ①使用Flume作为Kafka的Producer: ②使用Kafka作为Flume的Sink: 其实以上两点是同一个事情在 ...

  9. VNPY回测流程

    又是好久没更新了,2月这一个月,工作上也忙,正好也是过年.加上前一段时间,一直在爬取某眼查的数据. 对VNPY的使用时间就减少了,不过最近还是完成了vnpy回测结构的思维导图.如下: 值得注意的是,v ...

  10. mysql索引优化比普通查询速度快多少

    mysql索引优化比普通查询速度快多少 一.总结 一句话总结:普通查询全表查询,速度较慢,索引优化的话拿空间换时间,一针见血,所以速度要快很多. 索引优化快很多 空间换时间 1.软件层面优化数据库查询 ...