日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

02基于注解开发SpringMVC项目(jar包,异步,request,参数传递,多选的接收,Model传参,map传参,model传参,ajax,重定向,时间日期转换)

發布時間:2024/9/27 javascript 30 豆豆


1?所需jar

項目結構如下:

2?web.xml配置文件的內容如下:

<?xmlversion="1.0"encoding="UTF-8"?>

<web-appversion="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">

?<servlet>

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

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

?</servlet>

?<servlet-mapping>

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

?? <!-- struts/*,springmvc不能用/*方式,配置的url-pattern如:*.xxx -->

?? <url-pattern>*.do</url-pattern>

?</servlet-mapping>

</web-app>

3?springmvc-servlet.xml的內容如下:

<?xmlversion="1.0"encoding="UTF-8"?>

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

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

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

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

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

??????http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd

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

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

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

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

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

??????http://www.springframework.org/schema/tx/spring-tx-3.0.xsd ">

???<context:component-scanbase-package="com.rl.controller"/>

???<bean

?????? class="org.springframework.web.servlet.view.InternalResourceViewResolver">

??????<propertyname="prefix"value="/WEB-INF/jsp/"/>

??????<propertyname="suffix"value=".jsp"/>

???</bean>

?

???<!--文件上傳的視圖解析器 id一定是multipartResolver,不能隨便定義 -->

???<beanid="multipartResolver"

???class="org.springframework.web.multipart.commons.CommonsMultipartResolver">

??????<!--文件上傳的最大值,以字節為單位 -->

??????<propertyname="maxUploadSize"value="1024000"></property>

???</bean>

?

???<mvc:interceptors>

??????<mvc:interceptor>

??????????<!-- path:指定要攔截的范圍。語法:/(根目錄)test/**,所有攔截/** -->

??????????<mvc:mappingpath="/**"/>

??????????<beanclass="com.rl.interceptor.MyInterceptor"/>

??????</mvc:interceptor>

???</mvc:interceptors>

</beans>

4?Test1Controller.java的內容如下:

package com.rl.controller;

?

import org.springframework.stereotype.Controller;

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

?

@Controller

@RequestMapping("/test1") //當前Controllernamespace,防止不同的Controller中方名重復的問題

public class Test1Controller {

????????

????????/**

?????????* 瀏覽器中的訪問地址是:http://localhost:8080/springmvc2/test1/toAjax.do

?????????* @return

?????????*/

????????@RequestMapping("/toAjax.do")

????????public String toAjax() {

??????????????????return "ajax";

????????}

}

5?TestController的內容如下:

package com.rl.controller;

?

import java.io.IOException;

import java.io.PrintWriter;

import java.sql.Date;

import java.text.SimpleDateFormat;

import java.util.HashMap;

import java.util.Map;

?

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

?

import org.springframework.beans.propertyeditors.CustomDateEditor;

import org.springframework.stereotype.Controller;

import org.springframework.ui.Model;

import org.springframework.web.bind.ServletRequestDataBinder;

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

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

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

import org.springframework.web.servlet.ModelAndView;

?

import com.rl.model.Person;

import com.rl.model.User;

?

@Controller

@RequestMapping("test")

//當前Controllernamespace,防止不同Controller中方法名重復的問題

