Spring MVC 注解开发WEB

本文详细介绍了使用SpringMVC注解进行Web项目开发的过程,包括项目搭建、DispatcherServlet配置、SpringMVC.xml配置、Controller实现、视图解析以及部署流程。通过实践案例展示了如何将SpringMVC应用于实际的Web应用中。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

SpringMVC注解开发大大简化了WEB开发,提高了开发人员的工作效率。SpringMVC 是一个基于DispatchServlet的MVC框架,url-pattern 中配置的每一个请求都有DispatchServlet来负责转发给相应的Controller,Controller处理后返回相应的View或Modul给用户或者都不返回,在SpringMVC中,是由@Controller 和 @RequestMapping来声明对应的请求关系的。下面我们来看看如何用Spring MVC 开发WEB项目。

Step1.  在myeclipse中新建一个Web Project,添加Spring MVC要用到的jar包。

Step2. DispatchServlet是继承自HttpServlet,先在web.xml中配置DispatchServlet(SpringMVC),代码如下:

             

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" 
	xmlns="http://java.sun.com/xml/ns/javaee" 
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
	http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
  <!-- Set parameters for Servlet context -->
  <context-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>classpath*:config/spring/spring*.xml</param-value>
  </context-param>
  
    <!-- 配置Spring监听 -->
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
  <!-- Spring MVC 入口配置 -->
  <servlet>
      <servlet-name>springMVC</servlet-name>
      <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
      <init-param>
          <param-name>contextConfigLocation</param-name>     
          <param-value>classpath*:config/spring/springMVC.xml</param-value> 
      </init-param>
      <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
      <servlet-name>springMVC</servlet-name>
      <url-pattern>*.do</url-pattern>
  </servlet-mapping>
  

 </web-app>

context- param (context-param,它用于配置ServletContext 的信息,即应用程序上下文信息。contextConfigLocation这个参数定义了SpringMVC要装入的配置文件的路径,默认的路径是在WEB-INF下面。

ContextLoaderListener这个监听器的作用就是在WEB容器启动时,自动装配ApplicationContext.xml, ApplicationContext.xml的路径就是上面context-param中定义的路径。

DispatchServlet的配置信息,如果<servlet></servlet>中没有配置<init-param></init-param>节点,在初始化Servlet时,SpringMVC 回到WEB-INF下面去找servlet-name-servlet.xml,在上面的配置中,SpringMVC会去WEB-INF下面找springMVC-servlet.xml文件。如果配置这个节点,SpringMVC会去指定的路径下查找这个文件。

<servlet-mapping>...</servlet-mapping>Servlet映射

<servlet-name>...</servlet-name>指定 servlet, 这个servlet必须是前面已经定义过的servlet.

<url-pattern>...</url-pattern>配置什么样的请求会由DispatchServlet来处理,在上面的配置文件中,所有以.do结尾的请求都由springMVC这个servlet 处理。

step3. 配置springMVC.xml

<?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:p="http://www.springframework.org/schema/p"
    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="com.web"/>

<!-- 配置视图解析 -->
<bean id="viewResolver"
      class="org.springframework.web.servlet.view.InternalResourceViewResolver">
      <property name="prefix" value="/"></property>
      <property name="suffix" value=".jsp"></property>
</bean>

</beans>

component-scan 回去扫描 base-package指定的包下的所有的标有@Component注解的所有类,并注册成bean.

在SpringMVC中, 除了 @Component注解外,还提供了@Controller, @Service,@Repository, 其实这三个注解是对@Component注解的一个细化,当有组件不好分类的时候,就用@Component注解。

step4. 下面我们来看Controller 的实现

package com.web.controller;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

import com.web.dao.StudentDao;
import com.web.entity.Student;
import com.web.service.StudentService;

@Controller
public class LoginController {
    
    @RequestMapping (value="/login")
    public String login(HttpServletRequest request, HttpServletResponse response){
        request.setAttribute("name", "Anna Zhao");
        return "index";
    }
    
}

在处理完请求后,Controller返回index.jsp页面。

step5. 下面我们来看index.jsp的实现。

<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>My JSP 'index.jsp' starting page</title>
	<meta http-equiv="pragma" content="no-cache">
	<meta http-equiv="cache-control" content="no-cache">
	<meta http-equiv="expires" content="0">    
	<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
	<meta http-equiv="description" content="This is my page">
	<!--
	<link rel="stylesheet" type="text/css" href="styles.css">
	-->
  </head>
  
  <body>
   I am princess ${name} <br>
  </body>
</html>

在 apache-tomcat-6.0.29\conf\Catalina\localhost中添加一个 myproject.xml文件,文件内容如下:

<Context path="/myproject" docBase="workspacePath/webprojectName/WebRoot" /> 

在浏览器中输入http://localhost:8080/myproject/login.do

页面会显示: I am princess Anna Zhao



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值