SpringMvc

Springmvc

一般的步骤:

1.搭建开发环境

2.传值

3.保存数据

4.核心思想

5.文件上传

6.深入了解源码

MVC  Model1:页面和代码混用

MVC  Model2:页面和代码分离

具体实现:

一、搭建SpringMVC开发环境

步骤:

1.导jar包

2.配置web.xml(一般配置完成后不需要再次改变)

  <servlet>

       <servlet-name>springmvc</servlet-name>

         <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-clas>

  </servlet>

  <servlet-mapping>

       <servlet-name>springmvc</servlet-name>

       <url-pattern>/</url-pattern>

  </servlet-mapping>

3.编写Controller层

 继承于AbstractController实现他的

protected ModelAndView handleRequestInternal(HttpServletRequest arg0,

            HttpServletResponse arg1) throws Exception {

          return null;

    }

方法

AbstractController是整个Controller继承层次的起源,该类通过模板方法模式(Template Method Pattern)帮我们解决了如下几个通用关注点:

  • 管理当前Controller所支持的请求方法类型(GET/POST);
  • 管理页面的缓存设置,即是否允许浏览器缓存当前页面;
  • 管理执行流程在会话(Session)上的同步。

而我们所要做的,只不过是在AbstractController所公开的handleRequestInternal (request,response)模板方法中实现具体Web请求处理过程中的其他逻辑。

3.编写xxx-servlet.xml配置文件

  <bean name="/hello" class="具体实现的类名和包名 " />

小案例:可以在调用浏览器时在控制台输出一段话

xxx-servlet.xml文件:

通过注解:

  <context:component-scan base-package="com.Springmvc"/>

  <bean name="/hello" class="com.Springmvc.Controller.HelloController" />

在浏览器调用的时候访问:(加项目名!!)

http://localhost:8080/springmvc/hello

Web.xml文件配置:

<?xml version="1.0" encoding="UTF-8"?>

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0">

  <servlet>

    <servlet-name>springmvc</servlet-name>

    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>

  </servlet>

  <servlet-mapping>

    <servlet-name>springmvc</servlet-name>

    <url-pattern>/</url-pattern>

  </servlet-mapping>

</web-app>

具体的实现:

public class HelloController extends AbstractController{

    protected ModelAndView handleRequestInternal(HttpServletRequest arg0,

            HttpServletResponse arg1) throws Exception {

           System.out.println("Hello Spring");

        return null;

    }

}
二、简单的页面传参

1)          HandlerMapping介绍:

 

 

2)视图解析器

视图解析器

将逻辑视图的名字与JSP等视图技术进行匹配

InternalResourceViewResolver

在Web应用程序的WAR文件中查找视图模板,视图模板的路径

根据加完前缀和后缀的逻辑视图名称来确定

prefix

suffix

<beanclass="org.springframework.web.servlet.view.InternalResourceViewResolver" >

//文件是在WEB-INF/的对应文件

<property name="prefix" value="/WEB-INF/"/>

//是以.jsp结尾的

<property name="suffix" value=".jsp"/>

</bean>

如:逻辑视图名称 /WEB-INF/index.jsp

3.)案例在页面上传参(map / modal)

xxx.sevlet.xml文件

//开启注解

<context:component-scan base-package="com.Springmvc"/>

<!-- 配置视图解析器 -->

   <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">

     //文件是在WEB-INF/的对应文件

      <property name="prefix" value="/WEB-INF/" />

//是以.jsp结尾的

      <property name="suffix" value=".jsp" />

   </bean>

Web.xml文件:

<?xml version="1.0" encoding="UTF-8"?>

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0">

  <servlet>

    <servlet-name>springmvc</servlet-name>

    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>

  </servlet>

  <servlet-mapping>

    <servlet-name>springmvc</servlet-name>

    <url-pattern>/</url-pattern>

  </servlet-mapping>

</web-app>

 

1. 通过@RequestMapping("名")注解实现打开相应的.jsp文件

具体的实现