public class TestController {

?

????????public TestController() {

??????????????????System.out.println("Controller被創建....");

????????}

?

????????/**

?????????* desc:返回值類型是String,含義是ModelAndView中的viewname

?????????*

?????????* @RequestMapping:請求方法的映射,內容最好和方法名稱一致

?????????* @author 涂作權

?????????* @return

?????????*/

????????@RequestMapping("/hello.do")

????????public String hello() {

??????????????????return "index";

????????}

?

????????/**

?????????* desc:HttpServletRequest可以直接定義在方法的參數列表中來使用

?????????*

?????????* @param request

?????????* @author 涂作權

?????????* @return

?????????*/

????????@RequestMapping("/getParam.do")

????????public String getParam(HttpServletRequest request) {

??????????????????String name = request.getParameter("name");

??????????????????System.out.println(name);

??????????????????return "index";

????????}

?

????????/**

?????????* desc:在參數的列表中來直接定義要接收的參數,參數名(形象)一定要

?????????* ??????????? 和請求中傳遞的參數名(實參)一致,數據類型會自動的轉換,如果數據

?????????* ??????????? 類型轉換出錯會報400錯誤???

?????????*

?????????* @param name

?????????* @param id

?????????* @param age

?????????* @param address

?????????* @param birthday

?????????* @author 涂作權

?????????* @return

?????????*/

????????@RequestMapping("/getParam1.do")

????????public String getParam1(String name, Integer id, Integer age,

???????????????????????????String address, Date birthday) {

??????????????????System.out.println("姓名:" + name + "?id" + id.getClass() + "?年齡:"

????????????????????????????????????+ age + " 地址: " + address + "生日:" + birthday);

??????????????????return "index";

????????}

?

????????/**

?????????* desc:多選的接收在參數列表中定義數組來接收,參數名(形參)一定要和請求中傳遞的參數名(實參)一致,數據類型會自動的轉換,

?????????* 如果以字符串來接收的話會接收到一個以逗號分隔的一個字符串

?????????*

?????????* @author 涂作權

?????????* @param favor

?????????* @return

?????????*/

????????@RequestMapping("/getParam2.do")

????????public String getParam2(String[] favor) {

??????????????????System.out.println(favor);

??????????????????for (String fa : favor) {

???????????????????????????System.out.println(fa);

??????????????????}

??????????????????return "index";

????????}

?

????????/**

?????????* desc:接收實體對象,直接在參數列表中定義要接收的實體類就可以了,每次訪問的時候springmvc會自動創建相關參數的實體對象,對象中

?????????* 的屬性值是通過請求傳遞過來并且注入到對象中

?????????*

?????????* @author 涂作權

?????????* @param person

?????????* @param user

?????????* @param name

?????????* @return

?????????*/

????????@RequestMapping("/getParamByObj.do")

????????public String getParamByObj(Person person, User user, String name) {

??????????????????System.out.println(person);

??????????????????System.out.println(user);

??????????????????return "index";

????????}

?

????????/**

?????????* 不建議使用 desc:返回值類型定義成ModelAndView,把數據和視圖注入到ModelAndView中返回即可

?????????*

?????????* @return

?????????* @author 涂作權

?????????* @throws Exception

?????????*/

????????@RequestMapping("/returnData.do")

????????public ModelAndView returnData() throws Exception {

??????????????????Person p = new Person();

??????????????????p.setId(1);

??????????????????p.setName("zhangsan");

??????????????????p.setAge(22);

??????????????????p.setAddress("beijing");

??????????????????p.setBirthday(new SimpleDateFormat("yyyy-MM-dd").parse("2013-08-05"));

??????????????????Map<String, Object> map = new HashMap<String, Object>();

??????????????????// 相當于request.setAttribute("person", p);

??????????????????map.put("person", p);

?

??????????????????return new ModelAndView("index", map);

????????}

?

????????/**

?????????* 不建議使用 desc:返回值是String類型:viewName,參數是map,ModelAndView map,不是接收參數的。

?????????*

?????????* @author 涂作權

?????????* @param map

?????????* @return

?????????* @throws Exception

?????????*/

????????@RequestMapping("/returnData1.do")

????????public String returnData1(Map<String, Object> map) throws Exception {

??????????????????Person p = new Person();

??????????????????p.setId(1);

??????????????????p.setName("zhangsan");

??????????????????p.setAge(22);

??????????????????p.setAddress("beijing");

??????????????????p.setBirthday(new SimpleDateFormat("yyyy-MM-dd").parse("2013-08-05"));

??????????????????// 相當于request.setAttribute("person", p);

??????????????????map.put("person", p);

??????????????????return "index";

????????}

?

????????/**

?????????* 在參數列表中定義Model來給頁面返回數據 desc:建議使用

?????????*

?????????* @author 涂作權

?????????* @param model

?????????* @return

?????????* @throws Exception

?????????*/

????????@RequestMapping("/returnData2.do")

????????public String returnData2(Model model) throws Exception {

??????????????????Person p = new Person();

??????????????????p.setId(1);

??????????????????p.setName("zhangsan");

??????????????????p.setAge(22);

??????????????????p.setAddress("beijing");

??????????????????p.setBirthday(new SimpleDateFormat("yyyy-MM-dd").parse("2013-08-05"));

??????????????????// 相當于request.setAttribute("person", p);

??????????????????model.addAttribute("person", p);

??????????????????return "index";

????????}

?

????????/**

?????????* descmethod=RequestMethod.POST該方法只能使用method指定的請求方式來指定

?????????*/

????????@RequestMapping(value = "/getParamByObjWithMethod.do", method = RequestMethod.POST)

????????public String getParamByObjWithMethod(Person person) {

??????????????????System.out.println(person);

??????????????????return "success";

????????}

?

????????/**

?????????* desc:在參數列表中直接來定義HttpServletResponse并且方法的返回值要定義voidajax提供調用

?????????*

?????????* @author 涂作權

?????????* @param name

?????????* @param response

?????????*/

????????@RequestMapping("/ajax.do")

????????public void ajax(String name, HttpServletResponse response) {

??????????????????String result = "hello" + name;

??????????????????try {

???????????????????????????response.getWriter().write(result);

??????????????????} catch (IOException e) {

???????????????????????????e.printStackTrace();

??????????????????}

????????}

?

????????/**

?????????* desc:直接在參數列表中來定義PrintWriter建議使用

?????????*

?????????* @param name

?????????* @param out

?????????*/

????????@RequestMapping("/ajax1.do")

????????public void ajax1(String name, PrintWriter out){

??????????????????String result = "hello " + name;

??????????????????out.write(result);

????????}

?

????????@RequestMapping("/toAjax.do")

????????public String toAjax(){

??????????????????return "ajax";

????????}

?

????????/**

?????????* 在同一個Controller中重定向語法 return后面 redirect:當前

?????????*? ???????? Controller中方法的@RequestMapping的值

?????????*

?????????* @return

?????????*/

????????@RequestMapping("/redirectToAjax.do")

????????public String redirectToAjax(){

??????????????????return "redirect:toAjax.do";

????????}

?

????????/**

?????????* controller之間的重定向redirect:后面要有"/",代表從項目的根目錄開始

?????????*

?????????* @return

?????????* @author 涂作權

?????????*/

????????@RequestMapping("/redirectToAjax1.do")

????????public String redirectToAjax1(){

??????????????????return "redirect:/test1/toAjax.do";

????????}

?

????????/**

?????????* 單純的轉發

?????????*

?????????* @author 涂作權

?????????* @return

?????????*/

????????@RequestMapping("/toForm.do")

????????public String toForm(){

??????????????????return "form";

????????}

?

????????/**

?????????* 用于轉換數據類型

?????????* @param binder

?????????*/

????????@InitBinder

????????public void initBinder(ServletRequestDataBinder binder){

??????????????????binder.registerCustomEditor(Date.class,

????????????????????????????????????new CustomDateEditor(new SimpleDateFormat("yyyy-MM-dd"), true));

????????}

}

