spring-mvc-case

本文详细介绍了SpringMVC框架的两种配置方式:基于注解和基于XML。通过具体的配置示例和代码片段展示了如何实现控制器的扫描、请求的映射以及视图的解析。

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

spring mvc 是当前java比较流行的一种mvc架构,下文主要展示spring mvc 使用的配置。

web.xml 的统一配置(仅展示和spring 配置相关部分)

<!-- Spring context 服务层的配置文件 -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
classpath*:META-INF/spring/*Context.xml,
classpath*:META-INF/spring/*-beans.xml
</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

<!-- app servlet -->
<servlet>
<servlet-name>AppServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/ServletConfigs/AppServlet/servlet-context.xml
</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<!-- 覆盖default servlet的/, springmvc servlet将处理原来处理静态资源的映射 -->
<servlet-mapping>
<servlet-name>AppServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>


1、完全基于注解的方案。
servlet-context.xml 配置:


<!-- 自动搜索@Controller标注的类 -->
<context:component-scan base-package="org.login.web" >
<context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Service" />
</context:component-scan>

<!-- 默认的注解映射的支持
<mvc:annotation-driven />

-->
<bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping"/>
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"/>

<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/views/"/>
<property name="suffix" value=".jsp"/>
</bean>
</beans>



controller 注解

@Controller
@RequestMapping("/login")
public class LoginController {
private final static Logger logger = LoggerFactory.getLogger(LoginController.class);
@RequestMapping("/guest")
public String login(HttpServletRequest request,HttpServletResponse response){
logger.info("hello {}",request);
request.setAttribute("username", "admin");
request.setAttribute("password", "123456");
return "login";
}

}


以上ok
http://localhost:8080/login/guest


2、基于xml的配置
servlet-context.xml 配置:

<bean id = "loginHandleRequest" class="org.login.web.LoginHandleRequest"/>
<bean id = "loginController" class="org.login.web.LoginController"/>
<bean id = "loginServlet" class="org.login.web.LoginServlet"/>


<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="urlMap">
<map>
<entry key="/login/guest" value="loginHandleRequest"/>
<entry key="/login/guest2" value="loginController"/>
<entry key="/login/guest3" value="loginServlet"/>
</map>
</property>
</bean>

<bean class = "org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter"/>
<bean class = "org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>
<bean class = "org.springframework.web.servlet.handler.SimpleServletHandlerAdapter"/>
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/views/"/>
<property name="suffix" value=".jsp"/>
</bean>


java代码:

/**
* @author wangxinchun
*/
public class LoginController implements Controller {
private final static Logger logger = LoggerFactory.getLogger(LoginController.class);
public ModelAndView handleRequest(HttpServletRequest request,
HttpServletResponse response) throws Exception {
logger.info("hello {}", request);
request.setAttribute("username", "admin");
request.setAttribute("password", "123456");
return new ModelAndView("login");
}
}



/**
* @author wangxinchun
*/
public class LoginHandleRequest implements HttpRequestHandler {
private final static Logger logger = LoggerFactory.getLogger(LoginHandleRequest.class);

public void handleRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
logger.info("hello {}", request);
request.setAttribute("username", "admin");
request.setAttribute("password", "123456");
request.getRequestDispatcher("/WEB-INF/views/login.jsp").forward(request, response);
}
}



/**
* @author wangxinchun
*/
public class LoginServlet extends GenericServlet {
private static final long serialVersionUID = 1L;
private final static Logger logger = LoggerFactory.getLogger(LoginServlet.class);

@Override
public void service(ServletRequest request, ServletResponse response)
throws ServletException, IOException {
logger.info("hello {}", request);
request.setAttribute("username", "admin");
request.setAttribute("password", "123456");
request.getRequestDispatcher("/WEB-INF/views/login.jsp").forward(request, response);
}
}


请求:
http://localhost:8080/login/guest
http://localhost:8080/login/guest2
http://localhost:8080/login/guest3
ok~
一、综合实战—使用极轴追踪方式绘制信号灯 实战目标:利用对象捕捉追踪和极轴追踪功能创建信号灯图形 技术要点:结合两种追踪方式实现精确绘图,适用于工程制图中需要精确定位的场景 1. 切换至AutoCAD 操作步骤: 启动AutoCAD 2016软件 打开随书光盘中的素材文件 确认工作空间为"草图与注释"模式 2. 绘图设置 1)草图设置对话框 打开方式:通过"工具→绘图设置"菜单命令 功能定位:该对话框包含捕捉、追踪等核心绘图辅助功能设置 2)对象捕捉设置 关键配置: 启用对象捕捉(F3快捷键) 启用对象捕捉追踪(F11快捷键) 勾选端点、中心、圆心、象限点等常用捕捉模式 追踪原理:命令执行时悬停光标可显示追踪矢量,再次悬停可停止追踪 3)极轴追踪设置 参数设置: 启用极轴追踪功能 设置角度增量为45度 确认后退出对话框 3. 绘制信号灯 1)绘制圆形 执行命令:"绘图→圆→圆心、半径"命令 绘制过程: 使用对象捕捉追踪定位矩形中心作为圆心 输入半径值30并按Enter确认 通过象限点捕捉确保圆形位置准确 2)绘制直线 操作要点: 选择"绘图→直线"命令 捕捉矩形上边中点作为起点 捕捉圆的上象限点作为终点 按Enter结束当前直线命令 重复技巧: 按Enter可重复最近使用的直线命令 通过圆心捕捉和极轴追踪绘制放射状直线 最终形成完整的信号灯指示图案 3)完成绘制 验证要点: 检查所有直线是否准确连接圆心和象限点 确认极轴追踪的45度增量是否体现 保存绘图文件(快捷键Ctrl+S)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值