求《都市王牌保镖莫失初心》高清完整版百度云网盘资源O(∩_O谢谢

SpringMVC 常见注解 - pyzheng - ITeye技术网站
博客分类:
详解Spring MVC 4常用的那些注解
SpringMVC 常见注解
1o @Controller
2o @Service
3o @Autowired
4o @RequestMapping
5o @RequestParam
6o @ModelAttribute
7o @Cacheable
8o @CacheFlush
9o @Resource
10o @PostConstruct
11o @PreDestroy
12o @Repository
13o @Component (不推荐使用)
14o @Scope
15o @SessionAttributes
16o @InitBinder
17o @Required
18o @Qualifier
19o @PathVariable&
20o @Valid&
21o @AttributeOverride
22o @Column
1o& @Controller
& 例如
@Controller
public class SoftCreateController extends SimpleBaseController {}
& 或者
@Controller("softCreateController")
& 说明
@Controller 负责注册一个bean 到spring 上下文中,bean 的ID 默认为类名称开头字母小写
2o& @Service
& 例如
@Service
public class SoftCreateServiceImpl implements ISoftCreateService {}
& 或者
@Service("softCreateServiceImpl")
& 说明
@Service 负责注册一个bean 到spring 上下文中,bean 的ID 默认为类名称开头字母小写
3o& @Autowired
& 例如
@Autowired
private ISoftPMService softPMS
@Autowired(required=false)
private ISoftPMService softPMService = new SoftPMServiceImpl();
& 说明
@Autowired 根据bean 类型从spring 上线文中进行查找,注册类型必须唯一,否则报异常。与@Resource 的区别在于,@Resource 允许通过bean 名称或bean 类型两种方式进行查找@Autowired(required=false) 表示,如果spring 上下文中没有找到该类型的bean 时, 才会使用new SoftPMServiceImpl();
@Autowired 标注作用于 Map 类型时,如果 Map 的 key 为 String 类型,则 Spring 会将容器中所有类型符合 Map 的 value 对应的类型的 Bean 增加进来,用 Bean 的 id 或 name 作为 Map 的 key。
@Autowired 还有一个作用就是,如果将其标注在 BeanFactory 类型、ApplicationContext 类型、ResourceLoader 类型、ApplicationEventPublisher 类型、MessageSource 类型上,那么 Spring 会自动注入这些实现类的实例,不需要额外的操作。
4o& @RequestMapping
& 类
@Controller
@RequestMapping("/bbtForum.do")
public class BbtForumController {
@RequestMapping(params = "method=listBoardTopic")
public String listBoardTopic(int topicId,User user) {}
}
& 方法
@RequestMapping("/softpg/downSoftPg.do")
@RequestMapping(value="/softpg/ajaxLoadSoftId.do",method = POST)
@RequestMapping(value = "/osu/product/detail.do", params = { "modify=false" }, method =POST)
& 说明
@RequestMapping 可以声明到类或方法上
& 参数绑定说明
如果我们使用以下的 URL 请求:
http://localhost/bbtForum.do?method=listBoardTopic&topicId=1&userId=10&userName=tom
topicId URL 参数将绑定到 topicId 入参上,而 userId 和 userName URL 参数将绑定到 user 对象的 userId 和 userName 属性中。和 URL 请求中不允许没有 topicId 参数不同,虽然 User 的 userId 属性的类型是基本数据类型,但如果 URL 中不存在 userId 参数,Spring 也不会报错,此时 user.userId 值为 0 。如果 User 对象拥有一个 dept.deptId 的级联属性,那么它将和 dept.deptId URL 参数绑定。
5o& @RequestParam
& 参数绑定说明
@RequestParam("id")
http://localhost/bbtForum.do?method=listBoardTopic&id=1&userId=10&userName=tom
listBoardTopic(@RequestParam("id")int topicId,User user) 中的 topicId 绑定到 id 这个 URL 参数, 那么可以通过对入参使用 @RequestParam 注解来达到目的
@RequestParam(required=false):参数不是必须的,默认为true
@RequestParam(value="id",required=false)
请求处理方法入参的可选类型
* Java 基本数据类型和 String
默认情况下将按名称匹配的方式绑定到 URL 参数上,可以通过 @RequestParam 注解改变默认的绑定规则
* request/response/session
既可以是 Servlet API 的也可以是 Portlet API 对应的对象,Spring 会将它们绑定到Servlet 和 Portlet 容器的相应对象上
* org.springframework.web.context.request.WebRequest
内部包含了 request 对象
* java.util.Locale
绑定到 request 对应的 Locale 对象上
* java.io.InputStream/java.io.Reader
可以借此访问 request 的内容
* java.io.OutputStream / java.io.Writer
可以借此操作 response 的内容
* 任何标注了 @RequestParam 注解的入参
被标注 @RequestParam 注解的入参将绑定到特定的 request 参数上。
* java.util.Map / org.springframework.ui.ModelMap
它绑定 Spring MVC 框架中每个请求所创建的潜在的模型对象,它们可以被 Web 视图对象访问(如 JSP )
* 命令/ 表单对象(注:一般称绑定使用 HTTP GET 发送的 URL 参数的对象为命令对象,而称绑定使用HTTP POST 发送的 URL 参数的对象为表单对象)
它们的属性将以名称匹配的规则绑定到 URL 参数上,同时完成类型的转换。
而类型转换的规则可以通过 @InitBinder 注解或通过 HandlerAdapter 的配置进行调 整
* org.springframework.validation.Errors / org.springframework.validation.BindingResult
为属性列表中的命令/ 表单对象的校验结果,注意检验结果参数必须紧跟在命令/ 表单对象的后面
* org.springframework.web.bind.support.SessionStatus
可以通过该类型 status 对象显式结束表单的处理,这相当于触发 session 清除其中的通过@SessionAttributes 定义的属性
请求处理方法返回值的可选类型
* void
此时逻辑视图名由请求处理方法对应的 URL 确定,如以下的方法:
@RequestMapping("/welcome.do")
public void welcomeHandler() {}
对应的逻辑视图名为 “ welcome ”
* String
此时逻辑视图名为返回的字符,如以下的方法:
@RequestMapping(method = RequestMethod.GET)
public String setupForm(@RequestParam("ownerId") int ownerId, ModelMap model) {
Owner owner = this.clinic.loadOwner(ownerId);
model.addAttribute(owner);
return "ownerForm";
}
对应的逻辑视图名为 “ ownerForm ”
* org.springframework.ui.ModelMap
和返回类型为 void 一样,逻辑视图名取决于对应请求的 URL ,如下面的例子:
@RequestMapping("/vets.do")
public ModelMap vetsHandler() {
return new ModelMap(this.clinic.getVets());
}
对应的逻辑视图名为 “ vets ” ,返回的 ModelMap 将被作为请求对应的模型对象,可以在 JSP 视图页面中访问到。
* ModelAndView
当然还可以是传统的 ModelAndView 。
6o& @ModelAttribute
& 作用域:request
& 例如
@RequestMapping("/base/userManageCooper/init.do")
public String handleInit(@ModelAttribute("queryBean") ManagedUser sUser,Model model,){
& 或者
@ModelAttribute("coopMap")// 将coopMap 返回到页 面
public Map&Long,CooperatorInfo& coopMapItems(){}
@ModelAttribute 声明在属性上,表示该属性的value 来源于model 里"queryBean" ,并被保存到model 里
@ModelAttribute 声明在方法上,表示该方法的返回值被保存到model 里
o& @Cacheable 和@CacheFlush
7o& @Cacheable :声明一个方法的返回值应该被缓 存
例如:@Cacheable(modelId = "testCaching")
8o& @CacheFlush :声明一个方法是清空缓存的触发器
例如:@CacheFlush(modelId = "testCaching")
& 说明
要配合缓存处理器使用,参考: /blog/603719
9o& @Resource
& 例如
@Resource
private DataSource dataS // inject the bean named 'dataSource'
@Resource(name="dataSource")
@Resource(type=DataSource.class)
& 说明
@Resource 默认按bean 的name 进行查找,如果没有找到会按type 进行查找,
此时与@Autowired 类 似
在没有为 @Resource 注解显式指定 name 属性的前提下,如果将其标注在 BeanFactory 类型、ApplicationContext 类型、ResourceLoader 类型、ApplicationEventPublisher 类型、MessageSource 类型上,那么 Spring 会自动注入这些实现类的实例,不需要额外的操作。此时 name 属性不需要指定 ( 或者指定为""),否则注入失败;
o& @PostConstruct 和@PreDestroy
10o @PostConstruct
在方法上加上注解@PostConstruct ,这个方法就会在Bean 初始化之后被Spring 容器执 行
(注:Bean 初始化包括,实例化Bean ,并装配Bean 的属性(依赖注入))。
11o @PreDestroy
在方法上加上注解@PreDestroy ,这个方法就会在Bean 被销毁前被Spring 容器执行。
12o& @Repository
& 与@Controller 、@Service 类似,都是向spring 上下文中注册bean ,不在赘述。
13o& @Component (不推荐使用)
@Component 是所有受Spring 管理组件的通用形式,Spring 还提供了更加细化的注解形式: @Repository 、@Service 、@Controller ,它们分别对应存储层Bean ,业务层Bean ,和展示层Bean 。
目前版本(2.5 )中,这些注解与@Component 的语义是一样的,完全通用, 在Spring 以后的版本中可能会给它们追加更多的语义。 所以,我们推荐使用@Repository 、@Service 、@Controller 来替代@Component 。
14o& @Scope
& 例如
@Scope("session")
@Repository()
public class UserSessionBean implementsSerializable {}
在使用XML 定义Bean 时,可以通过bean 的scope 属性来定义一个Bean 的作用范围,
同样可以通过@Scope 注解来完成
@Scope中可以指定如下值:
singleton:定义bean的范围为每个spring容器一个实例(默认值)
prototype:定义bean可以被多次实例化(使用一次就创建一次)
request:定义bean的范围是http请求(springMVC中有效)
session:定义bean的范围是http会话(springMVC中有效)
global-session:定义bean的范围是全局http会话(portlet中有效)
15o& @SessionAttributes
& 说明
Spring 允许我们有选择地指定 ModelMap 中的哪些属性需要转存到 session 中,
以便下一个请求属对应的 ModelMap 的属性列表中还能访问到这些属性。
这一功能是通过类定义处标注 @SessionAttributes 注解来实现的。
@SessionAttributes 只能声明在类上,而不能声明在方法上。
&& 例如
@SessionAttributes("currUser") // 将ModelMap 中属性名为currUser 的属性
@SessionAttributes({"attr1","attr2"})
@SessionAttributes(types = User.class)
@SessionAttributes(types = {User.class,Dept.class})
@SessionAttributes(types = {User.class,Dept.class},value={"attr1","attr2"})
16o& @InitBinder
&& 说明
如果希望某个属性编辑器仅作用于特定的 Controller ,
可以在 Controller 中定义一个标注 @InitBinder 注解的方法,
可以在该方法中向 Controller 了注册若干个属性编辑器
&& 例如
@InitBinder
public void initBinder(WebDataBinder binder) {
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
dateFormat.setLenient(false);
binder.registerCustomEditor(Date.class, new CustomDateEditor(dateFormat, false));
17o& @Required
& 例如
@required
public setName(String name){}
& 说明
@ required 负责检查一个bean在初始化时其声明的 set方法是否被执行, 当某个被标注了 @Required 的 Setter 方法没有被调用,则 Spring 在解析的时候会抛出异常,以提醒开发者对相应属性进行设置。 @Required 注解只能标注在 Setter 方法之上。因为依赖注入的本质是检查 Setter 方法是否被调用了,而不是真的去检查属性是否赋值了以及赋了什么样的值。如果将该注解标注在非 setXxxx() 类型的方法则被忽略。
18o& @Qualifier
例如
@Autowired
@Qualifier("softService")
private ISoftPMService softPMS
说明
使用@Autowired 时,如果找到多个同一类型的bean,则会抛异常,此时可以使用 @Qualifier("beanName"),明确指定bean的名称进行注入,此时与 @Resource指定name属性作用相同。
19o @PathVariable
@PathVariable是用来对指定请求的URL路径里面的变量
eg: Java代码 @RequestMapping(value = "form/{id}/apply", method = {RequestMethod.PUT, RequestMethod.POST}) {id}
在这个请求的URL里就是个变量,可以使用@PathVariable来获取
20o @valid
@Valid Production production //实体设置+类+类的引用 直接将页面传过来的production对象中的信息封装到里面去了
21o& @AttributeOverride
@AttributeOverride表示属性的映射,而@AttributeOverrides由多个@AttributeOverride& 注释组成,每个@AttributeOverride表示属性的映射,它的定义如以下所示:
@Target({TYPE, METHOD, FIELD}) @Retention(RUNTIME)
public @interface AttributeOverride {
String name();
Column column();
}
在使用@AttributeOverride注释应注意以下几方面的问题:
&& ☆&&&& name属性表示嵌入式类中的属性名称。
&& ☆&&&& column属性表示,所嵌入的实体类中的列定义,其中@Column标记表示的意义见第22项。
&& ☆&&&&& 例如将tb_customer表中的customer_zip字段映射为Address中的属性zip。代码如下所示:
@AttributeOverride(name = "zip",
column = @Column(name = "customer_zip")
)
& ☆&&&&&& 使用嵌入式类的好处是:多个实体中都可以共享一个嵌入式类,方便了对实体的操作。例如现在ContactEO也嵌入Address类,就很方便的映射为以下所示:
public class CustomerEO implements Serializable {
&&&&&&&& private I
&&&&&&&& private S
&&&&&&&& private S
……getter和setter方法省略
&&&&&&&& private A
&&&&&&&& @Embedded
&&&&&&&& @AttributeOverrides( {
&&&&&&&&&&&&&&&&&& @AttributeOverride(name = "zip", column = @Column(name = "contact_zip")),
&&&&&&&&&&&&&&&&&& @AttributeOverride(name = "line1", column = @Column(name = "contact_line1")),
&&&&&&&& })
&&&&&&&& public Address getAddress() {
&&&&&&&&&&&&&&&&&&
&&&&&&&& }
&&&&&&&& public void setAddress(Address address) {
&&&&&&&&&&&&&&&&&& this.address =
&&&&&&&& }
}
22o @Column
@Column标记表示所持久化属性所映射表中的字段,该注释的属性定义如下:
@Target({METHOD, FIELD}) @Retention(RUNTIME)
public @interface Column {
String name() default "";
boolean unique()
boolean nullable()
boolean insertable()
boolean updatable()
String columnDefinition() default "";
String table() default "";
int length() default 255;
int precision() default 0;
int scale() default 0;
}
在使用此@Column标记时,需要注意以下几个问题:
l&&&&&&&& 此标记可以标注在getter方法或属性前,例如以下的两种标注方法都是正确的:
标注在属性前:
@Entity
@Table(name = "contact")
public class ContactEO{
@Column(name=" contact_name ")
private S
}
标注在getter方法前:
@Entity
@Table(name = "contact")
public class ContactEO{
@Column(name=" contact_name ")
public String getName() {
&&&&&&&&
}
}
提示:JPA规范中并没有明确指定那种标注方法,只要两种标注方式任选其一都可以。这根据个人的喜好来选择,笔者习惯使用第二种方法。
l&&&&&&&& unique属性表示该字段是否为唯一标识,默认为false。如果表中有一个字段需要唯一标识,则既可以使用该标记,也可以使用@Table标记中的@UniqueConstraint。
l&&&&&&&& nullable属性表示该字段是否可以为null值,默认为true。
l&&&&&&&& insertable属性表示在使用“INSERT”脚本插入数据时,是否需要插入该字段的值。
l&&&&&&&& updatable属性表示在使用“UPDATE”脚本插入数据时,是否需要更新该字段的值。insertable和updatable属性一般多用于只读的属性,例如主键和外键等。这些字段的值通常是自动生成的。
l&&&&&&&& columnDefinition属性表示创建表时,该字段创建的SQL语句,一般用于通过Entity生成表定义时使用。
l&&&&&&&& table属性表示当映射多个表时,指定表的表中的字段。默认值为主表的表名。有关多个表的映射将在本章的5.6小节中详细讲述。
l&&&&&&&& length属性表示字段的长度,当字段的类型为varchar时,该属性才有效,默认为255个字符。
l&&&&&&&& precision属性和scale属性表示精度,当字段类型为double时,precision表示数值的总长度,scale表示小数点所占的位数。
下面举几个小例子:
示例一:指定字段“contact_name”的长度是“512”,并且值不能为null。
private S
@Column(name="contact_name",nullable=false,length=512)
public String getName() {
&&&&&&&&
}
创建的SQL语句如下所示。
CREATE TABLE contact (
id integer not null,
contact_name varchar (512) not null,
primary key (id)
)
示例二:指定字段“monthly_income”月收入的类型为double型,精度为12位,小数点位数为2位。
&&&&&&&& private BigDecimal monthlyI
&&&&&&&& @Column(name="monthly_income",precision=12, scale=2)
&&&&&&&& public BigDecimal getMonthlyIncome() {
&&&&&&&&&&&&&&&&&& return monthlyI
&&&&&&&& }
创建的SQL语句如下所示。
CREATE TABLE contact (
id integer not null,
monthly_income double(12,2),
primary key (id)
)
示例三:自定义生成CLOB类型字段的SQL语句。
private String&
@Column(name=" contact_name ",columnDefinition="clob not null")
public String getName() {
&&&&&&&&&&&&&&&&&
}
生成表的定义SQL语句如下所示。
CREATE TABLE contact (
id integer not null,
contact_name clob (200) not null,
primary key (id)
)
其中,加粗的部分为columnDefinition属性设置的值。若不指定该属性,通常使用默认的类型建表,若此时需要自定义建表的类型时,可在该属性中设置。
提示:通过Entity定义生成表,还是通过表配置Entity,这两种ORM的策略。有关两种方法的映射策略好坏,将在本书的章节中“JPA工具的使用”一章进行详细的比较。
示例四:字段值为只读的,不允许插入和修改。通常用于主键和外键。
&&&&&&&& private I
&&&&&&&
&&&&&&&& @Column(name="id",insertable=false,updatable=false)
&&&&&&&& public Integer getId() {
&&&&&&&&&&&&&&&&&&
&&&&&&&& }
浏览: 865118 次
来自: 珠海
厉害,困扰了我很久
非常好,很实用啊。。
你好,你能把能讓這個程序的運行起來的代碼發我一下嗎?非常著急需 ...
可能配置有问题.
这文章我只是收藏转发而已, 并没有实 ...
我按照你的要求配置了以后
一启动tomcat 就报 No b ...springMVC 注解方式实现全程+文件上传-linux-电脑编程网springMVC 注解方式实现全程+文件上传作者:sundenskyqq 和相关&&
这几天有点忙,总结都没有写。
今天搭建框架基本有了点成效。现在还剩下两个问题:第一、springmvc 上传文件;第二、mongodb上传文件。这两个部分是本次系统的核心部分,而这两个部分却还是零工作状态,心里还是有点小着急。不知道这个项目能不能按期完成,因为时间只剩下十天了(包括周末)。
还是总结一下springmvc的注解框架的实现吧:
Web.xml文件
&?xml version=&1.0& encoding=&utf-8&?&
&web-app xmlns:xsi=&http://www.w3.org/2001/xmlschema-instance&
xmlns=&/xml/ns/javaee&
xmlns:web=&/xml/ns/javaee/web-app_2_5.xsd&
xsi:schemalocation=&/xml/ns/javaee
/xml/ns/javaee/web-app_2_5.xsd& id=&webapp_id& version=&2.5&&
&!-- 配置控制器 --&
&servlet-name&dispatcher&/servlet-name&
&servlet-class&org.springframework.web.servlet.dispatcherservlet&/servlet-class&
&/servlet&
&!-- 配置spring 配置文件
&context-param&
&param-name&contextconfiglocation&/param-name&
&param-value&
classpath:config/applicationcontext-base.xml,
classpath:config/applicationcontext*.xml
&/param-value&
&/context-param&
&!-- 配置控制器映射 --&
&servlet-mapping&
&servlet-name&dispatcher&/servlet-name&
&url-pattern&*.do&/url-pattern&
&/servlet-mapping&
&listener&
&listener-class&org.springframework.web.context.contextloaderlistener&/listener-class&
&/listener&
&/web-app&
dispatcher-servlet.xml(注意:这个xml文件是springmvc的核心配置文件,实际上是一个applicationContext.xml文件,默认为WEB-INF路径下,若有另外的配置,需要在web.xml文件中配置:另外,该xml文件命名规范为web.xml文件中&servlet-name&dispatcher&/servlet-name&配置的名字加上”-servlet.xml”,本例中为dispatcher-servlet.xml)
&servlet&
&servlet-name&dispatcher&/servlet-name&
&servlet-class&org.springframework.web.servlet.dispatcherservlet&/servlet-class&
&init-param&
&param-name&contextconfiglocation&/param-name&
指定xml文件位置
&param-value&/web-inf/classes/springmvc.xml
&param-value&classpath*:springmvc.xml
&!-- 在classpath路径下去寻找springmvc.xml文件 --&
&param-value&classpath:springmvc.xml
&/param-value&
&/init-param&
&/servlet&
dispatcher-servlet.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&
xmlns:mvc=&http://www.springframework.org/schema/mvc&
xsi:schemalocation=&http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-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
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd&
default-autowire=&byname&&
&!-- springmvc相关bean配置 --&
&bean id=&localeresolver& class=&org.springframework.web.servlet.i18n.acceptheaderlocaleresolver&&
&!-- 配置视图 --&
&bean id=&viewresolver& class=&org.springframework.web.servlet.view.internalresourceviewresolver&
p:prefix=&/web-inf/view/& p:suffix=&.jsp&&
&property name=&viewclass&&
&value&org.springframework.web.servlet.view.jstlview&/value&
&/property&
&context:annotation-config /&
&!-- 把标记了@controller注解的类转换为bean --&
&context:component-scan base-package=&test.controller& /&
&!-- 启动spring mvc的注解功能,完成请求和注解pojo的映射 --&
&bean class=&org.springframework.web.servlet.mvc.annotation.annotationmethodhandleradapter& /&
&bean id=&multipartresolver&
class=&org.springframework.monsmultipartresolver&
p:defaultencoding=&utf-8& /&
定义一个jsp页面:
&%@ page language=&java& contenttype=&text/ charset=utf-8&
pageencoding=&utf-8&%&
&!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/ charset=iso-8859-1&&
&title&insert title here&/title&
&/head&
&body&
&form action=&login.do& method=&post&&
&input type=&hidden& name=&method& value=&pagequery&/&
&input type=&hidden& name=&pageno& value=&1&/&
username:&input type=&text& name=&username&/&&br&
password:&input type=&password& name=&password&/&&br&
&input type=&submit& value=&submit&/&
&h1&test file upload&/h1&
&form action=&login.do& method=&post& enctype=&multipart/form-data&&
&input type=&hidden& name=&method& value=&upload&/&
&input type=&file& name=&file&/&
&input type=&submit& value=&upload&/&
&/body&
&/html&
Form表单映射类:Login:
package test.
public class login {
pri //从页面获取的值
pri //从页面获取的值
public string getusername() {
public void setusername(string username) {
this.username =
public string getpassword() {
public void setpassword(string password) {
this.password =
编写Controller:
package test.
import java.io.
import java.io.
import java.text.
import java.util.
import javax.servlet.http.
import javax.servlet.http.
import org.springframework.stereotype.
import org.springframework.ui.
import org.springframework.web.bind.annotation.
import org.springframework.web.bind.annotation.
import org.springframework.web.bind.annotation.
import org.springframework.web.multipart.
import org.springframework.web.multipart.multipa
import test.entity.
import com.zhjy.core.util.
@controller
@requestmapping(&/login.do&)
public class copyoftestcontroller {
@requestmapping
public string login(httpservletrequest request, httpservletresponse response, login login) {
system.out.println(request.getparameter(&username&));
system.out.println(login.getusername());
return &success&;
* 参数注入测试 @requestparam(&pageno&) int pageno
* 页面请求需要带参数pageno
* @param pageno
* @param request
* @param model
* @throws exception
@requestmapping(params = &method=pagequery&)
public string pagequery(@requestparam(&pageno&) int pageno,
httpservletrequest request,modelmap model) throws exception{
system.out.println(pageno);
string putmodel=&test put model string&;
model.put(&model&, putmodel);
return &/test/success&;//页面跳转到web-inf/view/test/success.jsp页面
//注释:web-inf/view是配置文件中的前缀,.jsp 是配置文件中的后缀
//&bean id=&viewresolver& //class=&org.springframework.web.servlet.view.internalresourceviewresolver&
//
p:prefix=&/web-inf/view/& p:suffix=&.jsp&&
* 不同请求方式post get
* @param login
* @param request
* @param response
* @param model
@requestmapping(method=requestmethod.post, params = &method=save&)
public string login(login login, httpservletrequest request,
httpservletresponse response, modelmap model) {
system.out.println(request.getparameter(&username&));
system.out.println(login.getusername());
model.addattribute(&user&, &user&);
this.getoracleservice().test();
return &/test/success&;
* 上传文件测试
* @param request
* @param model
@requestmapping(method=requestmethod.post, params = &method=upload&)
public string upload(httpservletrequest request,modelmap model) {
multiparthttpservletrequest multipartrequest = (multiparthttpservletrequest)
simpledateformat dateformat = new simpledateformat(&yyyy/mm/dd/hh&);
/**构建图片保存的目录**/
string logopathdir = &/files&+ dateformat.format(new date());
/**得到图片保存目录的真实路径**/
string logorealpathdir = request.getsession().getservletcontext().getrealpath(logopathdir);
/**根据真实路径创建目录**/
file logosavefile = new file(logorealpathdir);
if(!logosavefile.exists())
logosavefile.mkdirs();
/**页面控件的文件流**/
multipartfile multipartfile = multipartrequest.getfile(&file&);
/**获取文件的后缀**/
string suffix = multipartfile.getoriginalfilename().substring
(multipartfile.getoriginalfilename().lastindexof(&.&));
/**使用uuid生成文件名称**/
string logimagename = uuid.randomuuid().tostring()+//构建文件名称
string logimagename = multipartfile.getoriginalfilename();
/**拼成完整的文件保存路径加文件**/
string filename = logorealpathdir + file.separator
file file = new file(filename);
multipartfile.transferto(file);
} catch (illegalstateexception e) {
e.printstacktrace();
} catch (ioexception e) {
e.printstacktrace();
model.put(&filename&, filename);
return &/test/success&;
在WEB-INF/view/test下建立success.jsp页面:
&%@ page language=&java& contenttype=&text/ charset=iso-8859-1&
pageencoding=&iso-8859-1&%&
&!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/ charset=iso-8859-1&&
&title&login success&/title&
&/head&
&body&
&hr&
&h1&view/test/success.jsp&/h1&
&h1&login success&/h1&
success&br/&
username:${username }&br/&
success&br/&
login.username :${login.username }&br/&
success&br/&
user:${user }&br/&
&hr&
&h1&test file upload&/h1&
filename:${filename }
&/body&
&/html&
&
相关资料:|||||||springMVC 注解方式实现全程+文件上传来源网络,如有侵权请告知,即处理!编程Tags:                &                    

我要回帖

更多关于 王牌保镖 的文章

 

随机推荐