6 UploadController的內容如下:

package com.rl.controller;

?

import java.io.File;

import java.io.FileOutputStream;

import java.io.OutputStream;

import java.text.SimpleDateFormat;

import java.util.Date;

import java.util.Random;

?

import javax.servlet.http.HttpServletRequest;

?

import org.springframework.beans.propertyeditors.CustomDateEditor;

import org.springframework.stereotype.Controller;

import org.springframework.web.bind.ServletRequestDataBinder;

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

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

import org.springframework.web.multipart.MultipartFile;

import org.springframework.web.multipart.MultipartHttpServletRequest;

?

import com.rl.model.Person;

?

@Controller

@RequestMapping("/upload")

//當前Controllernamespace,防止不同Controller中方法名重復的問題

public class UploadController {

?

????????@RequestMapping("/uploadPic.do")

????????public String uploadPic(Person person, HttpServletRequest request)

???????????????????????????throws Exception {

??????????????????// request轉換成MultipartHttpServletRequest

??????????????????MultipartHttpServletRequest mr = (MultipartHttpServletRequest) request;

??????????????????// 獲得文件,這里的pic是表單中的file字段對應的屬性名稱

??????????????????MultipartFile mf = mr.getFile("pic");???????

??????????????????// 獲得文件的字節數組

??????????????????byte[] fbyte = mf.getBytes();

??????????????????// 獲得當前時間的最小精度

??????????????????String fileName = new SimpleDateFormat("yyyyMMddHHmmssSSS")

????????????????????????????????????.format(new Date());

??????????????????// 追加三位隨機數

??????????????????Random random = new Random();

??????????????????for (int i = 0; i < 3; i++) {

???????????????????????????fileName = fileName + random.nextInt(10);

??????????????????}

??????????????????// 獲得原始文件名

??????????????????String oriFileName = mf.getOriginalFilename();

??????????????????// 獲得后綴名

??????????????????String suffix = oriFileName.substring(oriFileName.lastIndexOf("."));

??????????????????// 拿到服務器的根目錄

??????????????????String realPath = request.getSession().getServletContext()

????????????????????????????????????.getRealPath("/");

??????????????????// 創建文件輸出流

??????????????????OutputStream out = new FileOutputStream(new File(realPath + "/upload/"

????????????????????????????????????+ fileName + suffix));

??????????????????out.write(fbyte);

??????????????????out.flush();

??????????????????out.close();

??????????????????return "success";

????????}

?

????????@InitBinder

????????public void initBinder(ServletRequestDataBinder binder) {

??????????????????binder.registerCustomEditor(Date.class, new CustomDateEditor(

????????????????????????????????????new SimpleDateFormat("yyyy-MM-dd"), true));

????????}

}