package com.Springmvc.Controller;

import org.springframework.stereotype.Controller;

import org.springframework.web.bind.annotation.RequestMapping;

@Controller

@RequestMapping("/group")//具体的指向

public class Group {    

 @RequestMapping("/toadd")//在浏览器中调用的名称

  public String add(){

           System.out.println("asdasda");

           Return  "group/add";//返回到对应的文件路径

  }

}

"group/add"所对应的是:

 

 

访问:

http://localhost:8080/com.Springmvc/toadd

 

2.通过MAP集合实现界面上的输出信息

  实现类

  public class userController {

         @RequestMapping("/show")//在浏览器中调用的名称

    public String show (String username,Map<String,Object> param){

            //界面上传入的值:

                        param.put("uname", username);

 

               List<String> users = new ArrayList<String>();

               users.add("asdas");

               users.add("asdas");

               users.add("sdfsdfsf");

               param.put("users", users);   //在jsp界面上调用的名称users

                   return "user/show";//返回到对应的文件路径

    }

 

 

Jsp界面

<body>

    <h2>user show...</h2>

            //获取

    用户名:${uname}<br />

    <c:forEach var="user" items="${users }">

    ${user }<br />

    </c:forEach>

  </body>

 

访问:

http://localhost:8080/com.Springmvc/show

 

 

3.通过model实现界面上的输出信息

用户类:

package com.Springmvc.Controller;

public class User {

    private int id;

    private String username;

    private String name;

    public User(){}

    public User(int id,String username,String name){

        this.id = id;

        this.username = username;

        this.name = name;

    }

    public int getId() {

        return id;

    }

    public void setId(int id) {

        this.id = id;

    }

    public String getUsername() {

        return username;

    }

    public void setUsername(String username) {

        this.username = username;

    }

    public String getName() {

        return name;

    }

    public void setName(String name) {

        this.name = name;

    }

   

    @Override

    public String toString() {

        return "User [id=" + id + ", username=" + username + ", name=" + name

                + "]";

    }

}

 

实现类:

public class userconter {

    Map<Integer, Object>  users = new HashMap<Integer, Object>();

    public   userconter(){

        User u1 = new User(1,"lp","asdas");

        User u2 = new User(2,"syp","sadasd");

        User u3 = new User(3,"mxd","asdasd");

        users.put(u1.getId(), u1);

        users.put(u2.getId(), u2);

        users.put(u3.getId(), u3);

    }

 

    @RequestMapping("/list")

    public String list(Model model){

        model.addAttribute("user",users);

        return "user/list";

      }

}

 

网页显示界面:

<body>

       <table>

         <caption>用户列表</caption>

         <thead>

            <tr>

              <th>ID</th>

              <th>用户名</th>

              <th>用户昵称</th>

            </tr>

         </thead>

         <tbody>

              <c:forEach var="u" items="${user }">

               <tr>

                  <td> ${u.value.id}</td>

                   <td>${u.value.username}</td>

                    <td>${u.value.name }</td>

               </tr>

              </c:forEach>

         </tbody>

      </table>

  </body>

 

访问:

http://localhost:8080/com.Springmvc/list

 

 

 

 

传参:   @RequestParam:  必须给参数

public String fangfa(@RequestParam){

  return “jsp文件”

}

 

 

Controller间的跳转

 

redirect:类似于重定向

eg:return "redirect:/user/list";

 

表单元素name与对象属性一致即可!

 

REST风格

url:user/show/1

    通过@RequestMapping("/show/{id}")

public String show(@PathVariable int id,Model model){

实现

session使用:

方法参数:HttpSession session

 

 

 

参数传递

直接传递参数

有些是必须的@RequestParam

Rest{参数}

值得保存

Map

Model

跳转:Return “”

重定向:return “readice”

 

 

一、异常处理:

自定义异常

1.局部异常

  --针对单个Controller有效

步骤:

1)自定义一个异常类继承RuntimeException

eg:public class UserException extends RuntimeException {

2)@ExceptionHandler

eg:

public String handler(UserException ex,Model model){

         model.addAttribute("ex", ex);

         return "error";

}

在相应方法中捕获

throw new UserException("用户名或密码不正确");

3)配置spring MVC注解

