美文网首页
springmvc(1)

springmvc(1)

作者: 遗忘的大志若愚 | 来源:发表于2017-11-29 17:17 被阅读0次

一.Springmvc的从request到response的过程

Springmvc.png

在这里面打叉的地方一般是通过xml配置文件,一般第一次编码配置完成之后,就不用考虑这些了。在将应用放如Tomcat之中之后第一个加载的文件就是WEB-INF根目录下面的xml文件,其配置方式如下

<?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">
<!-- 配置Spring框架,加载Spring的配置文件 -->
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:beans.xml</param-value>
    </context-param>

<!-- 设置一个监听器 -->
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>

    <!-- 设置核心分发器 -->
    <servlet>
        <!-- 分发器的名字 -->
        <servlet-name>action</servlet-name>
        <!-- 分发器所使用的类 -->
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <!--改变Spring配置文件的名称和位置-->   
<init-param>

            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:applicationContext.xml</param-value>
        </init-param>
    </servlet>
    <!-- 映射处理 -->
    <servlet-mapping>

        <servlet-name>action</servlet-name>

        <url-pattern>*.action</url-pattern>
    </servlet-mapping>
    <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>

</web-app>

我们会在Springmvc的配置文件里面配置一些公用的配置

<?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:mvc="http://www.springframework.org/schema/mvc"
    xmlns:context="http://www.springframework.org/schema/context"
    xsi:schemaLocation="http://www.springframework.org/schema/mvc
                        http://www.springframework.org/schema/mvc/spring-mvc-4.3.xsd
                        http://www.springframework.org/schema/beans
                        http://www.springframework.org/schema/beans/spring-beans-4.3.xsd
                        http://www.springframework.org/schema/context
                        http://www.springframework.org/schema/context/spring-context-4.3.xsd">

    <!-- 启动注解方式 -->
    <mvc:annotation-driven/>
    <!-- 启动包扫描机制 -->
     <context:component-scan base-package="com.fiberhome.springmvc.controller"/>

    <!-- 内部视图解析器 -->
    <bean id="internalResourceViewResolver"
        class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/pages/" />
        <property name="suffix" value=".jsp" />
    </bean>
    
    <!-- 文件上传视图解析器,它的名字必须为multipartResolver -->
    <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
        <property name="maxUploadSize" value="10485760"/><!-- 10M -->
    </bean>
</beans>

这种方式指明了使用注解的方式来使用Springmvc

//使用这种注解来声明一个controller
@Controller
public class PersonController {
  @Resource
  private PersonServiceImpl personService;

//做处理器映射,访问这个页面直接就是/person/all.action 就能访问到这个方法,这里后缀是action原因是在servletMapping 中过滤*.action
  @RequestMapping(value = "/person/all")
  public String getAll(Map<String, Object> model) {

    List<Person> list = personService.getAll();
  //返回一个逻辑名,其实这是页面personInfo.jsp,在内部视图解析器里配置了
    return "personInfo";
  }


  @RequestMapping("/person/createPerson")
  public String createPerson() {
    return "create";
  }
 @RequestMapping("/person/toEdit")
  public String toEdit(Integer id,Model model) {
   Person p= personService.getById(id);
//Springmvc 后台与页面之间的传值
    model.addAttribute("p", p);
    return "edit";

@RequestMapping("/person/insertPerson")
  public String insertPerson(Person person) {
//这里的person是前端页面直接将一些数据打包成对象传到后台
    personService.insertPerson(person);
//从一个方法里访问另外的一个方法
    return "redirect:/person/all.action";
  }

  @RequestMapping("/person/BatchDelete")
  public String BatchDelete(@RequestParam("id")String ids) {
//springmvc从前台接收同名的多个数据的时候,会将这些同名的数据拼接成字符串,以“,”隔开;此外这里变量的命名需要和前台一致,如果想要不一致,就需要使用以上的这种方式起别名。
    String[] idss = ids.split(",");
    for (int i = 0; i < idss.length; i++) {
      personService.delete(Integer.parseInt(idss[i]));
    }
    return "redirect:/person/all.action";
  }

前端页面

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!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=UTF-8">
<title>Insert title here</title>
<script type="text/javascript">
function batchDelete(){
    document.forms[0].action="${pageContext.request.contextPath}/person/BatchDelete.action";
    document.forms[0].submit(); 
}

</script>
</head>
<body>

    <form method="post">

        <div style="padding: 20px;">人员列表</div>
        <div>
    <a href="${pageContext.request.contextPath }/person/createPerson.action">新增</a>
    <a href="#" onclick="batchDelete();">批量删除</a>
        </div>
        <table border="1">
            <tr>
                <td>选择</td>
                <td>图片</td>
                <td>name</td>
                <td>age</td>
                <td>sex</td>
                <td>del</td>
                <td>edit</td>
            </tr>

            <c:forEach items="${list}" var="p">
                <tr>
                    <td><input type="checkbox" name="id" value="${p.id}"/></td>
                    <td><img src="${pageContext.request.contextPath}/${p.photopath }">
                    <td>${p.name}</td>
                    <td>${p.age}</td>
                    <td>${p.sex}</td>
                    <td>
                    <a href="deletePerson.action?id=${p.id}">删除</a>
                    </td>
                    <td><a href="toEdit.action?id=${p.id }">编辑</a></td>

                </tr>
            </c:forEach>

        </table>



    </form>

</body>
</html>

相关文章

网友评论

      本文标题:springmvc(1)

      本文链接:https://www.haomeiwen.com/subject/pjrovxtx.html