对于一个javaweb开发者来说,springmvc的熟练是必备的,所以下面就来讲下如何配置springmvc以及访问,这篇文章主要针对springmvc的非注解方式的搭建使用,以下是步骤:
1、导入jar包
jar包是启动项目的根本所在,所以是不可或缺的
2、web.xml文件的配置
需要注意的是:
(1)配置前端控制器类:
org.springframework.web.servlet.DispatcherServlet
(2)配置contextConfigLoaction值:
<servlet> <servlet-name>springmvcDispatcher</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <!-- 注意要点: contextConfigLocation配置springmvc加载的配置文件(配置处理器映射器、适配器等等) 如果不配置contextConfigLocation,默认加载的是/WEB-INF/servlet名称-servlet.xml(springmvc-servlet.xml) --> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:spring/springmvc.xml</param-value> </init-param> </servlet>
(3)配置url-pattern的值
<servlet-mapping> <servlet-name>springmvcDispatcher</servlet-name> <!--1、使用springmvc的非注解方式--> <!--<url-pattern>*.action</url-pattern>--> <!--2、使用springmvc的注解方式--> <url-pattern>/action/*</url-pattern> </servlet-mapping>
3、配置适配器、映射器、视图解析器以及Controller的写法
web.xml中配置init-param如下所示:
根据在web.xml文件中配置的init-param值为classpath:spring/springmvc.xml,所以所需要配置的适配器、映射器、视图解析器必须在类路径下的spring/springmvc.xml中。
非注解的配置方式有两种:
(1)第一种非注解方式:
(a)springmvc.xml配置文件
注意:一定需要是name属性,还有一定需要加/不然识别不了 <bean name="/simpleController.action" class="com.lyj.app.action.SimpleController"></bean> <!-- 处理器映射器 --> <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"></bean> <!-- 处理器适配器 --> <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/> 视图解析器 <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver "></bean>
(b)Controller的编写
package com.lyj.app.action; import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.mvc.Controller; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.util.ArrayList; import java.util.List; public class SimpleController implements Controller{ @Override public ModelAndView handleRequest(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception { ModelAndView modelAndView = new ModelAndView(); List<String> list = new ArrayList<>(); list.add("2"); list.add("3"); // ClassPathXmlApplicationContext modelAndView.addObject("data",list); modelAndView.setViewName("/index.jsp"); return modelAndView; } }
(c)index.jsp的编写(根据Controller最后返回的jsp页面而定,视自己情况而定)
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title></title> </head> <body> <input type="text" value="${data}"> </body> </html>
(d)访问路径(端口视自己Tomcat端口而定)
http://localhost:8095/simpleController.action
(2)第二种非注解方式:
(a)springmvc.xml配置文件
<bean id="httpHandler" class="com.lyj.app.action.HttpHandler"></bean> <!--处理器映射器--> <bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"> <property name="mappings"> <props> <prop key="httpHandler.action">httpHandler</prop> </props> </property> </bean> 处理器适配器 <bean class="org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter"/> <!-- 视图解析器 --> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/"></property> <property name="suffix" value=".jsp"></property> </bean>
(b)Controller的编写
package com.lyj.app.action; import org.springframework.web.HttpRequestHandler; import org.springframework.web.servlet.ModelAndView; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.util.ArrayList; import java.util.List; public class HttpHandler implements HttpRequestHandler{ @Override public void handleRequest(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws ServletException, IOException { List<String> list = new ArrayList<>(); list.add("2"); list.add("3"); httpServletRequest.setAttribute("data",list); httpServletRequest.getRequestDispatcher("/index.jsp").forward(httpServletRequest,httpServletResponse); } }
(c)index.jsp的编写(根据Controller最后返回的jsp页面而定,视自己情况而定)
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title></title> </head> <body> <input type="text" value="${data}"> </body> </html>
(d)访问路径(端口视自己Tomcat端口而定)
http://localhost:8095/httpHandler.action
4、注意问题
需要注意的问题是:
需要当作Controller访问的类bean必须放在springmvc.xml文件(web.xml文件中配置的文件名称)中
题外话:
第二种非注解方式的使用,可以获取HttpServletRequest、HttpServletReponse