eg:<mvc:annotation-driven />

 

2.全局异常

  --针对所有Controller有效

步骤:

1)自定义一个异常类继承RuntimeException

eg:public class UserException extends RuntimeException {

2)配置spring.xml

eg:

<!-- 全局异常处理解析器 -->

<bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">

         <!-- 设置异常属性 -->

         <property name="exceptionAttribute" value="ex" />

         <!-- 异常映射 -->

         <property name="exceptionMappings">

                   <props>

                            <prop key="com.ibeifeng.springmvc.exception.UserException">error</prop>

                   </props>

         </property>

</bean>

 

二、静态资源文件处理

在spring.xml中配置如下:

<mvc:resources location="/resources/" mapping="/resources/**" />

 

三、处理文件上传

1、单文件

步骤:

1).导包

commons-fileupload-1.3.2.jar

commons-io-2.5.jar

2)修改form表单

①<form enctype="multipart/form-data">

②头像:<input type="file" name="photo" />

3)修改add方法

public String add(User user,MultipartFile photo){

         String filename = photo.getOriginalFilename();

         FileUtils.copyInputStreamToFile(photo.getInputStream(), new File("D:\\Workspaces\\temp\\resources\\"+filename));

4)修改spring.xml配置

<!-- 配置文件上传解析器 -->

<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">

</bean>

 

2、多文件

步骤:

1)@RequestParam("photo") MultipartFile[] photos

for(MultipartFile photo : photos){

         String filename = photo.getOriginalFilename();

         //判断文件是否为空

         if(filename.isEmpty()){

                   continue;

         }

         try {

                   FileUtils.copyInputStreamToFile(photo.getInputStream(), new File("D:\\Workspaces\\temp\\resources\\"+filename));

         } catch (IOException e) {

                   e.printStackTrace();

         }

}

2)修改页面

头像:<input type="file" name="photo" /><br />

头像:<input type="file" name="photo" /><br />

头像:<input type="file" name="photo" /><br />

 

四、Spring  MVC返回JSON数据

步骤:

1.导jar

jackson-annotations-2.8.5.jar

jackson-core-2.8.5.jar

jackson-databind-2.8.5.jar

 

2.在方法上加入@ResponseBody

eg:

@RequestMapping("/show/{id}")

@ResponseBody

public User show(@PathVariable int id,Model model){

         User user = users.get(id);

         model.addAttribute("user",user);

         return user;

}

 

$.ajax({

         url:"user/show/1",

         dataType:

         success:function(data){

                  

         }

})

 

{"id":1,"username":"lp","name":"李","password":null}

data.id

 

{stu:{id:1,name:abc}}

data.stu.id

 

 

 

 

 

案例:SpringMvc + JdbcTemplate+Jq+js+web

  Spring –servlet.xml配置文件:

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"

xmlns:context="http://www.springframework.org/schema/context"

xmlns:aop="http://www.springframework.org/schema/aop"

 xmlns:mvc="http://www.springframework.org/schema/mvc"

  xmlns:tx="http://www.springframework.org/schema/tx"

    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

    xsi:schemaLocation="http://www.springframework.org/schema/beans

        http://www.springframework.org/schema/beans/spring-beans.xsd

        http://www.springframework.org/schema/context

        http://www.springframework.org/schema/context/spring-context.xsd

        http://www.springframework.org/schema/aop

          http://www.springframework.org/schema/mvc 

    http://www.springframework.org/schema/tx

    http://www.springframework.org/schema/tx/spring-tx.xsd

        http://www.springframework.org/schema/aop/spring-aop.xsd

        http://www.springframework.org/schema/mvc/spring-mvc-4.2.xsd">

  <!-- 指明注解包 -->

 <bean

 class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping">

 </bean>

 <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">

  <property name="messageConverters">

   <list><!-- json的时候必须加上,不然会提示406错误 -->

    <bean

     class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter" />

   </list>

  </property>

 </bean>

  <context:annotation-config/>

  <context:component-scan base-package="control"/>

  <context:component-scan base-package="Dao"/>

   <context:component-scan base-package="biz"/>

   <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">

   <property name="prefix" value="/WEB-INF/page/"/>

