项目管理javaWEB模块物流项目二Word文档格式.docx
- 文档编号:16450595
- 上传时间:2022-11-23
- 格式:DOCX
- 页数:15
- 大小:20.42KB
项目管理javaWEB模块物流项目二Word文档格式.docx
《项目管理javaWEB模块物流项目二Word文档格式.docx》由会员分享,可在线阅读,更多相关《项目管理javaWEB模块物流项目二Word文档格式.docx(15页珍藏版)》请在冰豆网上搜索。
property-placeholderlocation="
classpath:
jdbc.properties"
/>
beanid="
dataSource"
class="
com.mchange.v2.c3p0.ComboPooledDataSource"
>
!
--配置连接数据库参数c3p0连接池-->
propertyname="
driverClass"
value="
${jdbc.driverClass}"
/property>
jdbcUrl"
${jdbc.url}"
user"
${jdbc.username}"
password"
${jdbc.password}"
/bean>
--连接池给sessionFactory注解版本-->
sessionFactory"
org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"
ref="
--配置其他hibernate信息-->
hibernateProperties"
props>
propkey="
hibernate.show_sql"
true<
/prop>
hibernate.format_sql"
hibernate.hbm2ddl.auto"
validate<
--<
update<
-->
hibernate.dialect"
${jdbc.dialect}<
/props>
packagesToScan"
list>
value>
cn.itcast.mavenbos.domain<
/value>
/list>
oraclevalidate校验报错:
数据库表字段类型numeric(10,2)---->
实体类BigDecimal类型.
需要导入:
hibernate-entity.jarspring-data.jpa依赖的jar
dependency>
groupId>
org.hibernate<
/groupId>
artifactId>
hibernate-entitymanager<
/artifactId>
version>
${hibernate.version}<
/version>
/dependency>
配置Springdata学习
引入spring-data.jar+依赖包
参阅文档
45页
spring主配置文件(以前:
学习hibernate需要连接池--->
SessionFactory)
现在springdata不用sessionFactory+注解支持需要配置springdata名称空间
缺少jpa名称空间参照background章节找到quickstart
applicationContext.xml引入名称空间
beansxmlns="
http:
//www.springframework.org/schema/beans"
xmlns:
xsi="
//www.w3.org/2001/XMLSchema-instance"
context="
//www.springframework.org/schema/context"
aop="
//www.springframework.org/schema/aop"
jpa="
//www.springframework.org/schema/data/jpa"
tx="
//www.springframework.org/schema/tx"
xsi:
schemaLocation="
//www.springframework.org/schema/beans
//www.springframework.org/schema/beans/spring-beans.xsd
//www.springframework.org/schema/context
//www.springframework.org/schema/context/spring-context.xsd
//www.springframework.org/schema/aop
//www.springframework.org/schema/aop/spring-aop.xsd
//www.springframework.org/schema/tx
//www.springframework.org/schema/tx/spring-tx.xsd
//www.springframework.org/schema/data/jpa
//www.springframework.org/schema/data/jpa/spring-jpa.xsd"
配置连接池
--使用Springdata-->
配置EntityManagerFactory参照文档==sessionFactory
entityManagerFactory"
org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"
cn.itcast.bos.domain"
jpaVendorAdapter"
beanclass="
org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter"
database"
ORACLE"
--自动建表-->
generateDdl"
true"
--方言-->
databasePlatform"
org.hibernate.dialect.Oracle10gDialect"
--显示sql-->
showSql"
配置:
注解包扫描是pring注解扫描以及springdata支持dao扫描
--依赖注入扫描spring注解-->
componen-scanbase-package="
cn.itcast.bos.service,cn.itcast.bos.web"
--扫描springdata继承dao接口-->
jpa:
repositoriesbase-package="
cn.itcast.bos.dao"
/jpa:
repositories>
配置事务
--注解事务管理器-->
transactionManager"
org.springframework.orm.jpa.JpaTransactionManager"
tx:
annotation-driventransaction-manager="
测试:
配置完成启动tomcat
导入jar
UserDao设计
Reposistory接口最大接口!
根据目录继承树结构--->
F4开发中XxxxDaoextendsJpaRepostory<
User/Staff,String/Integer>
即可
springdata提供一套接口以及实现类编写UserDao继承指定接口即可完成crud
userDao完成!
专门针对dao测试!
UserService设计
设计简单业务方法
注解完成业务层实现
测试业务层:
UserDao扫描
需要配置事务管理器采用springdata提供事务管理器
开启spring注解扫描
JPQL查询说明
根据方法名称自动生成jpql语句
参照文档
案例1测试业务层+junit
业务层调用userDao:
userDao业务方法必须符合命名规范
s
命名查询推荐注解name查询要求:
类名.方法名springdata自动扫描实体类找寻注解@NamedQuery(name="
xxx"
)
案例2:
要求使用@NamedQuery注解在目标查询实体类上声明
实体类添加注解springdata自动搜索类名.方法名称找寻对应HQL语句
junit
3:
@Query注解的查询dao方法名称可以自定义
注解中编写JPQL语句==HQL
案例三演示
4:
@Query注解完成本地sql查询需要添加nativeQuery=true告知springdata书写语句本地sql
5:
参数注入查询@Param注解指定参数类似HQL占位符@Param("
lastname'
)自动将参数值赋予:
lastname
springdatajpa查询结束!
webaction抽取
通用Action模板
封装通用性代码BaseAction
packagecn.itcast.mavenbos.web.action.base;
importjava.lang.reflect.ParameterizedType;
importjava.lang.reflect.Type;
importorg.apache.struts2.ServletActionContext;
importorg.springframework.beans.factory.annotation.Autowired;
importcn.itcast.mavenbos.service.user.UserService;
importcom.opensymphony.xwork2.ActionContext;
importcom.opensymphony.xwork2.ActionSupport;
importcom.opensymphony.xwork2.ModelDriven;
importcom.opensymphony.xwork2.util.ValueStack;
//复用Action代码
publicabstractclassBaseAction<
T>
extendsActionSupportimplementsModelDriven<
{
//各种业务层对象
@Autowired
privateUserServiceuserService;
//@Autowired
//privateUserServiceuserService;
protectedTmodel;
//各个action封装对象model
publicTgetModel(){
returnmodel;
}
//后续子类XxxxAction请求参数封装model里面
publicBaseAction(){
//对model进行实例化,通过子类类声明的泛型
Typesuperclass=this.getClass().getGenericSuperclass();
//转化为参数化类型
ParameterizedTypeparameterizedType=(ParameterizedType)superclass;
//获取一个泛型参数
Class<
modelClass=(Class<
)parameterizedType.getActualTypeArguments()[0];
try{
model=modelClass.newInstance();
}catch(InstantiationExceptione){
e.printStackTrace();
}catch(IllegalAccessExceptione){
//获取请求参数
publicStringgetParameter(Stringname){
returnServletActionContext.getRequest().getParameter(name);
//获取SessionAttribute
publicObjectgetSessionAttribute(Stringname){
returnServletActionContext.getRequest().getSession().getAttribute(name);
//向session保存属性
publicvoidsetSessionAttribute(Stringname,Objectvalue){
ServletActionContext.getRequest().getSession().setAttribute(name,value);
//值栈对象的获取
publicValueStackgetStack(){
returnActionContext.getContext().getValueStack();
//压入数据到值栈
publicvoidpush(Objectobj){
getStack().push(obj);
publicvoidset(Stringkey,Objectvalue){
getStack().set(key,value);
//分页请求属性驱动
protectedintpage;
//页码
protectedintrows;
//每页记录数
publicvoidsetPage(intpage){
this.page=page;
publicvoidsetRows(introws){
this.rows=rows;
注入各种业务层接口
login.jsp页面设计
登陆按钮--->
a>
同步请求不能提交表单
将<
标签超链接变成js点击事件--->
函数方法--->
提交表单
编写jsgo方法实现提交表单
form表单的设计
验证码ajax校验
js完成!
scripttype="
text/javascript"
varcheckcode_flag=false;
//页面加载完成进行验证码校验....离焦事件
$(function(){
$("
input[name='
checkcode'
]"
).blur(function(){
//发送ajax请求
$.post("
${pageContext.request.contextPath}/user/userAction_validCheckCode"
{"
checkcode"
:
this.value},function(data){
if(data){
//true验证码正确可以提交表单用户提示
#checkcode_sp"
).html("
fontcolor='
green'
√<
/font>
"
);
checkcode_flag=true;
}else{
//false验证码错误不可以提交表单用户提示
red'
×
checkcode_flag=false;
});
//表单的提交
functiongo(){
//提交表单
if(checkcode_flag){
#loginform"
).submit();
/script>
action校验方法从session获取验证码json返回true/false
ok
login.jsp表单action地址
login业务方法编写
login.jspaction
login业务方法
//登陆业务方法
//登陆业务
@Action(value="
userAction_login"
results={@Result(name="
login_ok"
type="
redirect"
location="
/index.jsp"
),@Result(name="
login_error"
/login.jsp"
)})
publicStringlogin(){
Stringsession_code=(String)getSessionAttribute("
key"
Stringinput_code=getParameter("
if(StringUtils.isNotBlank(input_code)){
if(input_code.equalsIgnoreCase(session_code)){
UserexistUser=userService.findUserByNameAndPassword(model.getUsername(),model.getPassword());
if(existUser==null){
this.addActionError(this.getText("
login.usernameorpassword.error"
));
return"
;
//用户存放Session验证码移除
removeSessionAttribute("
setSessionAttribute("
existUser"
existUser);
//验证码错误..绕过ajax校验
//thrownewRuntimeException("
数据非法..."
login.illegal.error"
//用户没有输入验证码
配置国际化相关信息
login.jsp回显错误信息
登陆请求表单参数校验(登陆参数校验)
UserAction同包下新建局部xml校验文件
编写校验器规则
?
xmlversion="
1.0"
encoding="
UTF-8"
DOCTYPEvalidatorsPUBLIC
-//ApacheStruts//XWorkValidator1.0.3//EN"
//struts.apache.org/dtds/xwork-validator-1.0.3.dtd"
va
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 项目 管理 javaWEB 模块 物流