7?MyInterceptor的內容如下:

package com.rl.interceptor;

?

import java.util.Map;

?

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

?

import org.springframework.web.servlet.HandlerInterceptor;

import org.springframework.web.servlet.ModelAndView;

?

public class MyInterceptor implements HandlerInterceptor{

?

????????/**

?????????* 執行時機:在視圖解析器解析完畢之后,頁面一旦報錯異常會拋到該方法中,

?????????* try{}catch后面的finally,用于系統監控

?????????*/

????????public void afterCompletion(HttpServletRequest arg0,

???????????????????????????HttpServletResponse arg1, Object arg2, Exception ex)

???????????????????????????throws Exception {

??????????????????System.out.println("afterCompletion...................");

??????????????????System.out.println("----------------------------------");

??????????????????ex.printStackTrace();

??????????????????System.out.println("----------------------------------");

????????}

?

????????/**

?????????* 執行時機:Controller執行完畢,視圖解析器解析之前來執行

?????????* 注意:此案例中如果是測試異步,這里的mvnull,此處會報錯。

?????????* 解決辦法是注釋掉springmvc-servlet.xml中的攔截器的配置內容

?????????*/

????????public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1,

???????????????????????????Object arg2, ModelAndView mv) throws Exception {

??????????????????Map<String, Object> map = mv.getModel();

??????????????????map.put("test", "append something...");

??????????????????System.out.println("postHandle...");

????????}

?

????????/**

?????????* 返回值數據類型是布爾類型:true放行, false是阻止訪問

?????????* 執行時機:Controller執行之前

?????????*

?????????* 最常用的應用場景就是權限的攔截

?????????*/

????????public boolean preHandle(HttpServletRequest arg0, HttpServletResponse arg1,

???????????????????????????Object obj) throws Exception {

??????????????????System.out.println("preHandle...");

??????????????????System.out.println(obj.getClass().getName());

??????????????????return true;

????????}

}

8?Person的內容如下:

package com.rl.model;

?

import java.util.Date;

?

publicclass Person {

???Integer id;

???String name;

???Integer age;

???String address;

???Date birthday;

???

???/**

????* @return the id

????*/

???public Integer getId() {

??????returnid;

???}

???

???/**

????* @param id the id to set

????*/

???publicvoid setId(Integer id) {

??????this.id = id;

???}

???

???/**

????* @return the name

????*/

???public String getName() {

??????returnname;

???}

???

???/**

????* @param name the name to set

????*/

???publicvoid setName(String name) {

??????this.name = name;

???}

???

???/**

????* @return the age

????*/

???public Integer getAge() {

??????returnage;

???}

???

???/**

????* @param age the age to set

????*/

???publicvoid setAge(Integer age) {

??????this.age = age;

???}

???

???/**

????* @return the address

????*/

???public String getAddress() {

??????returnaddress;

???}

???

???/**

????* @param address the address to set

????*/

???publicvoid setAddress(String address) {

??????this.address = address;

???}

???

???/**

????* @return the birthday

????*/

???public Date getBirthday() {

??????returnbirthday;

???}

???

???/**

????* @param birthday the birthday to set

????*/

???publicvoid setBirthday(Date birthday) {

??????this.birthday = birthday;

???}

}