<!-- 配置我们自定义的返回方法调用的前缀 -->

   <property name="suffix" value=".jsp"/><!-- 返回我们自定义方法调用的后缀 -->

   <!-- 这样固定完成后,我们的地址就会变成 /WEB-INF/page/  .jsp我们在我们的文件中提供了String的返回值了之后就会将返回的String

        自动填充到这个空格里面,然后重定向 -->

  </bean>

    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" >

        <property name="driverClassName" value="com.mysql.jdbc.Driver"/>

        <property name="url" value="jdbc:mysql://localhost:3306/lintext"/>

        <property name="username" value="root"/>

        <property name="password" value="linqx"/>

    </bean>

   <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">

    <!-- 设置上传文件的尺寸(52428805M   这个bean 上面两个是固定格式的-->

    <property name="maxUploadSize"> 

        <value>52428800</value> 

    </property> 

</bean> 

</beans>

 

 

 

 

Web.xml文件:

<?xml version="1.0" encoding="UTF-8"?>

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">

   

    <servlet>

        <servlet-name>spring</servlet-name>

        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>

        <enabled>true</enabled>

        <async-supported>true</async-supported>

    </servlet>

   

    <servlet-mapping>

        <servlet-name>spring</servlet-name>

        <url-pattern>/</url-pattern>

    </servlet-mapping>

    <servlet-mapping>

     <servlet-name>default</servlet-name>

     <url-pattern>*.css</url-pattern>

</servlet-mapping>

 

<servlet-mapping>

    <servlet-name>default</servlet-name>

    <url-pattern>*.gif</url-pattern>

 

 </servlet-mapping>

   

 <servlet-mapping>

     <servlet-name>default</servlet-name>

     <url-pattern>*.jpg</url-pattern>

 </servlet-mapping>

 

 

 <servlet-mapping>

    <servlet-name>default</servlet-name>

    <url-pattern>/image/*</url-pattern>

</servlet-mapping>

 <servlet-mapping>

 

     <servlet-name>default</servlet-name>

     <url-pattern>*.js</url-pattern>

 </servlet-mapping>

 

   <!—过滤器-->

 <filter>

        <filter-name>encodingFilter</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>

        <init-param>

            <param-name>forceEncoding</param-name>

            <param-value>true</param-value>

        </init-param>

    </filter>

    <filter-mapping>

        <filter-name>encodingFilter</filter-name>

        <url-pattern>/*</url-pattern>

    </filter-mapping>

 

</web-app>

 

 

Dao层

package Dao;

import javax.annotation.Resource;

import javax.sql.DataSource;

import org.junit.runner.RunWith;

import org.springframework.jdbc.core.JdbcTemplate;

import org.springframework.stereotype.Component;

import org.springframework.test.context.ContextConfiguration;

import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

 

@RunWith(SpringJUnit4ClassRunner.class)

@ContextConfiguration("/WEB-INF/spring-servlet.xml")

@Component("da")

public class BasicDao {

public JdbcTemplate jdbcTemplate;

@Resource(name="dataSource")

public void setDataSource(DataSource dataSource) {

    this.jdbcTemplate = new JdbcTemplate(dataSource);

}

public JdbcTemplate getJdbcTemplate() {

         return jdbcTemplate;

}

 

Mldel层:user:

package biz;

public class UserPass {

private String username;

private String password;

public String getUsername() {

         return username;

}

public void setUsername(String username) {

         this.username = username;

}

public String getPassword() {

         return password;

}

public void setPassword(String password) {

         this.password = password;

}

}

Mldel层:newcon

package biz;

import java.sql.Date;

import java.text.SimpleDateFormat;

import org.springframework.stereotype.Component;

@Component("newslist")

public class NewCon {

private int id;

private String  title;

private String index;

private String pic;

private String create;

private String  createtime;

public int getId() {

         return id;

}

public void setId(int id) {

         this.id = id;

}

public String getTitle() {

         return title;

}

public void setTitle(String title) {

         this.title = title;

}

public String getIndex() {

         return index;

}

public void setIndex(String index) {

         this.index = index;

}

public String getPic() {

         return pic;

}

public void setPic(String pic) {

         this.pic = pic;

}

public String getCreate() {

         return create;

}

public void setCreate(String create) {

         this.create = create;

}

public String getCreatetime() {

         return createtime;

}

public void setCreatetime(Date createtime) {

         SimpleDateFormat myFmt=new SimpleDateFormat("YYYY-MM-DD");

         this.createtime = myFmt.format(createtime);

}

}

 

Controller层登录层:

package control;

import java.util.ArrayList;

import java.util.Map;

import javax.annotation.Resource;

import org.junit.Test;

import org.junit.runner.RunWith;

import org.springframework.jdbc.core.JdbcTemplate;

import org.springframework.stereotype.Controller;

import org.springframework.test.context.ContextConfiguration;

import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

import org.springframework.ui.Model;

import org.springframework.web.bind.annotation.RequestMapping;

import Dao.BasicDao;

@RunWith(SpringJUnit4ClassRunner.class)

@ContextConfiguration("/WEB-INF/spring-servlet.xml")

@Controller("DengLu")

@RequestMapping("/con")

public class DengLu {

         public  BasicDao dao;

         private JdbcTemplate jdbcTemplate;

         private NewCon newcon;

         public NewCon getNewcon() {

                   return newcon;

         }

         @Resource(name="NewCon")

         public void setNewcon(NewCon newcon) {

                   this.newcon = newcon;

         }

         public  BasicDao  BasicDao() {

                   return dao;

         }

         @Resource(name="da")

         public void setDao( BasicDao dao) {

                   this.dao = dao;

         }

         public JdbcTemplate getjdbcTemplate(){

                   jdbcTemplate=dao.getJdbcTemplate();

                   return  jdbcTemplate;

         }

         @RequestMapping("/checkname")

         @Test

        public String checkname(String username,String password,Model model){

                   String sql=" SELECT password,username FROM lintext.usepass where username=? and password=?";

                   jdbcTemplate=dao.getJdbcTemplate();

                   ArrayList<Map<String,Object>> o=(ArrayList<Map<String, Object>>) this.jdbcTemplate.queryForList(sql, username, password);

                   if(o!=null&&o.size()!=0){

                            return "redirect:/NewCon/select";

                   }

                   else{

                            return "redirect:/index.jsp";

                            }       

}

}

Controller层新闻管理层:

package control;

import java.io.File;

import java.io.IOException;

import java.io.InputStream;

import java.sql.Date;

import java.util.ArrayList;

import java.util.List;

import java.util.Map;

import javax.annotation.Resource;

import javax.websocket.server.PathParam;

import org.apache.commons.io.FileUtils;

import org.junit.Test;

import org.junit.runner.RunWith;

import org.springframework.jdbc.core.JdbcTemplate;

import org.springframework.stereotype.Controller;

import org.springframework.test.context.ContextConfiguration;

import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

import org.springframework.ui.Model;

import org.springframework.web.bind.annotation.PathVariable;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RequestParam;

import org.springframework.web.bind.annotation.ResponseBody;

import org.springframework.web.multipart.MultipartFile;

import Dao.BasicDao;

@RunWith(SpringJUnit4ClassRunner.class)

@ContextConfiguration("/WEB-INF/spring-servlet.xml")

@RequestMapping("/NewCon")

@Controller("NewCon")

public class NewCon {

         public  BasicDao dao;

         private JdbcTemplate jdbcTemplate;

         public  BasicDao  BasicDao() {

                   return dao;

         }

         @Resource(name="da")

         public void setDao( BasicDao dao) {

                   this.dao = dao;

         }

         public JdbcTemplate getjdbcTemplate(){

                   jdbcTemplate=dao.getJdbcTemplate();

                   return  jdbcTemplate;

         }

         @Test

         @RequestMapping("/select")

   public String selectnew(Model model){

                   //int id=0;

                   jdbcTemplate=dao.getJdbcTemplate();

                   ArrayList<Map<String,Object>> o;

                   String sql="";

                   sql="select * from lintext.newsindex ";

                    o=(ArrayList<Map<String, Object>>) this.jdbcTemplate.queryForList(sql);

                   model.addAttribute("newslist", o);

             return "newlist";

}

         @RequestMapping("/insertintodetail")

   //public String updatenewdetail(String id,String  title,String index,String pic,String create,String  createtime){

         public String insertnewdetail(String id,@RequestParam MultipartFile img,String  title,String index,String create,String  createtime) throws IOException{

                   //int id=0;

                   System.out.println( img);

                   String imgname=img.getOriginalFilename();

                   if(imgname!=null){

                            jdbcTemplate=dao.getJdbcTemplate();

                               int o;

                                     String sql="INSERT INTO `lintext`.`newsindex` "

                                                        + "( `title`, `index`, `create`, `createtime`,pic) VALUES "

                                                        + "( ?, ?,  ?, ?,?); ";

                                               this.jdbcTemplate.update(sql, title,index,create,createtime,imgname);

                                               File dir=new File("D:/Users/lin/Workspaces/MyEclipse 10/sprwebproject/WebRoot/image/"+imgname);

                                               InputStream imgfile=img.getInputStream();

                                               FileUtils.copyInputStreamToFile(imgfile,dir); 

                                               imgfile.close();

                   }

        return "redirect:/NewCon/select";

}

         @RequestMapping("/updatedetail")

            //public String updatenewdetail(String id,String  title,String index,String pic,String create,String  createtime){

         public String updatenewdetail(String id,@RequestParam MultipartFile file,String image,String  title,String index,String create,String  createtime) throws IOException{

                            //int id=0;

                   String imgname=file.getOriginalFilename();

                   if(imgname!=null||imgname!=""){

                            File dir=new File("D:/Users/lin/Workspaces/MyEclipse 10/sprwebproject/WebRoot/image/"+imgname);

                            InputStream imgfile=file.getInputStream();

                            FileUtils.copyInputStreamToFile(imgfile,dir); 

                            imgfile.close();

                   }else{

                            imgname=image;

                   }

                            jdbcTemplate=dao.getJdbcTemplate();           

             int o;

                            String sql="UPDATE lintext.newsindex SET `title`=?,`index`=?, `create`=?, `createtime`=?,pic=? WHERE `id`=?";

                                     this.jdbcTemplate.update(sql,title,index,create,createtime,imgname,id);

                                    

                 return "redirect:/NewCon/select";

         }

         @RequestMapping("/selectdetail/{id}")

         //public void selectnew(){

   public String selectnewdetail(@PathVariable int id,Model model){

                   //int id=0;

                   jdbcTemplate=dao.getJdbcTemplate();

                   ArrayList<Map<String,Object>> o;

                   String sql="select * from lintext.newsindex ";;

                   if(id==0){

                    o=(ArrayList<Map<String, Object>>) this.jdbcTemplate.queryForList(sql);

                   }else{

                            sql+=" where id=?";

                            o=(ArrayList<Map<String, Object>>) this.jdbcTemplate.queryForList(sql,id);

                   }

                   model.addAttribute("newslist", o);

             return "/newdetail";

}

         @RequestMapping("/deletedetail/{id}")

         //public void selectnew(){

   public String deletedetail(@PathVariable int id){

                   //int id=0;

                   jdbcTemplate=dao.getJdbcTemplate();

                   ArrayList<Map<String,Object>> o;

                   String sql="delete from lintext.newsindex where id=? ";;

                   this.jdbcTemplate.update(sql, id);

                  

                     return "redirect:/NewCon/select";

         }

@RequestMapping("/selectajax/{id}")

@ResponseBody

//public void selectnew(){

public Map<String, Object> selectajax(@PathVariable int id,Model model){

         jdbcTemplate=dao.getJdbcTemplate();

         List<Map<String, Object>> o;

         String sql="select * from lintext.newsindex ";;

         if(id==0){

          o=(List<Map<String, Object>>) this.jdbcTemplate.queryForObject(sql, NewCon.class,id);

         }else{

                   sql+=" where id=?";

         o= this.jdbcTemplate.queryForList(sql, id);

         }

    return  o.get(0);

}

}

 

 

 

Web层:用户登录界面

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>

<%

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">

         -->

         <script src="jquery-1.8.3.js" type="text/javascript"></script>

  </head>

 

  <body>

  <div>

  <form method="get" action="con/checkname" onsubmit="return sub()  ">

  <table>

  <tr><td>用户名:</td><td><input type="text" name="username" id="username"></td><td></td></tr>

  <tr><td>密码;:</td><td><input type="text" name="password" id="password"></td><td></td></tr>

  <tr><td colspan="3" id="info">&nbsp;</td></tr>

  <tr><td colspan="3" align="center"><input type="submit" value="登录"  ></td></tr>

  </table>

  </form>

  </div>

  <script type="text/javascript">

  function  sub(){

  if($("#username").required()&&$("#password").required()){

$("#info").html("&nbsp;");

return true;

}else{

$("#info").html("用户名或者密码不为空");

return false;

}

  }

 

 $.fn.required=function(){

 debugger;

var value=this.val();

if(value==null||value.lenght<=0||value==""){

return false;

}else{

return true;

}

}

  </script>

  </body>

</html>

用户新增页面:

<%@page import="java.text.SimpleDateFormat"%>

<i><%@page language="java" import="java.util.*" pageEncoding="utf-8"%>

<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>

<%

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 'newdetail.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>

    <div>

      <%

   Date da=new Date();

   SimpleDateFormat si=new SimpleDateFormat("YYYY-MM-dd");

   String date= si.format(da);

   %>

    <table border="1px">

    <caption>新闻新增页面</caption>

    <form method="Post" action="NewCon/insertintodetail" onsubmit="return sub()" enctype="multipart/form-data">

   

    <tr><td>编码:</td><td><input type="input" name="id" readonly="readonly"  ></td></tr>

    <tr><td>标题:</td><td><input type="input"  name="title"></td></tr>

    <tr><td>摘要:</td><td><input type="input" name="index"></td></tr>

    <tr><td>图片:</td><td><input type="file" name="img"></td></tr><!--传文件一定记得传递方法要用post,get大小不一定够 -->

   

    <tr><td>创建人:</td><td><input type="input"  name="create"></td></tr>

    <tr><td>创建时间:</td><td><input type="date"  name="createtime" value=<%=date %>></td></tr>

    <tr><td colspan="2"><input type="submit" value="确认新增" ></tr>

 

    </form>

    <script type="text/javascript">

    function sub(){

     var msg = "您真的确定要确认新增吗?\n\n请确认!";

 if (confirm(msg)==true){

  return true;

 }else{

  return false;

 }

}

    </script>

    </table>

    </div>

  </body>

</html>

</i>

新闻修改页面:

<i><%@page language="java" import="java.util.*" pageEncoding="utf-8"%>

<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>

<%

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 'newdetail.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>

    <div>

    <table border="1px">

    <caption>新闻修改页面</caption>

    <form method="post" action="NewCon/updatedetail" enctype="multipart/form-data" onsubmit="return sub()">

     <c:forEach items="${newslist}" var="s">

    <tr><td>编码:</td><td><input type="input" value="${s.id}" name="id" readonly="readonly"></td></tr>

    <tr><td>标题:</td><td><input type="input" value="${s.title}" name="title"></td></tr>

    <tr><td>摘要:</td><td><input type="input" value="${s.index}" name="index"></td></tr>

    <tr><td>图片:</td><td><input type="file"  id="file" name="file" >

    <img src="image/${s.pic}" width="40px" height="40px" id="image" name="image" value="${s.pic}"></td></tr>

    <tr><td>创建人:</td><td><input type="input" value="${s.create}" name="create"></td></tr>

    <tr><td>创建时间:</td><td><input type="date"   value="${s.createtime}" name="createtime"></td></tr>

    <tr><td colspan="2"><input type="submit" value="确认修改" ></tr>

    </c:forEach>

     <script src="jquery-1.8.3.js"></script>

     <script type="text/javascript">

     $(function(){

     $("#file").change(function(){

     debugger;

 

  

     alert(  $("#file").val());

     $("#image").attr("src", $("#file").val());

     $()

     });

     })

     </script>

    </form>

    <script type="text/javascript">

    function sub(){

     var msg = "您真的确定要修改吗?\n\n请确认!";

 if (confirm(msg)==true){

  return true;

 }else{

  return false;

 }

}

   

    </script>

    </table>

    </div>

  </body>

</html>

</i>

新闻list界面

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

<%

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 'newlist.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>

  <div>

 

   <table border="1px">

   <tr><td>编号 </td>

   <td>标题 </td>

     <td>摘要 </td>

     <td>图片</td>

     <td>创建人 </td>

     <td>创建时间</td>

      <td>操作</td>

   </tr>

   <c:forEach items="${newslist}" var="s">

   <tr><td>${s.id} </td>

   <td>${s.title} </td>

     <td>${s.index} </td>

     <td><img src="image/${s.pic}"  width="40px"  height="40px" /></td>

     <td>${s.create} </td>

     <td>${s.createtime} </td>

<td id="a">

       <a href="NewCon/selectdetail/${s.id}" id=${s.id} ">修改</a>|

          <a href="NewCon/deletedetail/${s.id}" id=${s.id} onclick="return cli()">删除</a> </td>

   </tr>

      </c:forEach>

   <div id="detail" background-color="white">

  编码:<input type="input" id="id" readonly="readonly"  ><br/>

   标题:<input type="input"  id="title"><br/>

  摘要:<input type="input" id="index"><br/>

    图片:<img name="img" id="img" width="20px" height="20px"><br/>

    创建人:<input type="input"  id="create"><br/>

  创建时间:<input type="date"  id="createtime" ><br/>

</div>

   <script src="jquery-1.8.3.js"></script>

   <script type="text/javascript">

   $(function(){

   $("#detail").css("display","none");

   $("#detail").css("background-color","pink");

      debugger;

    $("tr").not( $("tr")[0] ).not("#a").mouseover(function(e){

 

var left=e.originalEvent.x ;

var top=e.originalEvent.y ;

 $("#detail").css("position","absolute");

  $("#detail").css("top",top+10);

    $("#detail").css("left",left+10);

  var id=$(this).children(0).html();

  $.ajax({

  dataType:"json",

   type: "GET",

  url:"NewCon/selectajax/"+id+".json",

  success:function(a){

 

   $("#detail").css("display","inline");

 $("#id").attr("value",a.id);

  $("#title").attr("value",a.title);

    $("#index").attr("value",a.index);

    $("#img").attr("src","image/"+a.pic);

    $("#create").attr("value",a.create);

    $("#createtime").attr("value",a.createtime);

  }

  });

 

   });

   })

   function cli(){

     var msg = "您真的确定要删除吗?\n\n请确认!";

 if (confirm(msg)==true){

  return true;

 }else{

  return false;

 }

   }

   </script>

  

</div>

   </table>

   <a href="insertnewdetail.jsp">新增</a>

  </body>

</html>

 

posted @ 2017-05-15 19:24  茗羽阁  阅读(208)  评论(0)    收藏  举报