9 User的內容如下

package com.rl.model;

?

publicclass User {

???Integer id;

???String name;

???/**

????* @return the id

????*/

???public Integer getId() {

??????returnid;

???}

???/**

????* @param id the id to set

????*/

???publicvoid setId(Integer id) {

??????this.id = id;

???}

???

???/**

????* @return the name

????*/

???public String getName() {

??????returnname;

???}

???/**

????* @param name the name to set

????*/

???

???publicvoid setName(String name) {

??????this.name = name;

???}

???

???@Override

???public String toString() {

??????return"User [id=" +id +", name=" +name +"]";

???}

}

10 ajax.jsp的內容如下:

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

<%

String path = request.getContextPath();

String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";

%>

?

<!DOCTYPEHTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

?<head>

???<basehref="<%=basePath%>">

???

???<title>My JSP 'index.jsp' starting page</title>

???<metahttp-equiv="pragma"content="no-cache">

???<metahttp-equiv="cache-control"content="no-cache">

???<metahttp-equiv="expires"content="0">???

???<metahttp-equiv="keywords"content="keyword1,keyword2,keyword3">

???<metahttp-equiv="description"content="This is my page">

???<scripttype="text/javascript"src="js/jquery.js"></script>

???<scripttype="text/javascript">

???$(function(){

??????$("#mybutton").click(function(){

??????????console.log("test");

??????????varmytext = $("#mytext").val();

??????????$.ajax({

?????????????url:"test/ajax1.do",

?????????????type:"post",

?????????????dataType:"text",

?????????????data:{

?????????????????name:mytext

?????????????},

?????????????success:function(responseText){

?????????????????alert(responseText);

?????????????},

?????????????error:function(){

?????????????????alert("system error");

?????????????}

??????????});

??????});

???});

??????

???</script>

?</head>

?

?<body>

??<inputtype="text"id="mytext"/>

??<inputid="mybutton"type="button"value="click"/>

?</body>

</html>

11 form.jsp的內容如下:

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

?

<!DOCTYPEHTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

?<head>

???

???<title>My JSP 'form.jsp' starting page</title>

???

?</head>

?

?<body>

???<formaction="upload/uploadPic.do"method="post"enctype="multipart/form-data">

???id<inputname="id"type="text"/><br>

???name<inputname="name"type="text"/><br>

???age<inputname="age"type="text"/><br>

???address<inputname="address"type="text"/><br>

???birthday<inputname="birthday"type="text"/><br>

???pic:<inputtype="file"name="pic"/><br>

???<inputvalue="submit"type="submit"/>

???</form>

?</body>

</html>

12 index.jsp的內容如下:

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

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

?

<!DOCTYPEHTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

?<head>

???

???<title>My JSP 'index.jsp' starting page</title>

???

?</head>

?

?<body>

???<h1>${person.id}</h1>

???<h1>${person.name}</h1>

???<h1>${person.age}</h1>

???<h1>${person.address}</h1>

???<h1><fmt:formatDatevalue="${person.birthday }"pattern="yyyy-MM-dd"/></h1>

???<h1>${test }</h1>

?</body>

</html>

13 success.jsp的內容如下:

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

?

<!DOCTYPEHTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

?<head>

???

???<title>My JSP 'success.jsp' starting page</title>

???

?</head>

?

?<body>

???success<br>

?</body>

</html>

?

與50位技術專家面對面20年技術見證,附贈技術全景圖

總結

以上是生活随笔為你收集整理的02基于注解开发SpringMVC项目(jar包,异步,request,参数传递,多选的接收,Model传参,map传参,model传参,ajax,重定向,时间日期转换)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。